8.10 深度相机
启动奥比相机方法-ROS2
- 天工行者·无疆
- 天工行者·无界
-
大模型Orin(192.168.41.2): 启动连接在41.2上的深度相机,也就是头部的深度相机。
cd /home/nvidia/orbbec_camera_ros2
source install/setup.bash
ros2 launch orbbec_camera gemini_330_series.launch.py -
导航Orin(192.168.41.3): 启动连接在41.3上的深度相机,也就是除了头部外其他几个部位的深度相机(具体可启动后自行查看)。
cd /home/nvidia/orbbec_camera_ros2
source install/setup.bash
ros2 launch orbbec_camera slam_330.launch.py
-
Orin(192.168.41.2): 由于只有一块Orin板,所有深度相机都是连接在这块Orin板上。
cd /home/nvidia/orbbec_camera_ros2
source install/setup.bash
ros2 launch orbbec_camera slam_330.launch.py
请谨慎在x86系统订阅相机数据,这会占用大量通信带宽,严重时会影响ros2通信从而导致机器人失控
查看节点
启动后,再使用 ros2 node list 查看节点,可以明显看到多了 /camera/camera 节点,使用 ros2 node info /camera/camera 命令可查看节点信息。
默认发布的话题如下:
/camera/color/camera_info: sensor_msgs/msg/CameraInfo
/camera/color/image_raw: sensor_msgs/msg/Image
/camera/color/metadata: orbbec_camera_msgs/msg/Metadata
/camera/depth/camera_info: sensor_msgs/msg/CameraInfo
/camera/depth/image_raw: sensor_msgs/msg/Image
/camera/depth/metadata: orbbec_camera_msgs/msg/Metadata
/camera/depth/points: sensor_msgs/msg/PointCloud2
/camera/depth_filter_status: std_msgs/msg/String
/camera/depth_to_color: orbbec_camera_msgs/msg/Extrinsics
/diagnostics: diagnostic_msgs/msg/DiagnosticArray
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/tf: tf2_msgs/msg/TFMessage
/tf_static: tf2_msgs/msg/TFMessage
默认提供的服务如下:
/camera/camera/describe_parameters: rcl_interfaces/srv/DescribeParameters
/camera/camera/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/camera/camera/get_parameters: rcl_interfaces/srv/GetParameters
/camera/camera/list_parameters: rcl_interfaces/srv/ListParameters
/camera/camera/set_parameters: rcl_interfaces/srv/SetParameters
/camera/camera/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
/camera/get_auto_white_balance: orbbec_camera_msgs/srv/GetInt32
/camera/get_color_exposure: orbbec_camera_msgs/srv/GetInt32
/camera/get_color_gain: orbbec_camera_msgs/srv/GetInt32
/camera/get_depth_exposure: orbbec_camera_msgs/srv/GetInt32
/camera/get_depth_gain: orbbec_camera_msgs/srv/GetInt32
/camera/get_device_info: orbbec_camera_msgs/srv/GetDeviceInfo
/camera/get_ldp_status: orbbec_camera_msgs/srv/GetBool
/camera/get_lrm_measure_distance: orbbec_camera_msgs/srv/GetInt32
/camera/get_sdk_version: orbbec_camera_msgs/srv/GetString
/camera/get_white_balance: orbbec_camera_msgs/srv/GetInt32
/camera/reboot_device: std_srvs/srv/Empty
/camera/save_images: std_srvs/srv/Empty
/camera/save_point_cloud: std_srvs/srv/Empty
/camera/set_auto_white_balance: std_srvs/srv/SetBool
/camera/set_color_ae_roi: orbbec_camera_msgs/srv/SetArrays
/camera/set_color_auto_exposure: std_srvs/srv/SetBool
/camera/set_color_exposure: orbbec_camera_msgs/srv/SetInt32
/camera/set_color_flip: std_srvs/srv/SetBool
/camera/set_color_gain: orbbec_camera_msgs/srv/SetInt32
/camera/set_color_mirror: std_srvs/srv/SetBool
/camera/set_color_rotation: orbbec_camera_msgs/srv/SetInt32
/camera/set_depth_ae_roi: orbbec_camera_msgs/srv/SetArrays
/camera/set_depth_auto_exposure: std_srvs/srv/SetBool
/camera/set_depth_exposure: orbbec_camera_msgs/srv/SetInt32
/camera/set_depth_flip: std_srvs/srv/SetBool
/camera/set_depth_gain: orbbec_camera_msgs/srv/SetInt32
/camera/set_depth_mirror: std_srvs/srv/SetBool
/camera/set_depth_rotation: orbbec_camera_msgs/srv/SetInt32
/camera/set_fan_work_mode: orbbec_camera_msgs/srv/SetInt32
/camera/set_filter: orbbec_camera_msgs/srv/SetFilter
/camera/set_floor_enable: std_srvs/srv/SetBool
/camera/set_ir_long_exposure: std_srvs/srv/SetBool
/camera/set_laser_enable: std_srvs/srv/SetBool
/camera/set_ldp_enable: std_srvs/srv/SetBool
/camera/set_read_customer_data: orbbec_camera_msgs/srv/SetString
/camera/set_reset_timestamp: std_srvs/srv/SetBool
/camera/set_sync_hosttime: std_srvs/srv/SetBool
/camera/set_sync_interleaverlaser: orbbec_camera_msgs/srv/SetInt32
/camera/set_white_balance: orbbec_camera_msgs/srv/SetInt32
/camera/set_write_customer_data: orbbec_camera_msgs/srv/SetString
/camera/switch_ir: orbbec_camera_msgs/srv/SetString
/camera/toggle_color: std_srvs/srv/SetBool
/camera/toggle_depth: std_srvs/srv/SetBool
查看相机画面
可用rviz2查看相机的实时画面。
传输相机实时彩色画面会占用大量带宽,最好使用网线直连,要不然会非常卡顿。
这里假设你打开的192.168.41.2上的相机。
-
使用 mobaXterm(使用免费版本即可) 连接 192.168.41.2 ,并点击mobaXterm 右上角的 X server,确保 X server 是运行状态(确保标注的区域内显示 X server is running):

-
在 mobaXterm 的命令行输入
rviz2命令:
-
在弹出的 rviz 窗口上选择要查看的相机话题:

-
可在 rviz 窗口右下角看到相机的实时画面:
信息rviz 窗口各区域之间有个小小的三角形,可以展开和收起对应的区域,你可把无关区域先收起来,然后光标在左下角画面边缘扫过,光标变成可拖动状态时,按下鼠标左键尝试拖动放大。

也可使用 ros2 run rqt_image_view rqt_image_view 命令查看相机画面。
问题排查
如果启动相机服务的时候,输出里包含如下错误:
Failed to initialize device unexpected isp firmware version, please update your camera firmware before streaming data.
而且:
-
服务一直无法启动,rviz2也看不到画面,用 ros2 topic list 可以看到相机话题,但是实际没有数据。
-
不启动相机服务,直接用 mobaXterm 连接到Orin板上用
OrbbecViewer命令(在你输入rviz2的命令行输入OrbbecViewer命令即可)查看相机,是可以正常打开相机画面的:
OrbbecViewer 弹出窗口的右上角有个提示:ISP固件需要升级:

则有可能是相机固件版本不对。
可尝试按如下方式升级到特定的版本:
-
依然按上述方式打开
OrbbecViewer,然后按如下顺序操作(注意先只操作到数字3处,然后需要选择固件文件):
-
选择固件文件:

-
点击步骤1图片里数字4处的按钮,进行升级,等待升级完成,再重新尝试启动相机服务。