项目场景:
相机型号RealsenseD435i
环境:ubuntu1604,内核4.15.0-126-generic (uname -r可查看内核)
参考链接:
https://github.com/IntelRealSense/realsense-ros
https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md
https://blog.csdn.net/ahelloyou/article/details/108406473
一、librealsense安装:
整个过程请不要插相机
1. 安装方式一:正经方法(成功)
用apt装:
sudo apt-get install ros-kinetic-librealsense2
装完这个就可以在代码里用realsense的SDK了,使用方法及debug见另一篇博客
但是realsense-viewer没得用,参考下面的链接进行安装
{
https://blog.csdn.net/ahelloyou/article/details/108406473
https://blog.csdn.net/qq_44465763/article/details/108618749
添加RealSense的二进制仓库
echo 'deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main' | sudo tee /etc/apt/sources.list.d/realsense-public.list
添加公钥
sudo apt-key adv --keyserver keys.gnupg.net --recv-key 6F3EFCDE
更新软件列表
sudo apt-get update
安装相机驱动、udev规则、运行库等依赖。
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
这一步安装完成过后可以运行realsense-viewer打开相机
验证一下内核是否更新
modinfo uvcvideo | grep "version:"
如果结果出现realsense就表明OK。
}
--------------------------------分割线------------------------------------------------
2. 安装方式二:源码编译(失败)
https://github.com/IntelRealSense/realsense-ros
https://github.com/IntelRealSense/librealsense/blob/master/doc/installation.md
2.1 过程1 - 第一种,没成功:
1)更新系统
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
2)源码下载
git clone https://github.com/IntelRealSense/librealsense.git
3)安装依赖
sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev
4)运行Intel Realsense权限脚本
##在下载好的librealsense目录下
./scripts/setup_udev_rules.sh
5)构建内核模块
##在下载好的librealsense目录下
./scripts/patch-realsense-ubuntu-lts.sh
记录: 卡在这一步无法进行;提示fatal: You need to specify a tag name.
,如下;正常的信息见2.2。可知这里的tag是与内核源码(kernel) 相关的
Package required libusb-1.0-0-dev: - found
Package required libssl-dev: - found
Create patches workspace in ubuntu-xenial-master folder
Fetching Ubuntu LTS tag 【这里少了内核版本】 to the local kernel sources folder
fatal: You need to specify a tag name
针对这个问题,我的憨批操作记录:
{
由于./scripts/patch-realsense-ubuntu-lts.sh
无法确定系统对应的内核版本及其tag,那就决定自己改:**1、**上git下载内核速度太慢了,直接参考链接,下载源码。**2、**然后github上找到内核源码的Mirror,clone下来(源码放在librealsense/ubuntu-xenial-hwe/目录下); 创建新tag(git tag Ubuntu-hwe-4.15.0-126.129_16.04.1
),切换到新tag(git checkout Ubuntu-hwe-4.15.0-126.129_16.04.1
); 将第1步下载的内核源码解压覆盖clone下来的源码;git add .
git commit -m "abaaba"
git push origin Ubuntu-hwe-4.15.0-126.129_16.04.1
。**3、**将文件/scripts/patch-realsense-ubuntu-lts.sh打开,里面确定kernel_git_tag的一行给他直接赋值我们想要的tag:
原:kernel_git_tag=$(git ls-remote --tags origin | grep "${kernel_full_num}\." | grep '[^^{}]$' | tail -n 1 | awk -F/ '{print $NF}')
改:kernel_git_tag="Ubuntu-hwe-4.15.0-126.129_16.04.1"
然后再运行./scripts/patch-realsense-ubuntu-lts.sh
,这时候这个文件可以完美执行完成啦
但是系统崩了…usb口彻底不能用,鼠标插上都没反应了,电脑关机也关不上了…
Alienware——卒。。阿巴阿巴
}
6)编译安装
##在下载好的librealsense目录下
mkdir build && cd build
cmake ../ -DBUILD_EXAMPLES=true
sudo make uninstall && make clean && make && sudo make install
PS:如果想要删除librealsense,则运行:sudo make uninstall && make clean
7)测试
完成后,插上Realsense,执行下面代码,无失败信息则安装驱动成功
sudo dmesg | tail -n 50
8)运行例程测试
进入librealsense/build/examples/capture文件夹,执行
./rs-capture
看到彩图和深度图即安装成功
2.2 过程2 - 第二种,换了台电脑,中途放弃:
1) 下载source
git clone https://github.com/IntelRealSense/librealsense.git
cd librealsense
2) 安装依赖项
sudo apt-get install libudev-dev libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev
3) Install Intel Realsense permission scripts located in librealsense source directory:
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger
4) 这边需要注意把realsense拔下来
Build and apply patched kernel modules for:
根据不同的ubuntu版本安装:对于Ubuntu 14/16/18 LTS
./scripts/patch-realsense-ubuntu-lts.sh
正确的话会显示如下:
Package required libusb-1.0-0-dev: - found
Package required libssl-dev: - found
Create patches workspace in ubuntu-xenial-hwe folder
Fetching Ubuntu LTS tag Ubuntu-hwe-4.15.0-126.129_16.04.1 to the local kernel sources folder
remote: Counting objects: 5929982, done.
remote: Compressing objects: 100% (867960/867960), done.
接收对象中: 0% (8836/5929982), 6.19 MiB | 46.00 KiB/s
这一步下载内核源码特别特别慢,其实是从https://kernel.ubuntu.com/git/ubuntu/ubuntu-xenial.git/下载内核源码,然后确定你的系统对应的内核版本并选择对应的tag(例如我这里的tag就是:Ubuntu-hwe-4.15.0-126.129_16.04.1)
如果./scripts/patch-realsense-ubuntu-lts.sh
运行成功,插入realsense然后运行命令sudo dmesg | tail -n 50
,应该能看到无报错的信息 (注:下面的成功的图片都不是这里成功的,只是放这里作参考)
或者可以参考这个链接https://github.com/IntelRealSense/librealsense/issues/1300,使用命令dmesg -wT
,会实时打印日志,然后拔拔插插相机,会看到新的日志出现。没错的话应该如下图所示。
5) 后面的不重要,跟2.1中的6)7)8)步一样的
二、realsense-ros编译及使用
1.安装方式:源码编译
这是个ros包,下载源码,放在工作空间的src里,编译。
2.过程
下载源码编译
git clone https://github.com/IntelRealSense/realsense-ros.git
catkin_make
编译工作空间就完事,如果报错,缺啥装啥
或者直接apt装
sudo apt-get install ros-kinetic-realsense2-*
3.使用
roslaunch realsense2_camera rs_camera.launch
三、注意事项:
注意 安装的librealsense版本(例如v2.40.0),有时运行roslaunch realsense2_camera rs_camera.launch
会报librealsense v2.××.× 找不到
的问题。此时可以重新编译realsense-ros或者删干净重装librealsense
注意 不要重复安装(librealsense/build/中进行了make && make install,又用apt安装),尤其是重复安装了不同的版本,后面使用中会出问题。尝试一种方法不成功后记得删干净在进行另一种方法。使用中真出现多个版本冲突问题,删掉其中一个就行:
sudo apt-get remove ros-kinetic-librealsense2
或
cd librealsense/build
sudo make uninstall && make clean