最近因为学习开发需要,要开始接触一些视觉相关的内容,拿到了一个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,即可正常显示:
安装ROS Wrapper
官网教程
本部分一定要在前一步相机驱动安装好后进行
- 创建工作空间
mkdir -p ~/Vision_ws/src - 进入工作空间
cd ~/Vision_ws/src - 克隆仓库代码(在src目录下):
git clone https://github.com/IntelRealSense/realsense-roscd realsense-ros/git checkout `git tag | sort -V | grep -P "^2.\d+\.\d+" | tail -1cd ..git clone https://github.com/pal-robotics/ddynamic_reconfigure.git
- 编译工作空间
- 定义workspace:
catkin_init_workspace(src中) cd ..catkin_make cleancatkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Releasecatkin_make install
- 定义workspace:
- 定义环境变量:
- bash终端:
echo "source ~/Vision_ws/devel/setup.bash" >> ~/.bashrcsource ~/.bashrc
- zsh终端:
echo "source ~/Vision_ws/devel/setup.zsh" >> ~/.zshrcsource ~/.zshrc
- bash终端:
- 在ROS中测试相机节点
roslaunch realsense2_camera rs_camera.launch
本文详细记录了在Ubuntu 18.04系统中配置Intel D435i深度相机的SDK,包括更新内核、安装依赖、编译SDK、解决运行问题以及安装ROS1和ROS2的Wrapper。过程中提到了版本匹配问题,以及遇到的USB连接和相机驱动错误的解决方法。
3140





