ROS 1 平台
ROS(Robot Operating System,下文简称 ROS)是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。
搭建 ROS 1 开发环境
根据 Ubuntu 版本,安装对应的 ROS 1 开发平台。
Ubuntu16.04:ROS Kinetic
Ubuntu18.04:ROS Melodic
Ubuntu20.04:ROS Noetic
下载 Camport ROS 1 SDK
ROS 1 SDK 支持 ROS Kinetic、ROS Melodic 和 ROS Noetic 平台。
选择以下任意方式,下载 Camport ROS 1 SDK:
使用 git 指令获取本地副本:打开终端,切换到需存放 SDK 的工作目录下,输入 git clone 命令克隆远程仓库。
git clone https://gitee.com/percipioxyz/camport_ros.git
选择以下任意方式,下载 Camport ROS 1 SDK:
使用 git 指令获取本地副本:打开终端,切换到需存放 SDK 的工作目录下,输入 git clone 命令克隆远程仓库。
git clone https://github.com/percipioxyz/camport_ros.git
Camport ROS 1 SDK 的目录包含 src
(源码)与多个 package
(包)。
其中 src
包含如下两个文件夹:
percipio_camera
: 包括源文件和配置文件。Camport ROS 1 SDK src 文件夹
percipio_launch
:launch 包。该包通过 XML 配置文件实现 ROS 节点的启动与配置,支持定义节点名称、类型、参数等属性。同时,其 launch 文件支持服务节点的声明,便于订阅服务的功能集成。包内提供四个图像显示脚本
depth.py
、color.py
、depthcloud.py
和cloud.py
,具体使用方法请参见 订阅相机节点。
![]()
Camport ROS 1 SDK launch 包
编译
在开发包根目录下执行以下命令,进行编译:
catkin_make
小技巧
如果未安装 catkin
命令,需先安装 catkin
。
编译后会生成 build
文件夹(包含中间文件)和 devel
文件夹(包含最终文件:头文件、动/静态库、可执行文件)。
配置环境变量
在开发包根目录下执行以下命令,配置环境变量:
echo "source <开发包存放路径>/camport_ros/devel/setup.bash" >> ~/.bashrc
修改相机参数
ROS 1支持通过以下两种方式修改相机参数。
方法一
在 percipio.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 设置为相机 SN 时,表示通过指定序列号打开相机。
default 设置为相机 IP 时,表示通过指定 IP 打开相机。
在 default 中设置深度图和彩色图对齐开关。只有同时打开彩色图和深度图后,此项使能开关才会生效。对于没有 RGB 组件的相机此设置无效。
<arg name="depth_registration" default="true" />
备注
TL460-S1-E1 相机支持两种 bayer 格式的彩色图像输出:CSI_BAYER8RGGB 和 CSI_BAYER12RGGB。如通过修改
percipio.launch
文件指定相机出 bayer 格式的彩色图像,默认输出为 CSI_BAYER8RGGB,且无法通过修改该文件切换至 CSI_BAYER12RGGB。当通过
percipio.launch
文件配置了相机不支持的图像格式或分辨率时,相机将输出默认配置的图像。
方法二
通过 Percipio Viewer 软件或 SDK 设置相机参数。
GigE2.0 相机(除 PMD 系列与 GM 系列以外的相机)
通过 Percipio Viewer 或 Camport SDK 3.X.X 将参数保存至相机 Storage 区,ROS 启动时将自动加载 storage 区的参数配置并开始采集图像。
GigE2.1 相机(PMD 系列与 GM 系列相机)
通过 Camport SDK 4.X.X 或新版 Percipio Viewer 设置相机默认加载目标 User Set 属性组,相机上电后将自动加载该 User Set 属性组的参数配置。
启动相机节点
在开发包根目录下执行以下命令,启动相机节点:
roslaunch percipio_launch percipio.launch
若相机节点正常启动,终端会打印相机 IP、SN、深度图及彩色图格式与分辨率等信息。
备注
运行过程中,请勿关闭该服务终端。
订阅话题
“src/percipio_launch” 包含以下相机节点订阅的 Python 示例脚本:
depth.py
:使能指定相机采集指定图像格式和分辨率的深度图像。启动相机节点后,另开一个终端,切换到 “src/percipio_launch” 路径下。输入
python3 depth.py
并运行,弹出的窗口将实时显示指定相机的深度图像。depth.py 运行结果
color.py
:使能指定相机采集到指定图像格式和分辨率的彩色图像。启动相机节点后,另开一个终端,切换到 “src/percipio_launch” 路径下。输入
python3 color.py
并运行,弹出的窗口将实时显示指定相机的 color 图像。color.py 运行结果
cloud.py
:使能指定相机采集到指定图像格式和分辨率的点云并保存。启动相机节点后,另开一个终端,切换到 “src/percipio_launch” 路径下。输入
python3 cloud.py
并运行,弹出的窗口将实时显示指定相机的原始点云。同时,该终端将打印点云保存路径与点云点数。cloud.py 运行结果
depthcloud.py
:使能指定相机采集指定图像格式和分辨率的彩色点云并保存。在
percipio.launch
文件中,将 depth_registration 置为 true 并保存,启动相机节点。然后另开一个终端,切换到 “src/percipio_launch” 路径下。运行python3 depthcloud.py
,弹出的窗口将实时显示指定相机的彩色点云。同时,该终端将打印点云保存路径与点云点数。depthcloud.py 运行结果
多设备同时接入方案
编辑
.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 的设备。