记录ubuntu16安装librealsense 和ros包的过程,还有一些遇到的问题。
[温馨提醒^ _ ^]
如果按照下面步骤每一步完成(都没报错),还是不能显示图像,换个usb3.0口试试或者换一根usb3.0插线
我的笔记本有3个usb3.0,但我试了只有一个能用,而且我的相机的原装线不能用,换了移动硬盘的usb3.0线就能用了。我用了两天时间安装,一直不行,排除万难,确定我安装全部没错之后,我换了根线,然后解决,汗
首先下载源代码librealsense,编译并运行一些脚本,全部安装完librealsense文件夹会涨到776MB
(1)
github下载官方驱动包源代码
git clone https://github.com/IntelRealSense/librealsense librealsense
从github上下载速度有时极慢,几kB/s, 所以把下载好的包上传,方便以后下载
https://download.csdn.net/download/eye998/11130967
(2)
下载好之后在home目录建个文件夹software,把源代码解压到这里,进入librealsense文件夹,右键 “在终端打开”
安装之前要先检查一下系统内核uname -r
,我的是4.15, 记住这个内核版本,后面要用到
如果内核太老,更新内核 sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
先安装librealsense依赖的包:
sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
接下来就是编译
mkdir build && cd build
运行cmake:
cmake .. -DBUILD_EXAMPLES:BOOL=true
make -j4
sudo make install
(3)
安装Video4Linux(Linux中关于视频设备的内核驱动) 【⚠️:安装前请确保摄像头拔出】
位于librealsense源代码目录中得dev规则:
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d
sudo udevadm control --reload-rules && udevadm trigger
安装内核模块构建所需得openssl包: sudo apt-get install libssl-dev
为所需机器配置构建修补模块(ubuntu16.04)很重要!!!,过程比较慢,耐心等待)
1、 ./scripts/patch-realsense-ubuntu-lts.sh
2、cd ./scripts/
修补uvc模块:./patch-arch.sh
如果出现404 not found,修改patch-arch.sh脚本,将 SRC_VERSION_ID
这一项改为SRC_VERSION_ID=4.15
,这里就是之前查看的版本内核号
(4)
连接相机,通过检查内核日志中得最新条目来检查安装:sudo dmesg | tail -n 50
出现以下项说明检测到了相机
7、进入capture文件夹测试例程,验证是否安装成功:
cd build/example/capture
./rs-capture
若连安装接成功,即会出现RealSense拍摄的彩色图像和深度图。或者输入realsense-viewer
, 打开intel的sdk也可以查看相机的图像
使用librealsense库的函数
首先修改cmakelist
1、最顶端## Compile as C++11, supported in ROS Kinetic and newer下面,取消注释
add_compile_options(-std=c++11) #这里要打开,支持c++11,不然编译libsense2/rs.hpp时会出错
2、再加入find_package(realsense2 REQUIRED)
,单独一行
如果用到OpenCV就加入find_package(OpenCV REQUIRED)
3、链接库加入 ${OpenCV_LIBS}
和${realsense2_LIBRARY}
,如果没加入,会出现未定义的引用报错
target_link_libraries(image_sub
${catkin_LIBRARIES} ${OpenCV_LIBS} ${realsense2_LIBRARY}
)
然后包含头文件
#include <librealsense2/rs.hpp>
,就可以调用librealsense的代码了
例:rs2::frame depth = data.get_depth_frame();
注意这里安装的是realsense2,网上有些代码是realsense, 命名空间是rs
, 而realsense2是rs2
,而且有些函数名也不一样
升级Cmake
为了避免编译出错,需要升级到3.5以上版本
cmake --version #查看cmake版本
wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz #获取源代码
tar zxvf cmake-3.9.2.tar.gz #解压
cd cmake-3.9.2
./configure
sudo make
sudo make install
source ~/.bashrc
#最后运行cmake --version,出现cmake version 3.9.2则升级成功
安装ros 包realsense
注意: 安装的包是realsense2,一开始装了realsense, roslaunch realsense_camera sr300_nodelet_rgbd.launch
后出现了下面的错误,应该是不支持
ros realsense报错:Error calling rs_wait_for_frames (device : )
Timeout waiting for frames.
https://github.com/intel-ros/realsense/#installation-instruct
按照下面安装就可以了
cd ~/catkin_ws/src
git clone https://github.com/intel-ros/realsense.git
cd ..
catkin_make
rospack profile
(这里是我下载好的包,https://download.csdn.net/download/eye998/11136280)
安装完之后
roscore
新终端启动一个rs_camera节点,如果报错,拔下相机再重新插上
roslaunch realsense2_camera rs_camera.launch
新终端再打开rviz可视化
rviz
点击 add 按钮,选择by topic ,选择相应的话题下的image就可以显示图像了,成功,撒花^ - ^