Environment
OS: Ubuntu 22.04
Camera: OAK-4-D-FF (RVC4)
ROS 2: Kilted
Driver: depthai-ros (Docker image)
Connection: PoE
Launch method: Docker + ros2 launch
Description of the problem
I am using depthai-ros (ROS 2 Kilted) inside Docker on Ubuntu 22.04 with an OAK-4-D-FF (RVC4) camera.
I am facing an issue where the i_device_id parameter does not seem to work at all, even when only a single camera is connected.
Observed behavior
If I do NOT specify i_device_id in the YAML file (commented out):
The driver prints:
$$
bicpal@bicpal-POC-500:~$ docker run -it --rm \
-v /dev:/dev \
--network host \
--privileged \
-e DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /home/bicpal/depthai-ros/depthai_ros_driver/config:/ws/install/share/depthai_ros_driver/config \
-v /home/bicpal/depthai-ros/depthai_ros_driver/launch:/ws/install/share/depthai_ros_driver/launch:ro \
depthai-ros ros2 launch depthai_ros_driver driver.launch.py
[INFO] [oak]: No ip/ID specified, connecting to the next available device.
[INFO] [oak]: Driver with ID: 3283179651 and Name: 169.254.215.193 connected!
[INFO] [oak]: Device type: OAK4-D
[INFO] [oak]: Creating pipeline for device: OAK4-D
[INFO] [oak]: Pipeline type: RGBD
[INFO] [oak]: Finished setting up pipeline.
[INFO] [oak]: Published URDF
[WARN] [oak]: IMU extrinsics are not set. Publishing IMU frame with zero translation and RDF orientation.
[INFO] [oak]: Driver ready!
$$
The camera connects successfully and works as expected.
If I explicitly specify i_device_id (even with the correct ID):
$$
/**:
ros__parameters:
driver:
i_device_id: "3283179651"
i_enable_ir: true
pipeline_gen:
i_pipeline_type: RGBD
$$
The camera never connects
The driver keeps retrying:
$$
bicpal@bicpal-POC-500:~$ docker run -it --rm -v /dev:/dev --network host --privileged -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/bicpal/depthai-ros/depthai_ros_driver/config:/ws/install/share/depthai_ros_driver/config -v /home/bicpal/depthai-ros/depthai_ros_driver/launch:/ws/install/share/depthai_ros_driver/launch:ro depthai-ros ros2 launch depthai_ros_driver driver.launch.py
[INFO] [launch]: All log files can be found below /root/.ros/log/2026-02-04-05-16-52-381273-bicpal-POC-500-1
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [component_container-1]: process started with pid [67]
[component_container-1] [INFO] [1770182212.974555306] [oak_container]: Load Library: /opt/ros/kilted/lib/librobot_state_publisher_node.so
[component_container-1] [INFO] [1770182212.980516777] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<robot_state_publisher::RobotStatePublisher>
[component_container-1] [INFO] [1770182212.980564338] [oak_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<robot_state_publisher::RobotStatePublisher>
[component_container-1] [INFO] [1770182212.989413600] [oak_state_publisher]: Robot initialized
[INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/oak_state_publisher' in container '/oak_container'
[component_container-1] [INFO] [1770182213.061575010] [oak_container]: Load Library: /ws/install/lib/libdepthai_ros_driver.so
[component_container-1] [INFO] [1770182213.242140602] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depthai_ros_driver:😃river>
[component_container-1] [INFO] [1770182213.242220756] [oak_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<depthai_ros_driver:😃river>
[INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/oak' in container '/oak_container'
[component_container-1] [INFO] [1770182214.246363339] [oak]: Starting driver.
[component_container-1] [INFO] [1770182214.774574039] [oak]: Connecting to the device using ID: 3283179651
[component_container-1] [INFO] [1770182215.770486129] [oak]: Connecting to the device using ID: 3283179651
[component_container-1] [INFO] [1770182216.770468490] [oak]: Connecting to the device using ID: 3283179651
[component_container-1] [INFO] [1770182217.770472525] [oak]: Connecting to the device using ID: 3283179651
[component_container-1] [INFO] [1770182218.762470908] [oak]: Connecting to the device using ID: 3283179651
[component_container-1] [INFO] [1770182219.758472643] [oak]: Connecting to the device using ID: 3283179651
[component_container-1] [INFO] [1770182220.762479966] [oak]: Connecting to the device using ID: 3283179651
C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[component_container-1] [INFO] [1770182221.439044397] [rclcpp]: signal_handler(SIGINT/SIGTERM)
[ERROR] [component_container-1]: process has died [pid 67, exit code -6, cmd '/opt/ros/kilted/lib/rclcpp_components/component_container --ros-args --log-level info --ros-args -r __node:=oak_container -r __ns:=/'].
[component_container-1] [INFO] [1770182221.766497292] [oak]: Connecting to the device using ID: 3283179651
[component_container-1] terminate called after throwing an instance of 'std::runtime_error'
[component_container-1] what(): context cannot be slept with because it's invalid
$$
This happens even when only one camera is physically connected.
Verification: device ID and IP are correct
From oakctl list:
$$
Found device '169.254.215.193'
DeviceID: '3283179651'
Product name: OAK4-D-FF
$$
From depthai-core Python example (device_info.py):
$$
Found device '169.254.215.193', DeviceID: '3283179651'
Available camera sensors: IMX586, OV9282
Product name: OAK4-D-FF, board name NG9498-ASM
$$
So the device ID and IP are definitely correct.
Single camera launch (WORKS without i_device_id)
Command:
$$
docker run -it --rm \
-v /dev:/dev \
--network host \
--privileged \
-e DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/depthai-ros/depthai_ros_driver/config:/ws/install/share/depthai_ros_driver/config \
-v ~/depthai-ros/depthai_ros_driver/launch:/ws/install/share/depthai_ros_driver/launch:ro \
depthai-ros \
ros2 launch depthai_ros_driver driver.launch.py
$$
Log excerpt:
$$
[oak]: No ip/ID specified, connecting to the next available device.
[oak]: Driver with ID: 3283179651 and Name: 169.254.215.193 connected!
[oak]: Device type: OAK4-D
[oak]: Pipeline type: RGBD
[oak]: Driver ready!
$$
Single camera launch (FAILS with i_device_id)
YAML:
$$
/**:
ros__parameters:
i_device_id: "3283179651"
pipeline_gen:
i_pipeline_type: RGBD
$$
Log excerpt:
$$
[oak]: Starting driver.
[oak]: Connecting to the device using ID: 3283179651
[oak]: Connecting to the device using ID: 3283179651
[oak]: Connecting to the device using ID: 3283179651
$$
It never reaches connected!.
Multicam context (why I need i_device_id)
The reason I need i_device_id is multicam usage.
When two cameras are connected and I run a multicam launch file, the second driver instance tries to:
Reconnect to the already-used camera
Then crashes with:
$$
bicpal@bicpal-POC-500:~$ docker run -it --rm -v /dev:/dev --network host --privileged -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /home/bicpal/depthai-ros/depthai_ros_driver/config:/ws/install/share/depthai_ros_driver/config -v /home/bicpal/depthai-ros/depthai_ros_driver/launch:/ws/install/share/depthai_ros_driver/launch:ro depthai-ros ros2 launch depthai_ros_driver example_multicam.launch.py
[INFO] [launch]: All log files can be found below /root/.ros/log/2026-02-04-05-00-55-111296-bicpal-POC-500-1
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [component_container-1]: process started with pid [67]
[INFO] [component_container-1]: [1770181255.779540041] [oak_4_d_1_container]: Load Library: /ws/install/lib/libdepthai_ros_driver.so
[INFO] [component_container-1]: [1770181255.914124238] [oak_4_d_1_container]: Found class: rclcpp_components::NodeFactoryTemplate<depthai_ros_driver:😃river>
[INFO] [component_container-1]: [1770181255.914196637] [oak_4_d_1_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<depthai_ros_driver:😃river>
[INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/oak_4_d_1' in container '/oak_4_d_1_container'
[INFO] [component_container-1]: [1770181255.936970972] [oak_4_d_1_container]: Load Library: /opt/ros/kilted/lib/librobot_state_publisher_node.so
[INFO] [component_container-1]: [1770181255.939018158] [oak_4_d_1_container]: Found class: rclcpp_components::NodeFactoryTemplate<robot_state_publisher::RobotStatePublisher>
[INFO] [component_container-1]: [1770181255.939068572] [oak_4_d_1_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<robot_state_publisher::RobotStatePublisher>
[INFO] [component_container-1]: [1770181255.950193113] [oak_4_d_1_state_publisher]: Robot initialized
[INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/oak_4_d_1_state_publisher' in container '/oak_4_d_1_container'
[INFO] [component_container-1]: [1770181256.919490727] [oak_4_d_1]: Starting driver.
[INFO] [component_container-1]: [1770181256.920380169] [oak_4_d_1]: No ip/ID specified, connecting to the next available device.
[INFO] [component_container-1]: [1770181257.923314006] [oak_4_d_1]: Driver with ID: 3283179651 and Name: 169.254.215.193 connected!
[INFO] [component_container-1]: [1770181257.923401115] [oak_4_d_1]: PoE device detected. Consider enabling low bandwidth for specific image topics (see Readme->DepthAI ROS Driver->Specific device configurations).
[INFO] [component_container-1]: [1770181258.027396493] [oak_4_d_1]: Device type: OAK4-D
[INFO] [component_container-1]: [1770181258.436334196] [oak_4_d_1]: Creating pipeline for device: OAK4-D
[INFO] [component_container-1]: [1770181258.436692483] [oak_4_d_1]: Pipeline type: RGBD
[INFO] [component_container-1]: [1770181262.826839224] [oak_4_d_1]: Finished setting up pipeline.
[INFO] [component_container-1]: [1770181263.099952988] [oak_4_d_1]: Published URDF
[WARN] [component_container-1]: [1770181263.100291213] [oak_4_d_1]: IMU extrinsics are not set. Publishing IMU frame with zero translation and RDF orientation.
[WARN] [component_container-1]: [1770181263.613750428] [oak_4_d_1]: If you detect any issues with Kilted release, please report issues to GH: luxonis/depthai-ros719
[INFO] [component_container-1]: [1770181263.620860594] [oak_4_d_1]: Driver ready!
[INFO] [component_container-1]: [1770181263.638879992] [oak_4_d_1_state_publisher]: Robot initialized
[INFO] [component_container-2]: process started with pid [120]
[INFO] [component_container-2]: [1770181275.951245103] [oak_4_d_2_container]: Load Library: /opt/ros/kilted/lib/librobot_state_publisher_node.so
[INFO] [component_container-2]: [1770181275.958846702] [oak_4_d_2_container]: Found class: rclcpp_components::NodeFactoryTemplate<robot_state_publisher::RobotStatePublisher>
[INFO] [component_container-2]: [1770181275.958902306] [oak_4_d_2_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<robot_state_publisher::RobotStatePublisher>
[INFO] [component_container-2]: [1770181275.972613902] [oak_4_d_2_state_publisher]: Robot initialized
[INFO] [component_container-2]: [1770181275.975455968] [oak_4_d_2_container]: Load Library: /ws/install/lib/libdepthai_ros_driver.so
[INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/oak_4_d_2_state_publisher' in container '/oak_4_d_2_container'
[INFO] [component_container-2]: [1770181276.109642322] [oak_4_d_2_container]: Found class: rclcpp_components::NodeFactoryTemplate<depthai_ros_driver:😃river>
[INFO] [component_container-2]: [1770181276.109722206] [oak_4_d_2_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<depthai_ros_driver:😃river>
[INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/oak_4_d_2' in container '/oak_4_d_2_container'
[INFO] [component_container-2]: [1770181277.115799446] [oak_4_d_2]: Starting driver.
[INFO] [component_container-2]: [1770181277.117639533] [oak_4_d_2]: No ip/ID specified, connecting to the next available device.
[component_container-2] terminate called after throwing an instance of 'std::invalid_argument'
[component_container-2] what(): Device is already used by another application/process. Make sure to close all applications/processes using the device before starting a new one.
[ERROR] [component_container-2]: process has died [pid 120, exit code -6, cmd '/opt/ros/kilted/lib/rclcpp_components/component_container --ros-args --log-level info --ros-args -r __node:=oak_4_d_2_container -r __ns:=/'].
$$
So I need explicit device binding per node, but i_device_id does not seem to work at all on RVC4.
Questions
Is i_device_id supposed to work on RVC4 devices (OAK-4-D-FF) with depthai-ros?
- Is this parameter officially supported on RVC4 / PoE devices?
- Is there any known limitation or change compared to RVC3?
Is the YAML structure correct for multicam usage?
Any clarification or guidance would be greatly appreciated.
Thank you!