1. 香橙派编译librealsense的常见网络依赖问题最近在香橙派上折腾librealsense 2.55.1的编译遇到了不少坑。特别是网络依赖拉取失败的问题简直让人抓狂。相信很多小伙伴在嵌入式设备上编译时都遇到过类似情况今天我就把踩过的坑和解决方案详细分享给大家。香橙派作为一款性价比较高的开发板在计算机视觉领域应用广泛。但它的网络性能相比PC要弱一些这就导致在编译librealsense时经常会出现依赖项下载失败的情况。最常见的就是nlohmann/json和libcurl这两个依赖的拉取问题。我遇到的具体报错是这样的在运行cmake命令后系统尝试从GitHub克隆json库时失败报错信息包括gnutls_handshake() failed或者TLS connection was non-properly terminated。这些错误通常是由于网络连接不稳定或者TLS握手失败导致的。2. 手动下载并编译nlohmann/json2.1 问题现象与初步排查当执行cmake命令时首先会遇到类似这样的错误Cloning into json... error: RPC failed; curl 56 GnuTLS recv error (-9): Error decoding the received TLS packet. fatal: the remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed我尝试过网上常见的解决方案比如增大git的postBuffergit config --global http.postBuffer 524288000但这个方法对我的情况并没有帮助。考虑到香橙派的网络环境限制我决定采用手动下载和编译的方式绕过这个问题。2.2 手动编译json库的具体步骤首先我们需要手动下载json库的源码git clone https://github.com/nlohmann/json.git cd json mkdir build cd build cmake .. make sudo make install完成手动编译安装后我们需要修改librealsense的CMake配置使其不再尝试自动下载json库。具体操作如下进入librealsense源码目录下的CMake文件夹找到external_json.cmake文件注释掉其中关于git clone的相关内容将我们手动编译的json库复制到librealsense/build/external-projects目录下这样再次运行cmake时系统就会使用我们手动编译的json库而不会尝试从网络下载。3. 解决libcurl的编译问题3.1 libcurl的常见报错解决了json库的问题后接下来很可能会遇到libcurl的编译问题。常见的错误信息包括Cloning into libcurl... fatal: unable to access https://github.com/curl/curl.git/: gnutls_handshake() failed: Error in the pull function.或者SSL: certificate subject name (cloudflare-dns.com) does not match target host name github.com3.2 手动处理libcurl依赖与处理json库类似我们可以采用手动下载和编译的方式解决libcurl的问题首先手动下载libcurl源码git clone https://github.com/curl/curl.git cd curl mkdir build cd build cmake .. make sudo make install然后修改librealsense中的CMake配置找到external_libcurl.cmake文件注释掉其中关于git clone的部分将手动编译的libcurl库复制到指定位置这里有个细节需要注意除了build目录外还需要在third-party目录下放置一份libcurl的源码否则后续编译可能会失败。4. 完整的编译流程与注意事项4.1 准备工作与环境配置在开始编译前建议先确保系统已经安装了必要的依赖sudo apt-get update sudo apt-get install -y git cmake libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev对于香橙派还需要特别注意确保有足够的交换空间swap建议至少2GB编译时最好关闭其他占用资源的程序保持设备供电稳定避免因电压不稳导致编译中断4.2 分步编译指南以下是完整的编译步骤下载librealsense 2.55.1源码git clone -b v2.55.1 https://github.com/IntelRealSense/librealsense.git手动下载并编译依赖项json和libcurl如前文所述修改CMake配置文件禁用自动下载功能创建build目录并配置编译选项mkdir build cd build cmake ../ -DCMAKE_BUILD_TYPERelease -DBUILD_EXAMPLEStrue开始编译make -j$(nproc)安装sudo make install4.3 常见问题排查如果在编译过程中遇到问题可以尝试以下排查步骤检查依赖项是否完整安装确认手动编译的库是否安装到了正确位置查看CMake缓存是否清理干净有时需要删除build目录重新开始检查系统日志看是否有其他潜在问题5. ROS1与realsense_ros的兼容性问题5.1 版本匹配的重要性很多同学在香橙派上使用librealsense是为了配合ROS1运行realsense_ros驱动。这里要特别注意版本兼容性问题。librealsense 2.55.1与特定版本的realsense_ros才能良好配合。我个人的经验是librealsense 2.55.1最好配合较新版本的realsense_ros如果遇到imu数据不更新等问题很可能是版本不匹配导致的5.2 固件更新建议在完成驱动编译后建议检查并更新RealSense设备的固件。可以使用以下命令查看当前固件版本rs-fw-update -l如果需要更新可以使用rs-fw-update -f注意固件更新过程需要稳定的USB连接建议使用高质量的USB线缆。6. 性能优化与使用技巧6.1 香橙派上的性能调优在香橙派这类资源有限的设备上运行RealSense需要进行一些优化降低分辨率使用640x480而非更高的分辨率降低帧率30fps通常足够大多数应用关闭不需要的流如果只用RGB相机可以关闭深度流使用USB3.0接口确保获得足够的带宽6.2 实用调试技巧开发过程中这些命令可能会很有帮助查看设备信息rs-enumerate-devices测试彩色相机rs-color测试深度相机rs-depth7. 替代方案与备选建议如果经过多次尝试仍然无法成功编译可以考虑以下替代方案使用预编译的库有些社区提供了针对香橙派的预编译版本尝试更新的librealsense版本有时新版本修复了编译问题使用docker容器有人提供了包含完整环境的docker镜像不过从我的经验来看手动解决编译问题虽然耗时但能让你更深入地理解系统工作原理对后续的开发和调试都有帮助。