Ubuntu 22.04LTS下安装D435i深度相机的驱动
D435i是intel realsense D400系列的一款深度相机。官方介绍:Intel realsense D435i
官方提供的Ubuntu安装SDK的方法:ubuntu安装SDK
Intel RealSense SDK各个版本的仓库:realsense sdk
内核降级
realsense sdk 虽然这个最新beta版本的SDK支持的Ubuntu kernel已经到了6.8,我的Ubuntu是22.04LTS,为了保险,我还是选择将我的6.8.0的kernel降级到5.15.0【这个看个人,可以不降级】
- 准备工作
- 查看在运行的Ubuntu kernel的具体版本信息【我一开始是6.8.0的,降级以后选择以5.15.0版本的内核启动,所以现在就显示5.15.0版本的了】:
uname -runame -a
- 查看已经安装的内核:
dpkg --list | grep linux-image
- 查看仓库中可用的内核版本
apt-cache search linux-image | grep generic
- 安装目标版本内核
一般所安装版本的Ubuntu支持的内核版本都会列出来【从最低到最高】,接下来就需要安装目标版本内核了
【最好是下面四个都安装上,将指令中的5.15.0-100替换成自己的目标版本号】:
sudo apt-get install linux-image-5.15.0-100-generic 【镜像】
sudo apt-get install linux-headers-5.15.0-100-generic 【内核】
sudo apt-get install linux-modules-5.15.0-100-generic 【内核模块】
sudo apt-get install linux-modules-extra-5.15.0-100-generic 【内核补丁】
如果目标版本内核没有在上述列表中列出,可以参考这个博客的case2:Linux更换内核版本
- 修改GRUB
安装目标版内核后,系统中就有多个版本的内核了,现在需要指定以某个版本的内核启动。【可以在开启虚拟机的时候,按ESC进入图形化界面选择…… 但是我按ESC没反应啊啊啊啊啊,所以就手动修改/etc/default/grub 文件了】
- 打开文件
# 查看当前 GRUB 默认启动项sudo grub-editenv list # 设置默认启动项(需修改 GRUB 配置)sudo nano /etc/default/grub
- 修改文件
上述命令能够打开并修改/etc/default/grub 文件【也可以在文件夹中找到,但是会提示Read-Only】,原始第一行是GRUB_DEFAULT=0
,修改为GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-100-generic"
,注意替换成自己的目标版本内核号。之后Ctrl+O保存并退出。
- 更新GRUB并重启
sudo update-grub
sudo reboot
再检查看看是否以指定版本内核启动~
安装驱动
安装Ubuntu系统的D435i相机的驱动,以及后续可能用到的ROS2相关的包,参考的这俩博客:
Ubuntu20.04LTS下安装Intel Realsense D435i驱动与ROS包
Ubuntu22.04 realsenseSDK2和ROS2Wrapper安装方法
本人菜鸡,还是选择APT安装吧,从github下载资源包安装操作还是有点为难我了……
- 先注册服务器公钥
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
- 将服务器添加到存储库列表中
sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
这样就能使用apt-get下载对应的安装包了
- 安装
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
- 选装
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
- 验证
realsense-viewer
如果能够启动realsense viewer就说明SDK安装完毕。 但是可能打开什么都没有,因为此时还没有连接相机。
安装uvcvedio
如果启动realsense viewer
命令行提示如下:
并且在终端输入lsmod | grep uvcvideo
后,什么都没有,说明缺少uvcvedio模块。
uvcvideo 是 Linux 内核中的一个 USB Video Class (UVC) 驱动模块,用于支持符合 UVC 标准 的 USB 摄像头设备。几乎所有现代 USB 摄像头(包括 Intel RealSense D435i)都遵循 UVC 协议,因此依赖 uvcvideo 驱动来正常工作。
手动安装:
sudo modprobe uvcvideo
再次输入lsmod | grep uvcvideo
验证:
此时再次验证realsense viewer
【此时还没有连接相机】:
连接相机
在Windows系统的电脑上,装的虚拟机,之后通过usb连接相机,是先连接到主机的。需要手动切换到虚拟机。 同时需要注意usb协议版本,D435i是支持的usb 3.x系列的。
- 设置虚拟机usb协议
VMware中选择虚拟机->点击设置->USB控制器
- 将D435i连接到虚拟机
在虚拟机的右下角的状态栏,应该能够看到有D435i的小图标,选择和主机断开,连接到虚拟机。
也可以从虚拟机的可移动设备查看,虚拟机是否连接上相机了。下面就是连接上了。
测试
再次启动realsense viewer,连接上相机之后会有画面:
再看看这个软件咋用啊……是干嘛的啊……
安装ROS包
后续通过ros2,接收、使用相机数据,需要安装对应的工具包:realsense-ros
有两种安装方法,均可参考官方提供的安装步骤:
方法一很简单,直接sudo apt install ros-humble-realsense2-*
即可。
之后通过ros发布相机数据:
ros2 run realsense2_camera realsense2_camera_node
查看ros topic,验证是否工作: