目录
0 概述
想要在ros下使用realsense相机,需要安装两部分东西,第一部分是最基本的库librealsense2,它是驱动相机的必需要有的库,不管你在什么系统环境和编程环境中使用realsense系列相机,都需要成功安装或者导入这个库。第二部分是realsense-ros(包名realsense2-camera),这个是为了让librealsense2能在ros中使用的一个wrapper,如果想要在ros中使用的话,就需要安装这一部分。
官方教程:https://github.com/IntelRealSense/librealsense/blob/master/doc/installation_jetson.md
librealsense github 仓库:https://github.com/IntelRealSense/librealsense.git
realsense-ros github 仓库: https://github.com/IntelRealSense/realsense-ros.git
下面主要以常用的Jetson TX2作为硬件平台,仔细梳理安装步骤
1 通过ROS功能包安装
这个方法可以说是最方便的方法,只需要运行一条指令即可(英文原文)
sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
使用这种方法可以直接同时安装realsense2-camera和librealsense2及其所需的依赖项,并且自动匹配udev rules。
但使用这种方法需要注意几点:
- 自动安装的librealsense2总是比realsense官方库的正式版本低一个版本
- 并且这样安装的librealsense2使用的是不太稳定的RS-USB通讯协议,而非native v412驱动,目的是因为RS-USB的方式能够适配更多不同的软硬件平台
- realsense2_description是单独的ROS功能包,当启动带模型的launch文件时需要相关文件,可以使用如下指令安装realsense2_description
sudo apt-get install ros-$ROS_DISTRO-realsense2-description
2 通过Realsense官方途径安装
使用这种方式需要分两部分进行,分别安装librealsense2和realsense2-camera(英文原文)
2.1 安装librealsense2
支持的硬件
- NVIDIA® Jetson Nano™, Jetson TX2™ 和 Jetson AGX Xavier™目前已经通过测试
- 相机包括RealSense D415, D435, D435i, D455, L515, SR300 和 T265
软件环境
- 支持NVIDIA® L4T Ubuntu 16.04/18.04的系统
选择SDK后端
目前librealsense2 SDK在linux平台上有两种可供选择的通讯API后端
- 使用linux原生的UVC,USB和HID的内核驱动(Video4Linux 和 IIO)
- 使用RSUSB,它是一种使用UVC和HID数据协议的用户实现
对于生产环境,官方建议使用第一种方式,能使驱动运行更加稳定,但是安装时需要添加修改内核模块来增加对应的驱动支持,整体安装过程较为复杂。
第二种方式不需要修改内核,同时允许牺牲某些性能和功能限制(例如多相机)为代价进行全功能SDK部署。它使用的是标准的USB驱动程序与设备通讯,其中高级协议(UVC/HID)则是直接内置编译在SDK中。同时这两种后端接口是互斥的,需要在SDK编译的配置阶段(CMake)就指定好。通过-DFORCE_RSUSB_BACKEND(V.2.30之前的版本使用 -DFORCE_LIBUVC )标志位来选择。
2.1.1使用Debian包安装
需要注意的是提供的二进制安装包是使用-DFORCE_RSUSB_BACKEND=true生成的,也就是说使用的是上面所说的第二种方式
- 注册公钥
sudo apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
如果获取失败,可以尝试添加代理后再次尝试获取,具体可以参考这里。
- 添加库地址
#Ubuntu16:
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo xenial main" -u
#Ubuntu18:
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo bionic main" -u
- 安装SDK
sudo apt-get install librealsense2-utils sudo apt-get install librealsense2-dev
安装完librealsense2-dev之后,就可以使用
g++ -std=c++11 filename.cpp -lrealsense2
来把librealsense导入到你的应用程序中或者是IDE中,如果要使用CMake可以参考这里
最后重新插拔相机,直接在终端运行realsense-viewer确认使用成功安装
2.1.2 从源码编译安装
使用RSUSB方式
具体使用可以参考libuvc_installation.sh
首先拔出所有realsense设备,然后安装依赖项
sudo apt-get update sudo apt-get install git cmake libssl-dev freeglut3-dev libusb-1.0-0-dev pkg-config libgtk-3-dev unzip -y
安装完成后拉取librealsense源码,并解压
wget https://github.com/IntelRealSense/librealsense/archive/master.zip
unzip ./master.zip -d .
cd ./librealsense-master
复制udev文件
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger
开始编译
mkdir build && cd build
cmake ../ -DFORCE_LIBUVC=true -DCMAKE_BUILD_TYPE=release #如果安装了CUDA可以添加-DBUILD_WITH_CUDA=true
make -j2
sudo make install
使用V4L 后端(需要内核补丁)
目前在Jetson AGX平台和JetPack 4.2.3[L4T 32.2.1,32.2.3], 4.3[L4T 32.3.1], 4.4[L4T 32.4.3]验证通过
准备工作
使用如下指令确认磁盘可用空间,需要约2.5GB的空闲空间用于编译安装
df -h
将系统切换到最大功率模式,并移除所有USB/UVC相机。
拉取librealsense源码,并解压
wget https://github.com/IntelRealSense/librealsense/archive/master.zip
unzip ./master.zip -d .
cd ./librealsense-master
编译并导入内核补丁
直接运行脚本进行内核编译与应用
./scripts/patch-realsense-ubuntu-L4T.sh
这个脚本运行大约需要30min,运行期间需要保持网络连接,主要操作包括
- 获取内核资源树用于内核模块编译
- 应用librealsense特定的内核补丁并且编译修改后的内核模块
- 尝试将编译好的模块插入到内核中
后面步骤与之前类似
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
编译完成后,重新连接相机,运行realsense-viewer来确认安装结果,如果能获取到frame metadata说明安装成功
2.2 安装librealsense-ros
创建工作空间目录
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
获取源码并编译
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 ..
catkin_init_workspace
cd ..
catkin_make clean
catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
catkin_make install
source对应脚本
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
最后运行launch文件测试是否正常
roslaunch realsense2_camera rs_camera.launch