返回

树莓派安装 Intel RealSense Viewer 教程:解决编译错误

Linux

树莓派上安装 Intel RealSense Viewer 的挑战与应对

在树莓派上部署 Intel RealSense 深度摄像头,一个常见的障碍出现在 Intel RealSense Viewer 的安装阶段。这个问题特别容易发生在构建用于 RealSense SDK(即 librealsense)的 Python 绑定时。

问题:构建 Python 绑定失败

在编译过程中运行 python setup.py build --cpp_implementation 命令,构建 librealsense 的 Python 绑定。这时,开发者可能遇到构建错误。该错误可能伴随大量的日志输出。深层原因在于 C++ 代码使用了不完整的类型 PyFrameObject 和过时的函数 PyEval_CallObjectWithKeywords

深入探究根本原因,可以发现主要原因集中于版本不兼容性问题:

  • Python 版本: RealSense SDK 中的 pybind11 版本可能与树莓派系统中已安装的 Python 版本不匹配。PyFrameObject 类型的定义在 Python 3.9 中发生了变化。如果代码是针对 Python 3.8 或更早版本编写的,这种变化可能会导致编译失败。
  • pybind11 版本: RealSense SDK 可能需要特定版本的 pybind11。而系统中安装的版本可能不符合要求,从而导致上述错误。

解决方法:针对根源采取的行动

有多种方法来应对此挑战,下面列举了两个可以优先尝试的方法。

方案一:使用预构建的 debian 软件包

这是最方便的方法。安装预构建的软件包,不必手动编译代码。该方法规避了所有编译环节的问题。这依赖于是否存在适用于 Raspberry Pi OS 架构和 librealsense 版本的可用预构建软件包。

实施步骤:

  1. 添加仓库: 首先,将 Intel 的 RealSense 仓库添加到系统中。可以使用以下命令进行配置:

    echo 'deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo buster main' | sudo tee /etc/apt/sources.list.d/realsense-public.list
    

    添加成功后,用以下命令进行公钥设置:

    sudo apt-key adv --keyserver keys.gnupg.net --recv-key 6F3EFCDE
    
  2. 更新列表: 执行以下命令以刷新软件包列表:

    sudo apt update
    
  3. 安装 librealsense 和相关工具: 用以下命令,选择合适的软件包进行安装:

    sudo apt-get install librealsense2-dkms
    sudo apt-get install librealsense2-utils
    sudo apt-get install librealsense2-dev
    

    其中librealsense2-utils 包含了 RealSense Viewer。librealsense2-dev 包含了开发者需要使用的库和头文件。librealsense2-dkms可以保持 librealsense 在内核版本升级时保持正常运作。
    安装 librealsense2-dkmslibrealsense2-utils足以获得一个正常的realsense运行环境,如果要进行开发,需要再安装librealsense2-dev
    安装时,要仔细选择需要的组件。不是所有组件都是必需的。

  4. 验证安装: 通过运行 realsense-viewer 来验证是否安装成功。执行命令后,将启动图形用户界面,若配置成功,该图形界面将自动识别 RealSense 摄像头,并可预览来自各个摄像头的视频流。

安全说明: 从非官方源添加软件包仓库,应格外小心仓库的可信度。从官方渠道获取软件源,或对下载的软件包进行校验。这可以极大程度降低安全风险。

方案二:安装指定版本的 pip 包,并编译 librealsense。

利用 pip 为 RealSense SDK 构建特定版本的 Python 绑定。这可能解决版本兼容问题。pip安装 pyrealsense2的步骤无法避开编译安装 librealsense。该方案将两者联系起来,但提供了一条可靠的 pyrealsense2 的安装途径。

实施步骤:

  1. 安装依赖: pybind11需要依赖。可运行以下指令进行安装:

    sudo apt install python3-dev libpython3.X-dev  # "X" 指的是 Raspberry Pi OS 所搭载的Python主版本,例如可以填9
    
  2. 安装 pip 包: 安装特定版本(例如 2.50.0 版本,选择其他版本可以根据需要填入)的 Python 包,并对 librealsense 进行编译安装:

    pip3 install pyrealsense2==2.50.0 --no-cache-dir
    

    该命令安装 pyrealsense2 ,且使用了--no-cache-dir参数,这可以防止出现使用错误的构建缓存的问题。
    pip3是为Python 3设计的软件包管理器,务必按需进行版本检查。安装成功后可以使用realsense-viewer验证安装结果。

一些细节:

如果存在cmake 版本问题,升级cmake或手动配置。旧的 cmake 版本不支持最新 librealsense 使用的一些指令,使用时注意更新。

选择和推进

以上方案基于问题的核心原因,选择何种方法,取决于项目的时间和依赖管理策略。方案一提供了更简洁的操作,通过官方支持,省时省力。但方案二,对依赖和环境有更加灵活的控制权,可以按照不同的实际要求对版本等进行选择和配置,对版本定制提供了强有力的支撑。不管选择哪种方式,彻底地验证和测试都是确保成功的必要步骤。