由于树莓派4B (arm64架构) 无法使用 Intel 官方提供的 amd64 预编译包,只能通过源码编译的方式获得完整功能的 Intel RealSense SDK。
bashdpkg --print-architecture
basharm64下面是在树莓派4B(Ubuntu 22.04 Jammy arm64)上从源码编译安装 librealsense 的标准步骤。
(一)准备工作
1. 更新系统并安装编译依赖
bash
sudo apt update
sudo apt upgrade -y
sudo apt install -y git cmake libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev \
libglfw3-dev libgl1-mesa-dev libopengl0
安装一些系统包:
bash
sudo apt install nlohmann-json3-dev
bash
sudo apt install -y libcurl4-openssl-dev
安装当前运行内核的头文件:
bash
sudo apt install -y linux-headers-$(uname -r)
2. 增大 swap(可选但推荐,树莓派内存有限)
(1)确认当前 swap 状态
bash
free -h
swapon --show
如果输出为空或很小,说明需要增加 swap。
(2)创建一个 2GB 的 swap 文件
创建文件(2G,块大小1M,共2048块):
bash
sudo fallocate -l 2G /swapfile
如果 fallocate 不支持(某些文件系统),改用 dd:
bashsudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
(3)设置正确的权限
bash
sudo chmod 600 /swapfile
(4)格式化为 swap 并启用
bash
sudo mkswap /swapfile
sudo swapon /swapfile
bash
total used free shared buff/cache available
Mem: 7.6Gi 989Mi 5.1Gi 43Mi 1.5Gi 6.4Gi
Swap: 1.0Gi 0B 1.0Gi
bash
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -2
(5)永久生效(开机自动挂载)
bash
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
验证:
bashfree -h现在应该能看到 Swap 行显示 2G 可用。
3. 配置DNS
网络存在 DNS 解析问题:能够 ping 通 baidu.com 和 8.8.8.8,但无法解析 github.com。这通常是因为 DNS 服务器未返回 github.com 的正确 IP 地址(可能被污染或配置异常)
方法一:临时修复 DNS(推荐)
修改 /etc/resolv.conf 使用公共 DNS:
bash
sudo nano /etc/resolv.conf
将内容改为:
bash
nameserver 114.114.114.114
nameserver 8.8.8.8
保存后立即生效。
方法二:永久修改 DNS(防止重启丢失)
编辑 /etc/systemd/resolved.conf:
bash
sudo nano /etc/systemd/resolved.conf
取消注释并修改:
bash
[Resolve]
DNS=114.114.114.114 8.8.8.8
然后重启服务:
bash
sudo systemctl restart systemd-resolved
这样应该能够解决因为DNS污染造成的连接网站超时,无法拉取下载源码的问题。如果还是无法改善,可以尝试更换网络或者等一会再尝试。
二、下载并编译 librealsense
1. 克隆仓库
bash
git clone https://github.com/IntelRealSense/librealsense.git
cd librealsense
切换到稳定版标签(例如 v2.56.4,可根据需要或者选择最新):
bash
git checkout v2.56.4
2. 准备 udev 规则
复制 udev 规则文件:
bash
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger
3. 配置并编译
bash
mkdir build && cd build
bash
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_EXAMPLES=true \
-DBUILD_GRAPHICAL_EXAMPLES=true \
-DBUILD_PYTHON_BINDINGS=false \
-DFORCE_RSUSB_BACKEND=false \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DBUILD_LIBCURL=OFF
说明 :FORCE_RSUSB_BACKEND=false 使用内核模块(推荐),true 则使用 USB 直通模式(无需内核模块)。树莓派内核通常已包含必要的 UVC 驱动,两种方式均可,但内核模块性能更好。
说明 :FORCE_PYTHON_BINDINGS=false 不使用关连python,true 则关连python。需要额外安装 libpython3-dev 和 pybind11。
bashsudo apt install python3-dev pybind11-dev
bashcmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_EXAMPLES=true \ -DBUILD_GRAPHICAL_EXAMPLES=true \ -DBUILD_PYTHON_BINDINGS=true \ -DFORCE_RSUSB_BACKEND=false \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DBUILD_LIBCURL=OFF可以使用python编程调用深度相机。
4. 编译
bash
make -j4
如果运行压力较大(内存不足),可以换为:
bash
make -j2
5. 安装
编译成功后:
bash
sudo make install
如果编译了内核模块,还需加载它:
bashsudo apt update sudo apt install v4l2loopback-dkms加载:
bashsudo modprobe v4l2loopback sudo depmod -a验证加载:
bashlsmod | grep v4l2loopback如果看到类似输出,说明加载成功:
bashv4l2loopback 28672 0 videodev 237568 1 v4l2loopback设置开机自动加载(可选):
bashecho "v4l2loopback" | sudo tee -a /etc/modules echo "options v4l2loopback devices=2 video_nr=10,11" | sudo tee /etc/modprobe.d/v4l2loopback.conf
配置动态链接库:
bash
sudo ldconfig
6. 验证安装
运行 realsense-viewer:
bash
realsense-viewer
或
bash
rs-enumerate-devices
三、常见问题与解决
(1) 编译失败提示 "CMAKE_CXX_COMPILER not found"
安装 build-essential:
bash
sudo apt install build-essential
(2)运行时找不到设备
检查 udev 规则是否生效:重新插拔相机。
查看设备权限:
bash
ls -l /dev/bus/usb/*/*
确保当前用户在 plugdev 或 video 组:
bash
sudo usermod -a -G plugdev $USER
sudo usermod -a -G video $USER
然后注销重新登录。
(3)编译内核模块时提示 "No rule to make target 'modules'"
说明您没有选择编译内核模块。可以忽略,直接使用 FORCE_RSUSB_BACKEND=ON 重新编译(不需要内核模块):
bash
cd build
rm -rf *
cmake .. -DFORCE_RSUSB_BACKEND=true
make -j4
sudo make install
