TX2在ROS下使用Realsense D435i跑rtabmap和octomap

Posted 一入机械深似海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TX2在ROS下使用Realsense D435i跑rtabmap和octomap相关的知识,希望对你有一定的参考价值。

  • 使用环境:Ubuntu 16.04(JetPack 3.3),ROS Kinetic
  • 硬件设备:英伟达Jetson TX2,英特尔Realsense D435i

安装Realsense相关的相机驱动

1.安装librealsense

  • 方法一:首选方法是用二进制包方式安装(就是用sudo apt-get install …),该方法不用手动给内核打补丁。
    因为Jetson设备的Ubuntu系统内核跟普通PC上的不太一样,引用librealsense在Jetson上的官方安装教程installation_jetson.md一段话:“NVIDIA的L4T提供了基于Ubuntu的发行版,带有基于4.9版的自定义内核。内核的配置和部署方式与桌面Ubuntu映像不同,两个显着差异是默认配置中包含的内核模块列表以及新映像的刷新方式。”

步骤如下:
(1)注册服务器的公钥:

sudo apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE

(2)将服务器添加到软件源列表中:
Ubuntu 16:

sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo xenial main" -u

Ubuntu 18:

sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo bionic main" -u

(3)安装SDK:

sudo apt-get install librealsense2-utils
sudo apt-get install librealsense2-dev

(4)重新连接RealSense设备并从终端运行:realsense-viewer验证安装

  • 方法二:下载librealsense源码包编译,该方法有一个好处就是可以下载指定版本的librealsense包,方便与后续下载的realsense-ros版本匹配。

步骤如下:
(1)下载源码包

git clone https://github.com/IntelRealSense/librealsense.git

*若想下载指定版本的librealsense,可从Releases页面下载。
(2)构建和修补Jetson L4T的内核模块

cd librealsense2
./scripts/patch-realsense-ubuntu-L4T.sh  

(3)编译librealsense2 SDK

sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev -y
./scripts/setup_udev_rules.sh  
mkdir build && cd build  
cmake .. -DBUILD_EXAMPLES=true -DCMAKE_BUILD_TYPE=release -DFORCE_RSUSB_BACKEND=false -DBUILD_WITH_CUDA=true && make -j$(($(nproc)-1)) && sudo make install

(4)连接Realsense设备,运行realsense-viewer并检查结果

2.安装realsense-ros

这一步要注意与librealsense的版本匹配问题。详见realsense-ros发行说明
realsense-ros版本
推荐采用源码包方式安装,方便修改launch等文件。
步骤如下:
(1)先创建工作空间

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
catkin_init_workspace

(2)下载realsense-ros到src里
若最新版本realsense-ros与librealsense版本不匹配,自行到releases里下载。

git clone https://github.com/IntelRealSense/realsense-ros.git
cd realsense-ros/
git checkout `git tag | sort -V | grep -P "^2.\\d+\\.\\d+" | tail -1` #检查所下载的版本是否是想要的
cd ..

(3)编译

cd ..
catkin_make clean
catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
catkin_make install
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

(4)插上相机测试一下

roslaunch realsense2_camera rs_camera.launch

ROS下使用D435i跑rtabmap和octomap

参考SLAM-with-D435i

  1. 安装以下三个包:imu_filter_madgwick、rtabmap_ros和robot_localization
sudo apt-get install ros-kinetic-imu-filter-madgwick  
sudo apt-get install ros-kinetic-rtabmap-ros  
sudo apt-get install ros-kinetic-robot-localization  
  1. 启动
    这里启动的是realsense-ros包里带的opensource_tracking.launch
roslaunch realsense2_camera opensource_tracking.launch

效果如下:
在这里插入图片描述

注意到上图中ColorOccupacyGrid插件报错,原因是缺少安装Octomap在ROS中的包。

  1. 安装octomap-ros
sudo apt-get install ros-kinetic-octomap*
  1. 重新使用D435i启动节点
roslaunch realsense2_camera opensource_tracking.launch

效果如下:
在这里插入图片描述

以上是关于TX2在ROS下使用Realsense D435i跑rtabmap和octomap的主要内容,如果未能解决你的问题,请参考以下文章

REALSENSE D435i IMU数据的处理与使用

无法在我的 realsense 相机 D435i 中获取 imu 流

realsense d435i获取imu数据

Android+RealSense D435i数据录制 VINS离线运行

Android+RealSense D435i数据录制 VINS离线运行

基于深度相机 RealSense D435i 的 ORB SLAM 2