当前位置: 首页 > news >正文

香橙派上编译librealsense 2.55.1:网络依赖拉取失败与手动编译的实战避坑

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/json

2.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的postBuffer:

git 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库。具体操作如下:

  1. 进入librealsense源码目录下的CMake文件夹
  2. 找到external_json.cmake文件
  3. 注释掉其中关于git clone的相关内容
  4. 将我们手动编译的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.com'

3.2 手动处理libcurl依赖

与处理json库类似,我们可以采用手动下载和编译的方式解决libcurl的问题:

  1. 首先手动下载libcurl源码:
git clone https://github.com/curl/curl.git cd curl mkdir build cd build cmake .. make sudo make install
  1. 然后修改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

对于香橙派,还需要特别注意:

  1. 确保有足够的交换空间(swap),建议至少2GB
  2. 编译时最好关闭其他占用资源的程序
  3. 保持设备供电稳定,避免因电压不稳导致编译中断

4.2 分步编译指南

以下是完整的编译步骤:

  1. 下载librealsense 2.55.1源码:
git clone -b v2.55.1 https://github.com/IntelRealSense/librealsense.git
  1. 手动下载并编译依赖项(json和libcurl),如前文所述

  2. 修改CMake配置文件,禁用自动下载功能

  3. 创建build目录并配置编译选项:

mkdir build && cd build cmake ../ -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=true
  1. 开始编译:
make -j$(nproc)
  1. 安装:
sudo make install

4.3 常见问题排查

如果在编译过程中遇到问题,可以尝试以下排查步骤:

  1. 检查依赖项是否完整安装
  2. 确认手动编译的库是否安装到了正确位置
  3. 查看CMake缓存是否清理干净(有时需要删除build目录重新开始)
  4. 检查系统日志,看是否有其他潜在问题

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,需要进行一些优化:

  1. 降低分辨率:使用640x480而非更高的分辨率
  2. 降低帧率:30fps通常足够大多数应用
  3. 关闭不需要的流:如果只用RGB相机,可以关闭深度流
  4. 使用USB3.0接口:确保获得足够的带宽

6.2 实用调试技巧

开发过程中,这些命令可能会很有帮助:

查看设备信息:

rs-enumerate-devices

测试彩色相机:

rs-color

测试深度相机:

rs-depth

7. 替代方案与备选建议

如果经过多次尝试仍然无法成功编译,可以考虑以下替代方案:

  1. 使用预编译的库:有些社区提供了针对香橙派的预编译版本
  2. 尝试更新的librealsense版本:有时新版本修复了编译问题
  3. 使用docker容器:有人提供了包含完整环境的docker镜像

不过从我的经验来看,手动解决编译问题虽然耗时,但能让你更深入地理解系统工作原理,对后续的开发和调试都有帮助。

http://www.jsqmd.com/news/601675/

相关文章:

  • 成都怕电器塞不进去,选全屋定制如何选择性价比高的品牌 - 工业推荐榜
  • 实战指南:基于快马平台生成Playwright动态新闻数据抓取脚本
  • 别再只用皮尔逊了!用Python实战距离相关系数,轻松搞定时间序列中的非线性关系
  • Pixel Dream Workshop实战教程:为像素RPG游戏生成动态天气效果图
  • SpringCloud Alibaba最新版避坑指南:如何优雅解决Nacos 9848端口占用问题
  • OpenClaw安全实践:Phi-3-vision-128k-instruct本地化部署权限管理指南
  • Phi-4-mini-reasoning完整指南:7.2GB模型开机自启+日志监控配置
  • 效率提升:用快马AI一键生成官网基础模板,告别重复编码
  • 2026年3月亲测:海底捞零食加盟攻略 - 界川
  • SIwave串扰分析保姆级教程:从Allegro文件导入到结果解读,手把手教你排查PCB信号问题
  • 革新性抖音直播数据采集工具:全场景弹幕抓取零代码解决方案
  • OpenHarmony 3.2 RK3568 GT911触摸屏驱动调试笔记:HCS配置详解与I2C/中断引脚初始化实战
  • WeChatMsg:数据自主权回归的创新方法
  • 告别混乱注释!Doxygen+Python最佳注释实践指南(含常见错误排查)
  • Codeforces Round 1066 E Adjusting Drones [CF 2157 E] O(n) 解法
  • FFmpeg drawtext滤镜进阶:除了时间水印,你还能用它玩出什么花样?(动态文本+多位置叠加)
  • AI深度学习中的数据流转与处理机制
  • 管件安全性齐全的厂家哪家性价比高 - myqiye
  • 保姆级教程:从CARLA录制到Autoware运行,手把手完成你的第一张自定义高精地图(附完整文件结构)
  • VibeVoice保姆级教程:从部署到实战,打造你的专属语音助手
  • 彻底解决Reloaded-II模组无限下载循环:5步诊断与系统修复指南
  • Windows 11 LTSC系统一键安装微软商店完整指南:告别功能残缺,重获完整应用生态
  • 三分钟学会永辉购物卡回收,超简单超划算! - 团团收购物卡回收
  • 利用快马AI快速生成ui-ux-pro-max级仪表盘交互原型
  • MacOS下Parallel Desktop显卡驱动失效?3步搞定Parallel Tools自动安装(附PD15实测)
  • 从亚稳态到稳定:Verilog异步复位同步释放的5个工程化处理技巧
  • 深入浅出kprobe:从原理到实战,手把手教你用ftrace追踪内核函数
  • 3DS游戏格式转换实战指南:从CCI到CIA的完整解决方案
  • 2026年氧氮氢分析仪生产厂家推荐:用途、趋势及采购维护全指南 - 品牌推荐大师
  • Python与Ollama API实战:从基础调用到高级应用