ROS1 平台

ROS(Robot Operating System,下文简称 ROS)是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。

搭建 ROS1 开发环境

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

  • Ubuntu16.04:ROS Kinetic

  • Ubuntu18.04:ROS Melodic

  • Ubuntu20.04:ROS Noetic

下载 Camport ROS1 SDK

ROS1 SDK 支持 ROS Kinetic、ROS Melodic 和 ROS Noetic 平台。

选择以下任意方式,下载 Camport ROS1 SDK:

  • 使用浏览器下载:https://gitee.com/percipioxyz/camport_ros.git

  • 使用 git 指令获取本地副本:打开终端,切换到需存放 SDK 的工作目录下,输入 git clone 命令克隆远程仓库。

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

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

Camport ROS1 SDK目录

Camport ROS1 SDK 目录

  • percipio_camera:包括源文件和配置文件。

  • percipio_launch:launch 包。

编译

在开发包根目录下执行以下命令,进行编译:

catkin_make

小技巧

如果未安装 catkin 命令,需先安装 catkin。

编译后会生成 build 文件夹(包含中间文件)和 devel 文件夹(包含头文件、动/静态库、可执行文件)。

配置环境变量

在开发包根目录下执行以下命令,配置环境变量:

echo "source <开发包存放路径>/camport_ros/devel/setup.bash" >> ~/.bashrc

修改 Launch 配置

按照以下步骤,在 percipio.launch 文件中配置相机启动时加载的参数:

  1. 执行以下命令,打开 percipio.launch 文件:

cd src/percipio_launch/launch/
gedit percipio.launch
  1. 根据需要修改配置。

  • 在 default 中指定 相机 SN:

<arg name="device_id" default="207000106930" />

小技巧

device_id 默认值为 #1,表示默认打开找到的第一个相机。

  • 在 default 中设置左右灰度图像曝光完全同步开关:

<arg name="color_depth_synchronization" default="true" />
  • 在 default 中设置深度图和彩色图对齐开关:

<arg name="depth_registration" default="true" />

备注

只有同时打开彩色图和深度图后,此项使能开关才会生效。对于没有 RGB 组件的相机此设置无效。

修改 Percipio.cfg 配置

Percipio.cfg 文件中的参数支持动态调节,修改 Percipio.cfg 参数最大值和最小值后,参见 运行 调出 rqt_reconfigure_Param 页面并进行调节。

  1. 在软件包根目录下执行以下命令,打开 Percipio.cfg 文件。

    cd src/percipio_camera/cfg/
    gedit Percipio.cfg
    
    Percipio.cfg
  2. 在 gen.add() 中设置参数的最小值和最大值。

    小技巧

    1. gen.add(name, type, level, description, default, min, max) 表示属性名称、类型、优先级、描述、默认值、最小值、最大值。

    2. 布尔类型的值必须写成 True 或 False (首字母大写)。

    备注

    1. 若不知道相机属性的最小值和最大值,可通过以下方式查看相机支持的组件和属性:

      • 可运行 SDK 示例程序 DumpAllFeatures,在列出的信息中查看相机支持的组件和属性。

      • 可运行 SDK 示例程序 DumpAllFeatures -d,在生成 fetch_config.xml 文件中查看相机支持的组件和属性。

    2. 以下参数的设置范围可自定义:

      • depth_speckle_filter:斑点滤波开关。斑点滤波用于过滤深度图中的小块斑点噪声。

      • max_speckle_size:斑点噪声的最大尺寸。尺寸大于该设定值的斑点被认为不是噪声。建议设置范围为 [10,3000]。

      • max_speckle_diff:同块斑点中相邻像素的最大深度差值。若相邻像素的深度差值大于该设定值,则认为该相邻像素属于两块斑点。建议设置范围为 [10,1500]。

      • data_skip:跳帧。例如,图漾发布节点实际是 30fps,ROS 接收节点只想接收 10fps,此时可将 data_skip 设置为 3。建议设置范围为 [0,20]。

      • z_scaling:深度图中像素值的单位。建议设置范围为 [0,8]。

      • use_device_time:默认设置为 True,表示使用相机内部时间戳;设置为 False 时,表示使用 ROS 的时间戳。

  3. 执行以下命令,重新编译。编译后,Percipio.cfg 修改生效。

    catkin_make
    

订阅

在开发包根目录下执行以下命令,订阅服务:

roslaunch percipio_launch percipio.launch

备注

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

运行

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

    rosrun rviz rviz
    
  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/rgb/image_raw”。

    4. 添加 IR 图显示。

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

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

    5. 添加点云图显示。

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

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

  3. 根据成像情况,动态调试相机参数。

    执行以下命令,调出 rqt_reconfigure_Param 页面。选择 driver,并在页面中调节参数。

    rosrun rqt_reconfigure  rqt_reconfigure
    
    调节参数

多设备同时接入方案

  1. 编辑 .launch 文件。

    参考 percipio.launch 文件,创建多个 .launch。每个 .launch 文件中 “camera” 和 “device_id” 配置成不同值。例如,要同时运行两个设备,创建两个 .launch 文件 percipio_camera1.launchpercipio_camera2.launch

    percipio_camera1.launch 内容如下:

    <arg name="camera" default="camera1">
    ......
    <arg name="device_id" default="207000010443">
    ......
    

    percipio_camera2.launch 内容如下:

    <arg name="camera" default="camera2">
    ......
    <arg name="device_id" default="207000010113">
    ......
    
  2. 在开发包根目录下执行以下命令,重新配置环境变量:

    source ./devel/setup.bash
    
  3. 通过运行命令 roslaunch percipio_launch percipio_camera1.launch 打开序列号为 207000010443 的设备。

    通过运行命令 roslaunch percipio_launch percipio_camera2.launch 打开序列号为 207000010113 的设备。