Hi jakaskerl

Thanks for the extensive test with python! But see my description in post #21, for some reason the python MRE is the one with the lowest severity comparing to all the other cases. I can rarely produce a failure with it. Did someone in the team try to reproduce with the c++ code?

Thanks

Lincoln


    Hi lincolnxlw
    Sorry if I've missed the code somewhere, but afaik the cpp code was for ROS only? The is no cpp code that runs standalone like python right? Please correct me if I've missed something.
    The python API are just bindings for cpp so in theory, it should have the same fault occurrence frequency as the cpp examples, unless there is something else going on.

    Thanks,
    Jaka

      Hi jakaskerl

      Sorry I meant the C++ code for ROS I provided above. Have someone from the team try to run them with IMX477 extensively like you do with the python example? I know we are waiting for IMX577 for further testing according to @erik. Just want to make sure so far we can confirm IMX477 do not have issue with all three ROS nodes I provided (all the modules I purchased turned out to be IMX577). If that is the case, for the time being I can request Arducam to ship us IMX477 specifically so we can release our product without further delay (looks like they have same PCB dimension so our existing plastic mount should still work). Does that make sense?

      Thanks

      Lincoln

        Hi jakaskerl,

        Got it. Thanks.

        Hi @DaniloPejovic,

        thanks again for testing the C++ MRE! Like I mentioned earlier in #27, I want to make sure the arguments I passed to docker run look good to you (the OAK-FFC-3P is connected to an Pi4 running precompiled OS OAK_CM4_POE_V10_64bit). what do you think

        docker container run --net=host -it --rm \
            --privileged \
            -e DISPLAY=$DISPLAY \
            -e QT_X11_NO_MITSHM=1 \
            -v /dev/bus/usb:/dev/bus/usb \
            -v /tmp/.X11-unix:/tmp/.X11-unix:rw \
            -v $HOME/.Xauthority:/root/.Xauthority:rw \
            -v $HOME/data/:/data:rw \
            --device /dev/i2c-1 \
            depthai-ros \
            bash

        Thanks

        Lincoln

        Hi @jakaskerl, @DaniloPejovic, @erik, @Luxonis-Adam,

        Sorry for continuously spamming you guys with this issue.

        Try to make everyone's life easier, I built a public docker image (amd64 and arm64) with depthai ros noetic and the MRE. And I created a github repo to launch the MRE with pipeline_graph output with one command. So to reproduce, simply three steps

        • Clone this repo by git clone https://github.com/lincolnxlw/depthai_dual_cam_ros_detector.git.

        • Download my prebuilt docker image by docker pull lincolnxlw/my-depthai-ros.

        • Run the main script in the repo's root folder ./run.sh.

        I also provided details of my testing result in the README. When using IMX577, around 30% failure rate for two different hosts (my laptop and CM4). 0% failure rate when using IMX214.

        @DaniloPejovic, could you reconfirm with the prebuilt docker image that there are no issues with using IMX477? If yes, do you have the model number for the IMX477 you used (should be something like B0346)? I will need to request the exact same model from Arducam and with the Chinese New Year around the corner, I may only have one shot to get a production batch before the New Year.

        Thanks

        Lincoln

          Hi lincolnxlw
          By using your docker image, I was able to reproduce the issue on both IMX577 and IMX477. Tested with ov9782 and AR0234 and had no issues. I was unable to reproduce the issue in python, so I'm assuming the problem lies somewhere in ROS or docker.
          Try running this on non-containerized ROS noetic.

          Thanks,
          Jaka

            Hi jakaskerl,

            Thanks for the confirmation of the issue. The depthai precompiled 64 bit pi OS is in Debian bookworm and ROS noetic is not supported natively. I can try to build it from source but it can be messy. Do you guys have an 64bit pi OS with ROS noetic built-in I can use?

            Our product's software is designed using a container-based architecture, so not using container will involve heavy system redesign. I will test without container for the MRE now of course. But any chance the team look into this ROS and container issue with IMX577/IMX477?

            Thanks and let me know what you think,

            Lincoln

              Hi @lincolnxlw

              lincolnxlw But any chance the team look into this ROS and container issue with IMX577/IMX477?

              Of course, we are just trying to pinpoint the issue to either ROS or Docker so we can solve it.

              Thanks,
              Jaka

                jakaskerl

                Thanks, please keep me posted and let me know what else you need from my end.

                Thanks

                Lincoln

                5 days later

                Hi @lincolnxlw
                I tested the dockerized version of the depthai-core library and the cameras work as expected. Do other pure depthai examples work for you in the ros envirnoment? The code you have sent that was "without ROS" still had includes and ROS functions so I could not run it. Can you run an example that doesn't have any reference to ROS inside the container?
                I feel like this might be a ros specific issue.

                Thanks,
                Jaka

                  Hi jakaskerl

                  I updated the repo with a program running the pipeline with pure depthai c++. Here is the CMakeList.txt detail (no linking to any ROS libraries) for this program. I also rebuilt the docker image, just pull the latest version and use this script to run the pipeline without ROS. And yes the issue still persist (around 1 out of 5 times). Feel free to use the source code and build it in other environment.

                  add_executable(image_publisher_node src/image_publisher.cpp)
                  
                  target_link_libraries(image_publisher_node
                    ${OpenCV_LIBRARIES}
                    depthai::core
                    yaml-cpp
                  )

                  But regardless, our application have downstream tasks that rely on ROS to receive image data and detection results from the depthai pipeline. So ROS is needed for us.

                  Thanks

                  Lincoln