Version

3.1. ROS Package QuickStarts

3.1.1. Introduction

This section provides a quick start to using the Orbbec ROS 2 wrapper. You will learn how to:

  • Launch a camera node.

  • Visualize depth/color streams in RViz2.

  • Interact with topics and services using ROS 2 CLI tools.


3.1.2. Build your First Camera Application

3.1.2.1. Step 1: Source ROS 2 and Workspace

Make sure ROS 2 and your workspace environment are sourced:

source /opt/ros/$ROS_DISTRO/setup.bash

Source code build requirements

source ~/ros2_ws/install/setup.bash

3.1.2.2. Step 2: Launch the Camera Node

  • On terminal 1

. ./install/setup.bash
ros2 run orbbec_camera list_devices_node #Check if the camera is connected
ros2 launch orbbec_camera gemini_330_series.launch.py # Or other launch file, see below table

If you have multiple cameras connected, you can specify the serial number:

ros2 launch orbbec_camera gemini_330_series.launch.py serial_number:=<YourCameraSN>

3.1.2.3. Step 3: Visualize in RViz2

Launch RViz2 and load the default config:

  • On terminal 2

rviz2
  • Add an Image display, set topic to /camera/color/image_raw.

  • Add another Image display for /camera/depth/image_raw.

  • Optionally, add a PointCloud2 display for /camera/depth/points.

You should now see the color stream, depth stream, and 3D point cloud in RViz2.


3.1.3. Sample Features

After the node is running, try some ROS 2 CLI commands:

3.1.3.1. List available topics / services/ parameters

ros2 topic list
ros2 service list
ros2 param list

3.1.3.2. Echo a topic

View depth camera data:

ros2 topic echo /camera/depth/camera_info

3.1.3.3. Call a service

For example, get device Information:

ros2 service call /camera/get_device_info orbbec_camera_msgs/srv/GetDeviceInfo '{}'

3.1.3.4. Record with rosbag2

ros2 bag record /camera/color/image_raw /camera/depth/image_raw

3.1.3.5. Record and play back with SDK bag

SDK bag recording uses the Orbbec SDK to record device data. It is useful when you want to restart the wrapper later with the recording as a playback device. Record when launching:

ros2 launch orbbec_camera gemini_330_series.launch.py bag_record_filename:=/tmp/orbbec_record.bag

You can also start or stop recording while the node is running:

ros2 service call /camera/set_bag_recording orbbec_camera_msgs/srv/SetBagRecording "{enable: true, file_path: '/tmp/orbbec_record.bag'}"
ros2 service call /camera/set_bag_recording orbbec_camera_msgs/srv/SetBagRecording "{enable: false, file_path: ''}"

Play back an SDK bag:

ros2 launch orbbec_camera gemini_330_series.launch.py bag_filename:=/tmp/orbbec_record.bag

Loop playback:

ros2 launch orbbec_camera gemini_330_series.launch.py bag_filename:=/tmp/orbbec_record.bag bag_loop:=true