Hi Oskar,
I have been testing the camera and narrowed it down to a reproducible issue concerning how the underlying ROS files are launched. Covering both stereo cameras do in fact black out the image, but the artifact will remain.
Just to confirm, I have the latest version of depthai_ros_driver_v3 shown in my terminal output below:
nimbus@nimpc0002:~/nimbus_ws/nimbus_v0$ sudo apt install ros-$ROS_DISTRO-depthai-ros-v3
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
ros-humble-depthai-ros-v3 is already the newest version (3.3.0-1jammy.20260625.195557).
0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
To produce and remove the artifact reliably, I do the steps below (Shown in video as well)
* Have three terminals, one to run the minimal stereo depth example https://docs.luxonis.com/software-v3/depthai/examples/stereo_depth/stereo_depth/, another for ROS2 and one more just hosting rqt. rqt should be able to read the image topics from ROS2.
1) Start from the minimal publisher, the depth image has no artifact. Depth image is clean.
2) Turn off python example to release camera and launch the depthai viewer from the launch code provided on github. ros2 launch depthai_ros_driver_v3 driver.launch.py and ros2 run depthai_ros_driver_v3 driver_node both will recreate the problem.
3) Now quickly launch rqt. The depth image will initially fix itself, then revert to a squished view after a period of waiting. The camera raw image data does not change in this case. (I will run one finger across the squished view plane in the video to show that both stereo cameras are responsive.)
4) Turn off the ros2 node for the driver to release camera. Re run the minimal python example. The artifact will return (With varying sizes across tests).
5) To remove the artifact, I will cover the stereo cameras for 5 seconds then let go. The artifact will disappear and the depth image will revert to normal. This fix only works if I am running the minimal python example.
6) Now the artifact is gone and I am back to 1).
There are two ways the feed can be warped (Will attach videos)
1) Squished view where the image will be squished to 2/3rds of the width of the screen
2) Rotated view where the image will be rotated.
Videos:
If it helps I will also paste the ROS2 launch output:
nimbus@nimpc0002:~/nimbus_ws/nimbus_v0$ ros2 launch depthai_ros_driver_v3 driver.launch.py
[INFO] [launch]: All log files can be found below /home/nimbus/.ros/log/2026-06-29-11-36-28-308648-nimpc0002-20493
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [component_container-1]: process started with pid [20515]
[component_container-1] [INFO] [1782729388.825204729] [oak_container]: Load Library: /opt/ros/humble/lib/librobot_state_publisher_node.so
[component_container-1] [INFO] [1782729388.830043694] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<robot_state_publisher::RobotStatePublisher>
[component_container-1] [INFO] [1782729388.830094858] [oak_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<robot_state_publisher::RobotStatePublisher>
[component_container-1] [INFO] [1782729388.859328522] [oak_state_publisher]: got segment oak
[component_container-1] [INFO] [1782729388.859385947] [oak_state_publisher]: got segment oak_model_origin
[component_container-1] [INFO] [1782729388.859391232] [oak_state_publisher]: got segment oak_parent_frame
[component_container-1] [INFO] [1782729388.862329128] [oak_container]: Load Library: /opt/ros/humble/lib/libdepthai_ros_driver_v3.so
[INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/oak_state_publisher' in container '/oak_container'
[component_container-1] [INFO] [1782729388.957858654] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depthai_ros_driver::Driver>
[component_container-1] [INFO] [1782729388.958273351] [oak_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<depthai_ros_driver::Driver>
[INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/oak' in container '/oak_container'
[component_container-1] [INFO] [1782729389.961787976] [oak]: Starting driver.
[component_container-1] [INFO] [1782729389.963261296] [oak]: No ip/ID specified, connecting to the next available device.
[component_container-1] [INFO] [1782729390.969657862] [oak]: Driver with ID: 2836093237 and Name: 192.168.14.50 connected!
[component_container-1] [INFO] [1782729390.969767356] [oak]: PoE device detected. Consider enabling low bandwidth for specific image topics (see Readme->DepthAI ROS Driver->Specific device configurations).
[component_container-1] [INFO] [1782729391.087631829] [oak]: Device type: OAK-4-PRO-W
[component_container-1] [INFO] [1782729391.511517049] [oak]: Creating pipeline for device: OAK-4-PRO-W
[component_container-1] [INFO] [1782729391.511823283] [oak]: Pipeline type: RGBD
[component_container-1] [INFO] [1782729392.524048647] [oak]: Finished setting up pipeline.
[component_container-1] [ERROR] [1782729392.675705181] [oak]: Model name OAK-4-PRO-W not found in depthai_descriptions package. If camera model is autodetected, please notify developers. Using default model: OAK-D-S2
[component_container-1] [INFO] [1782729392.793862672] [oak]: Published URDF
[component_container-1] [WARN] [1782729392.794034650] [oak]: IMU extrinsics are not set. Publishing IMU frame with zero translation and RDF orientation.
[component_container-1] [WARN] [1782729393.036857742] [oak]: If you detect any issues with Kilted release, please report issues to GH: https://github.com/luxonis/depthai-ros/issues/719
[component_container-1] [INFO] [1782729393.048941732] [oak]: Driver ready!
[component_container-1] [INFO] [1782729393.125782649] [oak_state_publisher]: got segment oak
[component_container-1] [INFO] [1782729393.126266446] [oak_state_publisher]: got segment oak_model_origin
[component_container-1] [INFO] [1782729393.126459931] [oak_state_publisher]: got segment oak_parent_frame
[component_container-1] [2836093237] [192.168.14.50] [8798.756] [IMU(5)] [warning] Max sample rate for rotv sensor is: 200 Hz. Configured to max sample rate available.
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[component_container-1] [INFO] [1782729442.992272866] [rclcpp]: signal_handler(SIGINT/SIGTERM)
[INFO] [component_container-1]: process has finished cleanly [pid 20515]
Thanks,
Yee Zhen