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:
使用 git 指令获取本地副本:打开终端,切换到需存放 SDK 的工作目录下,输入 git clone 命令克隆远程仓库。
git clone https://gitee.com/percipioxyz/camport_ros.git
选择以下任意方式,下载 Camport ROS1 SDK:
使用 git 指令获取本地副本:打开终端,切换到需存放 SDK 的工作目录下,输入 git clone 命令克隆远程仓库。
git clone https://github.com/percipioxyz/camport_ros.git
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 文件中配置相机启动时加载的参数:
执行以下命令,打开
percipio.launch
文件:
cd src/percipio_launch/launch/ gedit percipio.launch
根据需要修改配置。
在 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 页面并进行调节。
在软件包根目录下执行以下命令,打开
Percipio.cfg
文件。cd src/percipio_camera/cfg/ gedit Percipio.cfg
在 gen.add() 中设置参数的最小值和最大值。
小技巧
gen.add(name, type, level, description, default, min, max) 表示属性名称、类型、优先级、描述、默认值、最小值、最大值。
布尔类型的值必须写成 True 或 False (首字母大写)。
备注
若不知道相机属性的最小值和最大值,可通过以下方式查看相机支持的组件和属性:
可运行 SDK 示例程序 DumpAllFeatures,在列出的信息中查看相机支持的组件和属性。
可运行 SDK 示例程序
DumpAllFeatures -d
,在生成 fetch_config.xml 文件中查看相机支持的组件和属性。
以下参数的设置范围可自定义:
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 的时间戳。
执行以下命令,重新编译。编译后,Percipio.cfg 修改生效。
catkin_make
订阅
在开发包根目录下执行以下命令,订阅服务:
roslaunch percipio_launch percipio.launch
备注
运行过程中,请勿关闭该服务终端。
运行
重新开一个终端,执行以下命令,运行 RViz:
rosrun rviz rviz
添加图像显示。
在页面左侧 Global Options 设置项中设置 “Fixed Frame” 为 “camera_depth_frame”。
添加深度图显示。
点击 add, 添加 “Camera”,命名为 Depth Camera。
在页面左侧新增的 Depth Camera 设置项中设置“Image Topic”为“/camera/depth/image”。
添加彩色图显示。
点击 add, 添加 “Camera”,命名为 Color Camera。
勾选在页面左侧新增的 Color Camera,并在设置项中设置“Image Topic”为“/camera/rgb/image_raw”。
添加 IR 图显示。
点击 add, 添加 “Image”,命名为 IR Camera。
勾选在页面左侧新增的 IR Camera,并在设置项中设置“Image Topic”为“/camera/ir/image”。
添加点云图显示。
点击 add, 添加 “DepthCloud”,命名为 Point Cloud。
勾选在页面左侧新增的 Point Cloud,并在设置项中设置“Depth Map Topic”为“/camera/depth/image”。
根据成像情况,动态调试相机参数。
执行以下命令,调出 rqt_reconfigure_Param 页面。选择 driver,并在页面中调节参数。
rosrun rqt_reconfigure rqt_reconfigure
多设备同时接入方案
编辑
.launch
文件。参考
percipio.launch
文件,创建多个.launch
。每个.launch
文件中 “camera” 和 “device_id” 配置成不同值。例如,要同时运行两个设备,创建两个.launch
文件percipio_camera1.launch
和percipio_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"> ......
在开发包根目录下执行以下命令,重新配置环境变量:
source ./devel/setup.bash
通过运行命令
roslaunch percipio_launch percipio_camera1.launch
打开序列号为 207000010443 的设备。通过运行命令
roslaunch percipio_launch percipio_camera2.launch
打开序列号为 207000010113 的设备。