最近因为学习开发需要,要开始接触一些视觉相关的内容,拿到了一个Inter 的D435i深度相机,记录一下在Ubuntu18环境下配置SDK 包的历程
写在开头
注意 :
Intel官方最新版的librealsense版本与ROS1的ROS Wrapper是 版本不一致的,且ROS Wrapper支持的是较低版本的SDK ,具体可以去网站查看
最新的SDK 支持ROS2 Wrapper
如果完全按照后文从git仓库克隆的方法安装的话,一般安装的都是最新版的librealsense以及ROS2 Wrapper,两者一般情况下是相互匹配的。如果是手动安装或是从其他地方离线获取了库文件,就可能存在版本不匹配的问题,查看librealsense的版本方法如下:
在librealsense/
目录下,打开package.xml
文件,第十行左右有版本描述<version>2.51.1</version>
以该版本为例,其支持的SDK 为v2.51.1
,与ROS2 Wrapper 4.51.1
相匹配
ROS1 Wrapper支持较老版本的SDK
因此如果使用的是ROS1环境,建议手动下载sdk包,以及支持Ros1与librealsense v2.50.0的ROS Wrapper,后文的克隆仓库步骤就可以跳过了。
Intel官网的安装文档
文档链接
安装须知(来自官网)
- D435i is supported on Linux, Windows 10. Requires FW 5.11.6.250+.
SDK安装(拔掉相机进行)
-
更新Linux内核:
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
-
克隆远端仓库
git clone https://github.com/IntelRealSense/librealsense.git
-
安装依赖
sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev
-
在克隆的本地仓库路径下,
cd librealsense\
-
运行许可脚本
./scripts/setup_udev_rules.sh
-
下载并编译内核模块
./scripts/patch-realsense-ubuntu-lts.sh
-
注意,这一步的代码运行时间会很长,要耐心等待
remote :Counting objects
运行完毕,约有1.5Gb的内容要获取与下载: -
安装结束:
-
-
安装硬件基础包:
cd ./scripts/
./patch-arch.sh
SDK编译
- 在librealsense根目录下创建
build
文件夹:mkdir build && cd build
- 使用
cmake ..
预编译,有以下三种具体方式-
cmake ..
:默认构建设置为在Debug模式下生成核心共享对象和单元测试二进制文件。使用-DCMAKE_BUILD_TYPE=Release
进行优化构建。 -
cmake ../ -DBUILD_EXAMPLES=true
:同时编译demos和tutorials ——我使用这个 -
cmake ../ -DBUILD_EXAMPLES=true -DBUILD_GRAPHICAL_EXAMPLES=false
:针对没有OpenGL 或X11的系统
-
- 清除安装,生成项目,安装至系统:
sudo make uninstall && make clean && make && sudo make install
- 注意,这一步如果因为网络原因无法连接到‘libcurl’,可以去github手动下载,然后修改
/librealsense/CMake
目录下的external_libcurl.cmake
文件,注释掉20行左右的GIT_REPOSITORY "https://github.com/curl/curl.git"
-
下载 后的文件夹改名为
libcurl
存放于目录/librealsense/build/third-party
下 - 如果出现报错:
gcc: internal compiler error
,可能是因为设备没有足够的运行内存,可以尝试关掉一些正在运行的app再次make一下,确保RAM大于2GB(虚拟机注意)
- 注意,这一步如果因为网络原因无法连接到‘libcurl’,可以去github手动下载,然后修改
相机试运行
进入文件目录build/examples/capture
根目录下,插上相机,运行./rs-capture
此时理论上会出现相机捕捉到的图像和深度图,而我在第一次运行时没有显示图像,并出现报错:
RealSense error calling rs2_pipeline_wait_for_frames(pipe:0x557831ce1260):
Frame didn't arrive within 15000
说明通过py文件并没有正常启动摄像头,相关问题可查看:
https://github.com/IntelRealSense/librealsense/issues/2639
细细研究了一波他们的讨论后,认为应该是usb连接线以及电脑插口的问题,在命令行输入realsense-viewer
,发现相机已经被电脑读取到,只是USB 端口是2.1
解决办法就是更换线材或是尝试升级固件,升级固件可参考realsense升级固件Firmware
再次尝试./rs-capture
,即可正常显示:文章来源:https://www.toymoban.com/news/detail-471406.html
安装ROS Wrapper
官网教程
本部分一定要在前一步相机驱动安装好后进行文章来源地址https://www.toymoban.com/news/detail-471406.html
- 创建工作空间
mkdir -p ~/Vision_ws/src
- 进入工作空间
cd ~/Vision_ws/src
- 克隆仓库代码(在src目录下):
git clone https://github.com/IntelRealSense/realsense-ros
cd realsense-ros/
git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1
cd ..
git clone https://github.com/pal-robotics/ddynamic_reconfigure.git
- 编译工作空间
- 定义workspace:
catkin_init_workspace
(src中) cd ..
catkin_make clean
catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
catkin_make install
- 定义workspace:
- 定义环境变量:
- bash终端:
echo "source ~/Vision_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
- zsh终端:
echo "source ~/Vision_ws/devel/setup.zsh" >> ~/.zshrc
source ~/.zshrc
- bash终端:
- 在ROS中测试相机节点
roslaunch realsense2_camera rs_camera.launch
到了这里,关于Ubuntu18.04安装配置使用Intel RealSense D435i深度相机以及在ROS环境下配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!