ROS2 平台

ROS2(Robot Operating System 2)是机器人操作系统的第二代版本。它是一个开源的机器人软件框架,旨在为机器人开发提供工具和库,以简化机器人应用的创建和管理。ROS2 是由 Open Robotics 开发和维护的,继承了 ROS1 的许多优点,同时在架构和功能上进行了改进,以满足现代机器人系统的需求。

搭建 ROS2 开发环境

  1. 根据 Ubuntu 版本,安装对应的 ROS2 开发平台。

    • Ubuntu20.04:ROS2 Foxy

    • Ubuntu22.04:ROS2 Humble

  2. 安装依赖。

    sudo apt install python3-colcon-common-extensions
    sudo apt install ros-foxy-camera-info-manager
    sudo apt install ros-foxy-image-publisher
    sudo apt install ros-foxy-diagnostic-updater
    

下载 Camport ROS2 SDK

  1. 创建工作目录

    mkdir -p ~/ros2_ws/src
    cd ~/ros2_ws/src/
    
  2. 下载 Camport ROS2

    git clone https://gitee.com/percipioxyz/camport_ros2.git
    

Camport ROS2 SDK 的目录如下图所示:

Camport ROS2 SDK目录

Camport ROS2 SDK 目录

  • README.md:简述了 ROS2 编译过程。

  • src/percipio_camera/CMakeLists.txt:Cmake 编译系统的规则文件。

  • src/percipio_camera/camport3:包含 Percipio SDK 的库文件和头文件。

  • src/percipio_camera/include:包含头文件。

  • src/percipio_camera/launch:包含 ROS2 的启动文件,用于启动节点和配置参数。

  • src/percipio_camera/package.xml:描述功能包清单的文件,包括功能包的名称、版本号、作者信息、许可信息、编译依赖等。

  • src/percipio_camera/src:包含主要的源代码文件,包括节点实现、相机驱动等。

配置环境变量

source /opt/ros/foxy/setup.bash
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc

构建工程

cd ~/ros2_ws/src/camport_ros2/
colcon build --event-handlers  console_direct+  --cmake-args  -DCMAKE_BUILD_TYPE=Release
sudo echo "source ./install/setup.bash" >> ~/.bashrc
source ~/.bashrc

小技巧

colcon build 说明:

  • --event-handlers  console_direct+:这个选项指定了事件处理程序。console_direct+ 表示直接在控制台输出构建事件的详细信息。这样可以更清楚地看到构建过程中的每一步和可能的错误信息。

  • --cmake-args  -DCMAKE_BUILD_TYPE=Release:这个选项传递了额外的 CMake 参数。在这种情况下,-DCMAKE_BUILD_TYPE=Release 设置了 CMake 的构建类型为 Release。这意味着构建将进行优化,适合发布版本,而不是调试版本。

编译后会生成 build 文件夹(包含中间文件和目标文件)、install 文件夹(包括可执行文件、库文件、头文件和其他资源文件)和 log 文件夹(包含编译和运行时生成的日志文件)。

修改参数配置

在 launch 文件(percipio_camera.launch.py / multi_cam.launch.py)中配置相机启动时加载的参数。

重要

通过 launch 文件只能配置部分参数,如需配置相机的所有参数,可选择使用 Percipio Viewer 提前将相机参数配置写入 Storage,后续打开相机后参数便是配置好的状态。设置步骤请参见 Percipio Viewer 用户指南

按照以下步骤,在 launch 文件中配置参数。

  1. 进入 camport3_ros2/install/percipio_camera/share/percipio_camera/launch 路径。

  2. 修改参数配置。

    如使用单台相机,打开 percipio_camera.launch.py 文件,并根据需要修改参数配置,可配参数的说明见下表。

    • 指定相机 SN 号

      DeclareLaunchArgument('serial_number', default_value='"207000106930"'),
      
    • 指定相机 IP 地址

      DeclareLaunchArgument('device_ip', default_value='192.168.120.112'),
      

    备注

    如果不通过 SN 或 IP 去指定相机,默认打开找到的第一台相机。

    可配参数说明表

    参数名

    描述

    default_value 可配范围

    camera_name

    Topic 名

    自定义,多相机情况下通过该名称区分相机

    serial_number

    相机 SN 号

    可为空;也可填写待连接相机的 SN 号。

    device_ip

    相机 IP 地址

    可为空;也可填写待连接相机的 IP 地址。

    color_enable

    Color 图使能

    true/false

    color_resolution

    Color 图像分辨率

    设定范围请参考相机的 fetch_config.xml 文件。

    color_format

    Color 图像格式

    参考 camport3_ros2/src/percipio_camera/src/percipio_device.cppStreamFormatMapper format_mapper_list[]

    color_qos

    Color服务质量

    SYSTEM_DEFAULT、DEFAULT、PARAMETER_EVENTS、SERVICES_DEFAULT、PARAMETERS、SENSOR_DATA

    color_camera_info_qos

    Color camera info 服务质量

    SYSTEM_DEFAULT、DEFAULT、PARAMETER_EVENTS、SERVICES_DEFAULT、PARAMETERS、SENSOR_DATA

    depth_enable

    Depth 组件使能

    true/false

    depth_resolution

    Depth 图像分辨率

    设定范围请参考相机的 fetch_config.xml 文件。

    depth_format

    Depth 图像格式

    参考 camport3_ros2/src/percipio_camera/src/percipio_device.cppStreamFormatMapper format_mapper_list[]

    depth_qos

    Depth 服务质量

    SYSTEM_DEFAULT、DEFAULT、PARAMETER_EVENTS、SERVICES_DEFAULT、PARAMETERS、SENSOR_DATA

    depth_camera_info_qos

    Depth camera info 服务质量

    SYSTEM_DEFAULT、DEFAULT、PARAMETER_EVENTS、SERVICES_DEFAULT、PARAMETERS、SENSOR_DATA

    depth_registration_enable

    Depth to Color 对齐使能

    true/false

    point_cloud_enable

    点云图使能

    true/false

    color_point_cloud_enable

    彩色点云图使能

    true/false

    point_cloud_qos

    点云图服务质量

    SYSTEM_DEFAULT、DEFAULT、PARAMETER_EVENTS、SERVICES_DEFAULT、PARAMETERS、SENSOR_DATA

    left_ir_enable

    左 IR 图使能

    true/false

    left_ir_resolution

    左 IR 图像分辨率

    设定范围请参考相机的 fetch_config.xml 文件。

    left_ir_format

    左 IR 图像格式

    参考 camport3_ros2/src/percipio_camera/src/percipio_device.cppStreamFormatMapper format_mapper_list[]

    left_ir_qos

    左 IR 服务质量

    SYSTEM_DEFAULT、DEFAULT、PARAMETER_EVENTS、SERVICES_DEFAULT、PARAMETERS、SENSOR_DATA

    left_ir_camera_info_qos

    左 IR camera info 服务质量

    SYSTEM_DEFAULT、DEFAULT、PARAMETER_EVENTS、SERVICES_DEFAULT、PARAMETERS、SENSOR_DATA

    right_ir_enable

    右 IR 组件使能

    true/false

    right_ir_resolution

    右 IR 图像分辨率

    设定范围请参考相机的 fetch_config.xml 文件。

    right_ir_format

    右 IR 图像格式

    参考 camport3_ros2/src/percipio_camera/src/percipio_device.cppStreamFormatMapper format_mapper_list[]

    right_ir_qos

    右 IR 服务质量

    SYSTEM_DEFAULT、DEFAULT、PARAMETER_EVENTS、SERVICES_DEFAULT、PARAMETERS、SENSOR_DATA

    right_ir_camera_info_qos

    右 IR camera info 服务质量

    SYSTEM_DEFAULT、DEFAULT、PARAMETER_EVENTS、SERVICES_DEFAULT、PARAMETERS、SENSOR_DATA

    tof_depth_quality

    ToF 相机深度质量

    basic/medium/high,设定范围请参考相机的 fetch_config.xml 文件。

    tof_modulation_threshold

    ToF 相机激光调制光强

    设定范围请参考相机的 fetch_config.xml 文件。

    tof_jitter_threshold

    ToF 相机抖动过滤

    设定范围请参考相机的 fetch_config.xml 文件。

    tof_filter_threshold

    ToF 相机飞点滤波

    设定范围请参考相机的 fetch_config.xml 文件。

    tof_channel

    ToF 相机调制频率

    设定范围请参考相机的 fetch_config.xml 文件。

    tof_HDR_ratio

    ToF 相机高动态范围比

    设定范围请参考相机的 fetch_config.xml 文件。

    备注

    xxx_qos 可配值说明:

    • SYSTEM_DEFAULT:使用系统的默认 QoS 设置,这些设置通常由底层的 DDS(Data Distribution Service)实现定义。效果取决于具体的 DDS 实现。

    • DEFAULT:提供可靠的消息传递,适用于大多数通用的通信需求。最多保留 10 条最新消息。

    • PARAMETER_EVENTS:专门用于参数事件的 QoS 设置,确保参数变化事件能够可靠传递。最多保留 1000 条最新消息。

    • SERVICES_DEFAULT:服务通信的默认 QoS 设置,确保服务请求和响应能够可靠传递。保留所有服务请求和响应消息。

    • PARAMETERS:专门用于参数的 QoS 设置,确保参数设置和获取的可靠性。最多保留 1000 条最新消息。

    • SENSOR_DATA:传感器数据的 QoS 设置,适用于高频率、低延迟的数据流传输。最多保留 5 条最新消息。

发布

ros2 launch percipio_camera percipio_camera.launch.py

备注

运行过程中,请勿关闭该服务终端。

运行

  1. 重新开一个终端,执行以下命令,运行 RViz:

    ros2 run rviz2 rviz2
    
  2. 添加图像显示。

    1. 在页面左侧 Global Options 设置项中设置 “Fixed Frame” 为 “camera_depth_frame”。

      Global Options 设置项
    2. 添加深度图显示。

      1. 点击 add, 添加 “Camera”,命名为 Depth Camera。

        添加 Depth Camera
      2. 在页面左侧新增的 Depth Camera 设置项中设置“Image Topic”为“/camera/depth/image”。

        添加 Depth Camera
    3. 添加彩色图显示。

      1. 点击 add, 添加 “Camera”,命名为 Color Camera。

      2. 勾选在页面左侧新增的 Color Camera,并在设置项中设置“Image Topic”为“/camera/color/image_raw”。

    4. 添加 Left IR 图显示。

      1. 点击 add, 添加 “Camera”,命名为 Left IR Camera。

      2. 勾选在页面左侧新增的 Left IR Camera,并在设置项中设置“Image Topic”为“/camera/left_ir/image_raw”。

    5. 添加 Right IR 图显示。

      1. 点击 add, 添加 “Camera”,命名为 Right IR Camera。

      2. 勾选在页面左侧新增的 Right IR Camera,并在设置项中设置“Image Topic”为“/camera/right_ir/image_raw”。

    6. 添加原始点云图显示。

      1. 点击 add, 添加 “PointCloud2”,命名为 Point Cloud。

      2. 勾选在页面左侧新增的 Point Cloud,并在设置项中设置“PointCloud2 Topic”为“/camera/depth/points”。

    7. 添加彩色点云图显示。

      1. 点击 add, 添加 “PointCloud2”,命名为 Registered Point Cloud。

      2. 勾选在页面左侧新增的 Registered Point Cloud,并在设置项中设置“PointCloud2 Topic”为“/camera/depth_registered/points”。