I am currently developing a ROS driver for the OAK-FFC-4P camera from scratch. However, I'm facing some synchronization issues with the four OV9782 cameras. To synchronize all the cameras, I've chosen CAM C to give the GPIO high pulse, but CAM A is not triggered while CAM D is triggered. When I modified my code to let both CAM A and CAM C give the sychronize signal, all four cameras provide video streams normally. However, this has introduced a latency of 300ms, which is unacceptable for VIO. I've checked the camera connections and soldered the FFC FSYN test point to the camera modules FSYN.
I tried offfical ros driver, the package built form source code can not run normally because some nodelet issuses, so the only solution is to install binary package and modify camera.yaml file. The defualt configuration only allow CAM B to stream rgb image while others cameras only provide mono image, and I donnot know whether official pakcage sychronized all cameras or not. If there is solution to modify the camera.yaml directly to enable all four cameras provide low lentency and sychronized rgb image stream at 20-25fps

my code is in https://github.com/Peize-Liu/oak-ffc-4p-ros


  • erik replied to this.

    erik Hi , I set the GPIO by using code

    dai::Device::Config pipeline_config = this->pipeline_->getDeviceConfig();
    pipeline_config.board.gpio[6] = dai::BoardConfig::GPIO(dai::BoardConfig::GPIO::Direction::OUTPUT,dai::BoardConfig::GPIO::Level::HIGH);

    I think it should be working, since one of the camera in CAM A and CAM D is driven by the trigger? I changed the ffc cable between CAM A and CAM D, the problem is the same, it should not be the hardware issus?

      3 months later

      PeizeLiu Hi, have you ever solved this issue? I am facing the same issue. Look forward to your sharing!

        ZKHuang Yes, I have already solved this problem by developing my own driver based on depthai api in c++, i publish code on my github: oakffc4pros, for ros app you can build the docker image from docker file and run directly. I also published the docker image on docker hub dockerhub ffc 4p, since there are some issue in compile process in depthai-core.

          PeizeLiu Thanks a lot for your helpful and detailed reply! I will try it out later.

          Hello Liu, I have used your driver to test my oak-ffc-4p, but there are only camera A, D can show the image in RGB on screen. And there was no ROS topic echoed in /oak_ffc_4p/image_CAM_A,B,C,D. I can't record the rosbag to test the synchronism of 4 cameras. Have you ever meet this problem before? I'm looking forward to your reply!

          PeizeLiu

            FYSun Can you add an issue on github, i will reply here, to get camera ABCD you have to use calibration_mode, config it in launch file, if only A and D are detected please check your cameras's FSYNC singal wire first and may have to relaunch for serveral times

              PeizeLiu Thanks for your reply. I have tried it, but it didn't make sense. We have the same welding method with you. And we also tested 4 cameras by a python program, it's synchronous. It's really confused. I think it's the problem with the ROS interface 🙁

              PeizeLiu Hi, I tried out your code but ros could not received images from the four cameras. Then I just interconnected the FSIN pins from all the cameras together, like in the picture below. In this case, there is no need to pull GPIO 6 to be high. And I successfully synchronized all the cameras with the offfical ros driver.

                ZKHuang Actually, you need to connect all FSYN pin to make the code run normally 🙂 . Because all cams need the pulse generated by CAM A. Sorry for not mentioning hardware connection in github