大家好,我是11jzzz。如果你点开了这篇文章,那么你很可能和我一样,在今天2025年6月份要使用T265这个比较早的轨迹摄像头,在尝试让Intel RealSense T265相机在Ubuntu和ROS环境下工作时,经历了2天的血泪史:
apt
告诉找不到旧版本的librealsense
roslaunch
不到librealsense2.so.2.50
动态库- 尝试给内核打补丁,结果被告知内核版本太新,不支持
realsense-viewer
里空空如也,连相机的影子都看不到。
在经历了几乎所有能踩的坑之后,我终于摸索出了一条绝对稳定、可靠的道路。今天,我想把这个过程分享出来,让大家少走一些弯路。
结论:能够运行的版本,使用的是2.50.0版本的Intel® RealSense™ SDK 2.0 (v2.50.0)
其实文档说明2.50.0之后到2.53.1的版本都支持T265,但是经过过我实测,我这里不行。后续的apt-install的ros-realsense只支持的是2.50.0,当然自己下源码编译对应2.53.1的版本应该也性,大家可以参考这篇博客,把对应库的关系说明的很清楚:
realsense-viewer 不识别 T265——Realsense SDK 在 v2.54.1 版本以后不再支持T265相机的解决办法_realsense viewer-CSDN博客
问题的根源:
- ROS Noetic的官方依赖很“旧”:通过
apt
安装的ros-noetic-realsense2-camera
包,是被编译来依赖一个旧版本(比如v2.50)的librealsense
驱动的。当然你可以自己下源码然后手动编译,但是你得好好看下github上的更新日志,看看是否支持你想用的型号。 - Intel的
apt
源很“新”:官方的apt
软件源可能已经不再提供那些旧版本的驱动下载,导致你想将就ROS却找不到对应的旧驱动。 - 我们的系统环境很“新”:Ubuntu 20.04的内核在不断更新,这让那些需要特定内核版本的官方“打补丁”脚本直接失效,给我们造成了极大的困惑。这里说明的是,我开始使用的是2204的ubuntu主机和20.04的docker,但是后来为了避免不是原声系统导致的兼容性问题,才换到了ubuntu原生系统20.04,现在看来应该是我当时没有注意到各个依赖库间的版本关系导致的错误,后续有机会我会在出一篇使用20.04的docker的过程分享。
最终的解决方案:源码编译
我们的想法:
- 先编译安装底层的
librealsense
驱动,让系统能最纯粹地识别到相机。 - 再编译
realsense-ros
包,让它在编译时自动链接到我们刚刚装好的驱动上。
这样一来,版本就完美统一了。下面是详细的步骤。
第一阶段:奠定基石 —— 编译并安装librealsense
SDK (v2.50.0)
第0步:拥有一个“干净”的开始
卸载了所有之前尝试安装的RealSense包,避免任何潜在的冲突。
# 这个命令会查找所有已安装的realsense相关包并彻底清除它们
sudo dpkg --purge $(dpkg -l | grep "realsense" | cut -d " " -f 3)
# 顺便清理一下你之前可能下载的源码包(如果需要的话)
# rm -rf ~/librealsense-2.53.1 等
第1步:安装编译依赖
sudo apt-get install libssl-dev libusb-1.0-0-dev libudev-dev pkg-config libgtk-3-dev cmake
sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev at
第2步:下载并编译 v2.50.0 源码
自己去GitHub的Releases页面下载librealsense-2.50.0.tar.gz
源码包并解压。
# 假设你已经解压,现在进入源码目录
cd ~/librealsense
# 创建一个独立的build目录,这是个好习惯,能让源码目录保持干净
mkdir build
cd build
# 运行CMake进行配置,它会检查依赖并生成编译文件
# -DBUILD_EXAMPLES=true 会把realsense-viewer等好用的工具也一起编译
cmake ../ -DBUILD_EXAMPLES=true
# 开始编译!-j后面跟的数字是你的CPU核心数,可以加快速度
make -j4
# 将编译好的库和工具安装到系统中(主要是/usr/local/lib和/usr/local/bin)
sudo make install
第3步:配置UDEV规则
源码安装不会自动帮你设置USB设备权限,我们需要手动完成这一步。这一步也代替了那些会报错的内核脚本。
# 回到源码根目录
cd ~/librealsense
# 复制规则文件到系统目录
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
# 让规则立即生效
sudo udevadm control --reload-rules && sudo udevadm trigger
第4步:验证
拔掉你的T265相机,再重新插上:
realsense-viewer
当realsense-viewer
的图形窗口弹出,并且在左侧边栏清晰地显示出“Intel RealSense T265”时,说明成功。
第5步:装realsense-ros
sudo apt install ros-noetic-realsense2-camera
为了能够版本对应,我们前面才会选择安装2.50.0,因为realsense-ros支持。
第6步:
source
一下,然后一个终端启动roscore,另其一个终端,source并conda后即可顺利启动,
roslaunch realsense2_camera rs_t265.launch
list节点可以看到:
(FlexUMI) demo@demo-20-04:~/FlexUMI-master$ rosnode list
/camera/realsense2_camera
/camera/realsense2_camera_manager
/rosout