任务背景
在ROS环境中使用d435i,订阅图像和imu数据
任务概述
实现在ros中使用d435i主要有两步骤:1.安装d435i sdk,即librealsense; 2.安装realsense-ros驱动
具体步骤
d435i sdk安装与测试
安装d435i sdk有两种方式:1.apt安装; 2.源码编译安装(推荐)
1.apt 安装
a. 注册服务公共密钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
b.添加服务至apt仓库
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
c.安装librealsense
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
d.安装developer and debug 包
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
2.源码安装(推荐)
a. 更新ubuntu distribution并安装依赖项
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
sudo apt-get install libudev-dev libgtk-3-dev libusb-1.0-0-dev pkg-config libglfw3-dev libssl-dev
b.克隆 librealsense 仓库
git clone https://github.com/IntelRealSense/librealsense.git
注:后边安装realsense-ros驱动包时,realsense-ros的github仓库里声称它们支持librealsense版本为v2.50.0, 但是笔者亲测最新版本也能支持,故在此未指定安装推荐版本
c.编译及安装
cd librealsense
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger
mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make -j8
sudo make install
d.测试安装是否成功
realsense-viewer
注意启动后如显示无realsense硬件设备,如下图所示,需要插拔d435i usb口
若sdk安装成功,相机正常工作,如下图所示。
左上为rgb图像,右下为深度图,右上和左下分别为角加速度和线加速度示意。
Realsense-ros 安装与测试
1.ROS系统安装
若计算机未安装ros机器人操作系统,则需要安装版本对应的ros1操作系统。
ubuntu 16.04 安装 ros kinetic / 18.04 安装 ros melodic / 20.04安装 ros noetic
各版本安装见Distributions - ROS Wiki ,点击对应的版本就能找到安装页面
2.Realsense-ros 安装
2.1 apt安装
sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
$ROS_DISTRO须替换为系统安装的ros版本号(kinetic, melodic or noetic, etc)
2.2源码安装(推荐)
a.创建工作空间
cd
mkdir ros-realsense_ws && cd ros-realsense_ws
mkdir src && cd src
b.克隆源代码
https://github.com/IntelRealSense/realsense-ros.git
git checkout ros1-legacy
或者下载该仓库并解压到 ros-realsense_ws/src路径中。注意无论哪种方式都要切换或选择到ros1-legacy分支。
注意:GitHub - IntelRealSense/realsense-ros at ros1-legacy仓库描述说需要安装ddynamic_reconfigure,并提供了仓库地址。但笔者在实际实践中发现,若是在安装ros系统时选择了 ros-$ROS_DISTRO-desktop-full 包, 其中就已预装了ros-$ROS_DISTRO-dynamic-reconfigure 包,如果再编译安装ddynamic_reconfigure源码,则在后续启动realsense d435i时便会启动失败。因此这里推荐先搜索下计算机是否已经安装dynamic-reconfigure,如果没有就使用apt安装即可。
sudo apt search ros-$ROS_DISTRO-dynamic-reconfigure
sudo apt install ros-$ROS_DISTRO-dynamic-reconfigure ros-$ROS_DISTRO-dynamic-reconfigure-dbgsym
$ROS_DISTRO须替换为系统安装的ros版本号(kinetic, melodic or noetic, etc)
c.编译及source 工作空间
cd ..
catkin_make
source devel/setup.bash
d.启动测试
roslaunch realsense2_camera rs_camera.launch
在另一终端中输入:
rqt_image_view
便可查看rgb图和深度图。
也可运行:
roslaunch realsense2_camera demo_pointcloud.launch
测试realsense d435i 对于感知环境的3D重建效果。
e.发布imu消息
在d步骤中默认启动测试rs_camera.launch或其他launch文件时,用rostopic list查看话题可以发现是没有d435i发布的imu话题 /camera/imu。 这是因为在ros-realsense 默认是不发布imu信息的。故而需要对launch文件内的参数对默认参数修改配置。
以在运行rs_camera.launch 是需要发布imu数据为例,首先要在realsense-ros包中的realsense2_camera/launch文件夹中找到rs_camera.launch并打开编辑。
将此launch文件中
<arg name="unite_imu_method" default=""/>
修改为:
<arg name="unite_imu_method" default="linear_interpolation"/>
并将:
<arg name="enable_gyro" default="false"/>
<arg name="enable_accel" default="false"/>
改为:
<arg name="enable_gyro" default="true"/>
<arg name="enable_accel" default="true"/>