Skip to main content
Version: V2.0.7.x

8.10 Depth Camera


Starting the Orbbec Camera – ROS 2

Orbbec cameras are started by systemd services on the Orin board to which they are connected. Do not start these camera services on the x86 computer.

  • Orin1 (192.168.41.2): Start the head, waist, and back depth cameras.
    sudo systemctl start orbbec_head.service
    sudo systemctl start orbbec_waist.service
    sudo systemctl start orbbec_back.service
warning

Avoid subscribing to camera data from the x86 system whenever possible, as this can consume a large amount of bandwidth. In severe cases, it may affect ROS 2 communication and cause the robot to lose control.

Check topics

After startup, run ros2 node list to check the nodes, run ros2 node info to check informations of the nodes.

By default, the following Topics are published:

# head camera
/ob_camera_head/color/camera_info: sensor_msgs/msg/CameraInfo
/ob_camera_head/color/image_raw: sensor_msgs/msg/Image
/ob_camera_head/color/image_raw/compressed: sensor_msgs/msg/CompressedImage
/ob_camera_head/color/image_raw/theora: theora_image_transport/msg/Packet
/ob_camera_head/color/metadata: orbbec_camera_msgs/msg/Metadata
/ob_camera_head/depth/camera_info: sensor_msgs/msg/CameraInfo
/ob_camera_head/depth/image_raw: sensor_msgs/msg/Image
/ob_camera_head/depth/image_raw/compressedDepth: sensor_msgs/msg/CompressedImage
/ob_camera_head/depth/metadata: orbbec_camera_msgs/msg/Metadata
/ob_camera_head/depth_filter_status: std_msgs/msg/String
/ob_camera_head/device_status: std_msgs/msg/String

# waist camera
/ob_camera_waist/color/camera_info: sensor_msgs/msg/CameraInfo
/ob_camera_waist/color/image_raw: sensor_msgs/msg/Image
/ob_camera_waist/color/metadata: orbbec_camera_msgs/msg/Metadata
/ob_camera_waist/depth/camera_info: sensor_msgs/msg/CameraInfo
/ob_camera_waist/depth/image_raw: sensor_msgs/msg/Image
/ob_camera_waist/depth/metadata: orbbec_camera_msgs/msg/Metadata
/ob_camera_waist/depth_filter_status: std_msgs/msg/String
/ob_camera_waist/device_status: std_msgs/msg/String

# back camera
/ob_camera_back/color/camera_info: sensor_msgs/msg/CameraInfo
/ob_camera_back/color/image_raw: sensor_msgs/msg/Image
/ob_camera_back/color/metadata: orbbec_camera_msgs/msg/Metadata
/ob_camera_back/depth/camera_info: sensor_msgs/msg/CameraInfo
/ob_camera_back/depth/image_raw: sensor_msgs/msg/Image
/ob_camera_back/depth/metadata: orbbec_camera_msgs/msg/Metadata
/ob_camera_back/depth_filter_status: std_msgs/msg/String
/ob_camera_back/device_status: std_msgs/msg/String

By default, the following Services are provided:

/ob_camera_head/ob_camera_head/describe_parameters: rcl_interfaces/srv/DescribeParameters
/ob_camera_head/ob_camera_head/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/ob_camera_head/ob_camera_head/get_parameters: rcl_interfaces/srv/GetParameters
/ob_camera_head/ob_camera_head/list_parameters: rcl_interfaces/srv/ListParameters
/ob_camera_head/ob_camera_head/set_parameters: rcl_interfaces/srv/SetParameters
/ob_camera_head/ob_camera_head/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
/ob_camera_head/get_auto_white_balance: orbbec_camera_msgs/srv/GetInt32
/ob_camera_head/get_color_exposure: orbbec_camera_msgs/srv/GetInt32
/ob_camera_head/get_color_gain: orbbec_camera_msgs/srv/GetInt32
/ob_camera_head/get_depth_exposure: orbbec_camera_msgs/srv/GetInt32
/ob_camera_head/get_depth_gain: orbbec_camera_msgs/srv/GetInt32
/ob_camera_head/get_device_info: orbbec_camera_msgs/srv/GetDeviceInfo
/ob_camera_head/get_ldp_status: orbbec_camera_msgs/srv/GetBool
/ob_camera_head/get_lrm_measure_distance: orbbec_camera_msgs/srv/GetInt32
/ob_camera_head/get_ptp_config: orbbec_camera_msgs/srv/GetPTPConfig
/ob_camera_head/get_sdk_version: orbbec_camera_msgs/srv/GetString
/ob_camera_head/get_streams_enable: orbbec_camera_msgs/srv/GetStreamsEnable
/ob_camera_head/get_user_calib_params: orbbec_camera_msgs/srv/GetString
/ob_camera_head/get_white_balance: orbbec_camera_msgs/srv/GetInt32
/ob_camera_head/read_customer_data: orbbec_camera_msgs/srv/GetString
/ob_camera_head/reboot_device: std_srvs/srv/Empty
/ob_camera_head/save_images: std_srvs/srv/Empty
/ob_camera_head/save_point_cloud: std_srvs/srv/Empty
/ob_camera_head/send_software_trigger: std_srvs/srv/Empty
/ob_camera_head/set_auto_white_balance: std_srvs/srv/SetBool
/ob_camera_head/set_color_ae_roi: orbbec_camera_msgs/srv/SetArrays
/ob_camera_head/set_color_auto_exposure: std_srvs/srv/SetBool
/ob_camera_head/set_color_exposure: orbbec_camera_msgs/srv/SetInt32
/ob_camera_head/set_color_flip: std_srvs/srv/SetBool
/ob_camera_head/set_color_gain: orbbec_camera_msgs/srv/SetInt32
/ob_camera_head/set_color_mirror: std_srvs/srv/SetBool
/ob_camera_head/set_color_rotation: orbbec_camera_msgs/srv/SetInt32
/ob_camera_head/set_depth_ae_roi: orbbec_camera_msgs/srv/SetArrays
/ob_camera_head/set_depth_auto_exposure: std_srvs/srv/SetBool
/ob_camera_head/set_depth_exposure: orbbec_camera_msgs/srv/SetInt32
/ob_camera_head/set_depth_flip: std_srvs/srv/SetBool
/ob_camera_head/set_depth_gain: orbbec_camera_msgs/srv/SetInt32
/ob_camera_head/set_depth_mirror: std_srvs/srv/SetBool
/ob_camera_head/set_depth_rotation: orbbec_camera_msgs/srv/SetInt32
/ob_camera_head/set_fan_work_mode: orbbec_camera_msgs/srv/SetInt32
/ob_camera_head/set_filter: orbbec_camera_msgs/srv/SetFilter
/ob_camera_head/set_floor_enable: std_srvs/srv/SetBool
/ob_camera_head/set_ir_long_exposure: std_srvs/srv/SetBool
/ob_camera_head/set_laser_enable: std_srvs/srv/SetBool
/ob_camera_head/set_ldp_enable: std_srvs/srv/SetBool
/ob_camera_head/set_ptp_config: orbbec_camera_msgs/srv/SetPTPConfig
/ob_camera_head/set_reset_timestamp: std_srvs/srv/SetBool
/ob_camera_head/set_streams_enable: orbbec_camera_msgs/srv/SetStreamsEnable
/ob_camera_head/set_sync_hosttime: std_srvs/srv/SetBool
/ob_camera_head/set_sync_interleaverlaser: orbbec_camera_msgs/srv/SetInt32
/ob_camera_head/set_user_calib_params: orbbec_camera_msgs/srv/SetString
/ob_camera_head/set_white_balance: orbbec_camera_msgs/srv/SetInt32
/ob_camera_head/switch_ir: orbbec_camera_msgs/srv/SetString
/ob_camera_head/toggle_color: std_srvs/srv/SetBool
/ob_camera_head/toggle_depth: std_srvs/srv/SetBool
/ob_camera_head/write_customer_data: orbbec_camera_msgs/srv/SetString

View the camera feed

You can use rviz2 to view the camera’s real-time feed.

warning

Transmitting real-time color camera images consumes a large amount of bandwidth. It is best to use a direct wired (Ethernet) connection; otherwise, severe lag will occur.

Here it is assumed that you have opened the camera on 192.168.41.2.

  1. Use MobaXterm (the free version is sufficient) to connect to 192.168.41.2, and click the X server icon in the upper-right corner of MobaXterm to ensure that the X server is running (make sure the marked area shows “X server is running”).

  2. In the MobaXterm command line, enter the rviz2 command:

  3. In the pop-up RViz window, select the camera topic you want to view:

  4. You can see the camera’s real-time feed in the lower-right corner of the RViz window.

info

You can also use ros2 run rqt_image_view rqt_image_view command to view the images of camera.

Troubleshooting

If the following error appears in the output when starting the camera service:

Failed to initialize device unexpected isp firmware version, please update your camera firmware before streaming data.

And:

  1. The camera service fails to start successfully, no image is visible in rviz2, and although the camera topics can be seen using ros2 topic list, there is actually no data being published.

  2. Without starting the camera service, you can directly connect to the Orin board using MobaXterm and run the OrbbecViewer command (enter OrbbecViewer in the same command line where you would run rviz2) to view the camera. The camera image can be opened and viewed normally.

    There is a notification in the upper-right corner of the OrbbecViewer pop-up window: ISP固件需要升级”

In this case, it is likely that the camera firmware version is incorrect.

You can try upgrading to a specific firmware version as follows (taking the Orin board at 192.168.41.2 as an example):

  1. Still open OrbbecViewer as described above, then follow the steps below (note: first operate only up to step 3, after which you need to select the firmware file):

  2. Select the firmware file:

  3. Click the button labeled “4” in the image for Step 1 to start the update. Wait for the update to complete, then try starting the camera service again.