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

Jetson Nano + 双目摄像头:从零到一跑通ORB_SLAM2的完整避坑指南(Ubuntu 18.04)

Jetson Nano + 双目摄像头:从零到一跑通ORB_SLAM2的完整避坑指南(Ubuntu 18.04)

当你第一次拿到Jetson Nano和双目摄像头时,那种既兴奋又忐忑的心情我完全理解。作为一个在SLAM领域摸爬滚打多年的开发者,我深知从零开始搭建ORB_SLAM2环境的痛苦——那些莫名其妙的报错、漫长的编译等待、标定参数的困惑,每一个坑都可能让你浪费数天时间。本文将带你避开所有我踩过的坑,用最短的时间让ORB_SLAM2在你的设备上跑起来。

1. 系统准备与环境配置

1.1 基础系统安装

拿到Jetson Nano后,第一步是准备一张至少32GB的高速TF卡(建议使用UHS-I及以上规格)。官方推荐的Ubuntu 18.04镜像可以从NVIDIA开发者网站下载,使用Etcher等工具烧录到TF卡。

几个关键注意事项:

  • 电源选择:务必使用5V/4A的电源适配器,USB供电可能导致编译过程中系统崩溃
  • 散热方案:建议安装散热风扇,长时间高负载运行温度可能超过80℃
  • 显示设置:首次启动建议连接HDMI显示器,后续可通过SSH远程操作
# 检查系统信息 cat /etc/nv_tegra_release uname -a

1.2 系统优化配置

系统首次启动后,有几个关键配置需要立即调整:

  1. 关闭休眠:默认5分钟休眠会中断长时间编译

    sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
  2. 更换软件源:Jetson Nano的ARM架构需要使用专用源

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i 's/ports.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list sudo apt update
  3. SWAP扩展:4GB内存可能不足,建议增加4GB交换空间

    sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

2. ROS Melodic安装与配置

2.1 基础安装

Jetson Nano上的ROS安装有几个特殊注意事项:

# 设置ROS源 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update # 安装完整桌面版(约40分钟) sudo apt install ros-melodic-desktop-full

2.2 解决常见问题

问题1sudo rosdep init失败

# 先安装python-rosdep2 sudo apt install python-rosdep2 # 然后手动初始化 sudo rosdep init rosdep update

问题2:网络超时

  • 尝试更换手机热点
  • 或使用国内镜像源:
    export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index.yaml

2.3 环境配置

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc # 测试安装 roscore &

3. ORB_SLAM2依赖安装

3.1 Pangolin安装

Pangolin是ORB_SLAM2的可视化工具,安装时最容易出问题:

sudo apt install libglew-dev libpython2.7-dev git clone https://gitee.com/mirrors/Pangolin.git cd Pangolin mkdir build cd build cmake -DCPP11_NO_BOOST=1 .. make -j4 sudo make install

常见错误解决

  • 如果编译卡在60%,尝试减少线程数:make -j2
  • 缺少Eigen3:sudo apt install libeigen3-dev

3.2 OpenCV 3.4.1编译

ORB_SLAM2对OpenCV版本有严格要求,建议使用3.4.1:

wget -O opencv-3.4.1.zip https://github.com/opencv/opencv/archive/3.4.1.zip unzip opencv-3.4.1.zip cd opencv-3.4.1 mkdir build cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. make -j4 # 约3小时 sudo make install

加速技巧

  • 使用-j4参数充分利用Jetson Nano的4核CPU
  • 如果编译失败,删除build目录重新开始

4. ORB_SLAM2编译与调试

4.1 源码获取与准备

cd ~/catkin_ws/src git clone https://gitee.com/mirrors_raulmur/ORB_SLAM2.git ORB_SLAM2 cd ORB_SLAM2 chmod +x build.sh

4.2 解决编译错误

错误1:usleep未声明 解决方法:在以下文件头部添加#include <unistd.h>

Examples/Monocular/mono_euroc.cc Examples/Monocular/mono_kitti.cc Examples/Monocular/mono_tum.cc Examples/RGB-D/rgbd_tum.cc Examples/Stereo/stereo_euroc.cc Examples/Stereo/stereo_kitti.cc src/LocalMapping.cc src/LoopClosing.cc src/System.cc src/Tracking.cc src/Viewer.cc

错误2:OpenCV版本不匹配

# 检查链接的OpenCV版本 pkg-config --modversion opencv # 如果显示4.x版本,需要修改CMakeLists.txt

4.3 ROS支持编译

chmod +x build_ros.sh export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS ./build_ros.sh

5. 双目摄像头配置与标定

5.1 摄像头驱动安装

对于CSI接口的双目摄像头,推荐使用jetson_nano_csi_cam_ros驱动:

cd ~/catkin_ws/src git clone https://github.com/rt-net/jetson_nano_csi_cam_ros.git sudo apt-get install gstreamer1.0-tools libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev git clone https://github.com/ros-drivers/gscam.git cd ~/catkin_ws catkin_make

5.2 摄像头标定实战

双目标定是SLAM精度的关键,这里给出关键参数解释:

参数名含义典型值范围
fx, fy焦距(像素单位)200-800
cx, cy主点坐标图像宽高的一半
k1, k2径向畸变系数-0.1~0.1
p1, p2切向畸变系数-0.01~0.01
baseline双目基线长度(米)0.05-0.12

标定结果示例(EuRoC.yaml):

%YAML:1.0 Camera.type: "PinHole" # 相机1参数 Camera1.fx: 435.123 Camera1.fy: 435.123 Camera1.cx: 320.5 Camera1.cy: 240.5 Camera1.k1: -0.123 Camera1.k2: 0.045 Camera1.p1: 0.001 Camera1.p2: -0.003 # 相机2参数(与相机1相同) Camera2.fx: 435.123 Camera2.fy: 435.123 Camera2.cx: 320.5 Camera2.cy: 240.5 Camera2.k1: -0.123 Camera2.k2: 0.045 Camera2.p1: 0.001 Camera2.p2: -0.003 # 外参 Camera2.T_cn_cnm1: !!opencv-matrix rows: 4 cols: 4 dt: f data: [1,0,0,-0.12, 0,1,0,0, 0,0,1,0, 0,0,0,1]

5.3 运行ORB_SLAM2

# 启动摄像头 roslaunch jetson_dual_csi_cam jetson_dual_csi_cam.launch # 运行ORB_SLAM2 rosrun ORB_SLAM2 Stereo \ PATH_TO_VOCABULARY/ORBvoc.txt \ PATH_TO_SETTINGS_FILE/EuRoC.yaml \ false

性能优化技巧

  • EuRoC.yaml中降低图像分辨率
  • 修改ORB特征点数量(默认2000可降至1000)
  • 关闭不必要的可视化输出

6. 实战问题排查指南

6.1 常见错误与解决方案

错误现象可能原因解决方案
编译卡死内存不足增加swap空间,使用make -j2
usleep未声明缺少头文件添加#include <unistd.h>
标定参数不匹配yaml格式错误检查缩进和数据类型
摄像头无法启动驱动问题检查/dev/video*设备节点
轨迹漂移严重标定不准确重新标定,检查baseline值

6.2 性能监控与优化

# 监控CPU/GPU使用情况 tegrastats # 监控温度 cat /sys/class/thermal/thermal_zone*/temp

关键性能指标

  • ORB特征提取:~30ms/帧
  • 位姿估计:~20ms/帧
  • 整体帧率:10-15FPS(640x480分辨率)

记得第一次成功运行ORB_SLAM2时,看着实时构建的地图和轨迹,那种成就感至今难忘。虽然过程曲折,但每一个坑都让我对SLAM系统有了更深的理解。现在你有了这份指南,应该能少走很多弯路。如果遇到文中未覆盖的问题,不妨检查ROS话题是否正常发布,或者尝试降低系统负载——有时候最简单的重启就能解决奇怪的问题。

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

相关文章:

  • 2026广东超易洁金丝绒瓷砖品牌推荐:防脱落瓷砖品牌优选指南 - 栗子测评
  • K近邻算法原理与实践:从基础到优化
  • 从Bootloader设计到APP跳转:深入理解STM32内存映射如何影响你的实际项目
  • 从依赖关系到执行序列:有向无环图(DAG)与拓扑排序的实战解析
  • 天梯赛L2进阶:结构体排序与STL容器的实战抉择
  • Praat基频分析结果存疑?手把手教你用窄带谱图和倒谱进行交叉验证
  • ARMCC退役倒计时:如何在Keil5.37+环境强行使用AC5编译器(避坑指南)
  • 2026年3月有足弓支撑的护士鞋生产厂家口碑推荐,护士鞋哪个好,缓震效果好,减轻脚部负担压力 - 品牌推荐师
  • 从Wi-Fi路由器到宙斯盾:聊聊有源相控阵雷达(AESA)的‘T/R组件’到底牛在哪?
  • C++实战:利用xlnt库构建自动化Excel报表系统
  • 开源AI专家团队项目:构建模块化、可组合的虚拟协作工作流
  • 3种高效方案解决TranslucentTB开机自启动难题:Windows任务栏美化工具完全指南
  • 用Deeplabv3在Cityscapes上做语义分割:从数据预处理到可视化测试的全流程保姆级教程
  • 【C++26合约编程权威指南】:2026年唯一经ISO WG21草案验证的生产级实战手册(含12个工业级断言迁移案例)
  • 2026年兰州正规装饰机构实测盘点:5家合规服务商解析 - 优质品牌商家
  • 2026浙江铝单板厂家盘点:润达铝业带你了解实力冲孔雕花/热转印木纹/氟碳喷涂/别墅外墙装饰靠谱厂家 - 栗子测评
  • 2026佛山一线陶瓷品牌有哪些?广东新一线陶瓷品牌榜单盘点 - 栗子测评
  • 消息队列-RabbitMq
  • 车载HMI开发必看:VSCode+QNX SDP 7.1+EB tresos深度集成实战(官方未公开的gdb-server多核调试秘技)
  • 深度学习中批标准化技术的原理与实践
  • GNSS数据处理避坑指南:为什么你的RTK解算总失败?从o文件和nav文件的常见错误说起
  • 别再傻等串口发送了!STM32 HAL库中断发送HAL_UART_Transmit_IT保姆级避坑指南
  • 2026年可调激光器光源主流品牌排行及核心能力解析:波长可调谐激光器,点光源,窄线宽激光器,排行一览! - 优质品牌商家
  • 2026选连接器不踩坑!格瑞达储能连接器、防水连接器工厂实力盘点,解答叉车、AGV、电源锂电池 pack、大电流连接器哪 - 栗子测评
  • 从特雷门琴到万物互联:一文读懂RFID技术的前世今生与未来
  • 高速数字系统信号完整性挑战与解决方案
  • VSCode国产化配置黄金清单:工信部推荐的6项强制合规项、8项等保2.0达标配置及2个零信任接入模板
  • JDK异常处理No appropriate protocol
  • 2026年推荐哈尔滨PE管/哈尔滨PE给水管源头工厂推荐 - 品牌宣传支持者
  • 数据缺失值统计填补技术详解与实践指南