Skip to content

Astra Stereo S U3 multi-camera: RGB is opened from the other physical camera via LibUVC while depth/IR bind to the selected OpenNI device #187

Description

System Environment

  • Hardware Info
    • CPU architecture: x86_64
    • CPU model: Intel(R) Core(TM) i7-10710U CPU @ 1.10GHz
    • Memory size: 31Gi
    • GPU model: Intel Corporation Comet Lake UHD Graphics (integrated GPU)
  • Ubuntu Version: Ubuntu 22.04.5 LTS
  • ROS Version: ROS 2 humble
  • Camera Model: Astra Stereo S U3 x 2
  • Firmware Version: RD3013
  • Branch: main
  • Commit: c780bc11

Description

I am using two Astra Stereo S U3 cameras simultaneously with OrbbecSDK_ROS2 on the main branch.

I launch two camera nodes with different USB ports:

  • camera_01 -> ### ### 2-4.2

  • camera_02 -> 2-2.2

Expected behavior

Each node should publish RGB, depth, and IR from the same physical camera.

Actual behavior

The depth/IR stream appears to come from the correctly selected OpenNI device, but the RGB stream is opened from the other physical camera through LibUVC. As a result, RGB and depth/IR come from different physical cameras.

Observed result from visual inspection

  • camera_01 publishes RGB from one physical camera, but depth/IR from the other
  • camera_02 publishes RGB from the other physical camera, but depth/IR from the first

Additional symptom

Depth frame corruption was also observed during dual-camera operation.

Additional version info observed in the debug log

  • Wrapper version: 1.5.15
  • SDK version: 1.10.35

Relevant log excerpt

[INFO] [launch]: All log files can be found below [LOG_DIR]

[component_container-1] [INFO] [[TS]] [camera_01.camera_container]: Load Library: /home/[USER]/ros2_orbbec_openni/install/orbbec_camera/lib/liborbbec_camera.so
[component_container-2] [INFO] [[TS]] [camera_02.camera_container]: Load Library: /home/[USER]/ros2_orbbec_openni/install/orbbec_camera/lib/liborbbec_camera.so

[camera_01] Connecting to device with usb port: 2-4.2
[camera_01] Before lock: Select device usb port: 2-4.2
[camera_01] After lock: Select device usb port: 2-4.2
[OpenNI] Sensor serial number: <SN_A>
[OpenNI] OpenNI device created! PID: 0x0614, SN: <SN_A>
[camera_01] Uvc backend have been set to LibUVC(1)
[camera_01] UVC device have been create with LibUVC backend! dev: 1-2.1-6, inf: 1-2.1-6.0

[camera_02] Connecting to device with usb port: 2-2.2
[camera_02] Before lock: Select device usb port: 2-2.2
[camera_02] After lock: Select device usb port: 2-2.2
[OpenNI] Sensor serial number: <SN_B>
[OpenNI] OpenNI device created! PID: 0x0614, SN: <SN_B>
[camera_02] UVC device have been create with LibUVC backend! dev: 1-4.1-8, inf: 1-4.1-8.0

[camera_01] Depth: Expected 1, got 1051
[camera_01] Depth frame is corrupt!
[camera_02] Depth: Expected 1, got 1049
[camera_02] Depth frame is corrupt!

Notes

  • The issue reproduces consistently in a clean source-built workspace on the main branch.
  • I can provide full logs and additional diagnostic information if needed.
  • The log excerpt above was trimmed for public posting, and some environment-specific details were masked to avoid disclosing local environment information.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions