news 2026/4/25 4:30:35

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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话题是否正常发布,或者尝试降低系统负载——有时候最简单的重启就能解决奇怪的问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 4:29:15

麒麟Kylin OS 2303上,用KDE桌面共享实现远程办公(保姆级图文教程)

麒麟Kylin OS 2303上打造高效远程办公环境&#xff1a;KDE桌面共享全攻略 在国产操作系统逐渐成熟的今天&#xff0c;麒麟Kylin OS 2303以其稳定性和安全性成为越来越多政企用户的选择。而远程办公作为现代工作方式的重要组成部分&#xff0c;如何在麒麟系统上实现流畅的桌面共…

作者头像 李华
网站建设 2026/4/25 4:21:20

猫都能听懂的Stable Diffusion原理解析

1. Stable Diffusion是什么&#xff1f; 想象你有一杯清水&#xff0c;滴入一滴墨水。墨水会慢慢扩散&#xff0c;直到整杯水变成均匀的灰色——这就是**扩散&#xff08;Diffusion&#xff09;**的直观例子。Stable Diffusion的核心思想&#xff0c;正是模拟这种“从有序到无序…

作者头像 李华