跳到主要内容
版本:V2.0.5.x

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
注意

请谨慎在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上的相机。

  1. 使用 mobaXterm(使用免费版本即可) 连接 192.168.41.2 ,并点击mobaXterm 右上角的 X server,确保 X server 是运行状态(确保标注的区域内显示 X server is running):

  2. 在 mobaXterm 的命令行输入 rviz2 命令:

  3. 在弹出的 rviz 窗口上选择要查看的相机话题:

  4. 可在 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.

而且:

  1. 服务一直无法启动,rviz2也看不到画面,用 ros2 topic list 可以看到相机话题,但是实际没有数据。

  2. 不启动相机服务,直接用 mobaXterm 连接到Orin板上用 OrbbecViewer 命令(在你输入 rviz2 的命令行输入 OrbbecViewer 命令即可)查看相机,是可以正常打开相机画面的:

    OrbbecViewer 弹出窗口的右上角有个提示:ISP固件需要升级:

则有可能是相机固件版本不对。

可尝试按如下方式升级到特定的版本:

  1. 依然按上述方式打开 OrbbecViewer ,然后按如下顺序操作(注意先只操作到数字3处,然后需要选择固件文件):

  2. 选择固件文件:

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