LSD-SLAM 完整安装教程(Ubuntu 20.04 + ROS Noetic + OpenCV)
前言
LSD-SLAM (Large-Scale Direct Monocular SLAM) 是慕尼黑工业大学 Jakob Engel 等人于 2014 年提出的直接法单目SLAM系统。它是直接法视觉SLAM的里程碑,开创性地使用半稠密深度估计在 CPU 上实时构建大尺度3D地图。DSO 就是在 LSD-SLAM 的基础上发展而来的。
GitHub: https://github.com/tum-vision/lsd_slam
论文:LSD-SLAM: Large-Scale Direct Monocular SLAM, Engel et al., ECCV 2014
1. 系统环境要求
| 项目 | 要求 | 说明 |
|---|---|---|
| 操作系统 | Ubuntu 16.04 / 18.04 / 20.04 | 本文以 20.04 + ROS Noetic 为例 |
| ROS | Kinetic / Melodic / Noetic | 必须 |
| OpenCV | 3.x(推荐 3.2) | 核心依赖 |
| 内存 | 8GB+ | 半稠密建图需要较大内存 |
| GPU | 无要求 | 纯CPU |
2. 依赖库全景图
LSD-SLAM ├── ROS —— 通信 + 可视化 + 相机驱动 ├── OpenCV 3.x —— 图像处理(注意:对 4.x 不兼容!) ├── Eigen3 —— 线性代数 ├── Boost —— C++ 工具库 ├── g2o(自带) —— 位姿图优化 ├── Pangolin(可选) —— 3D 可视化 └── Suitesparse —— 稀疏矩阵求解3. 安装步骤
# 第一步:安装 ROS Noeticsudosh-c'echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros-latest.list'sudoaptupdatesudoaptinstall-yros-noetic-desktop-fullecho"source /opt/ros/noetic/setup.bash">>~/.bashrcsource~/.bashrc# 第二步:安装基础依赖sudoaptinstall-ylibeigen3-dev libboost-all-dev libsuitesparse-devsudoaptinstall-ylibopencv-dev ros-noetic-cv-bridge# 第三步:创建工作空间mkdir-p~/catkin_ws/srccd~/catkin_ws/src# 第四步:克隆 LSD-SLAMgitclone https://github.com/tum-vision/lsd_slam.git lsd_slamgitclone https://github.com/tum-vision/lsd_slam.git lsd_slam_viewer# 第五步:编译cd~/catkin_ws catkin_make -j$(nproc)# 第六步:下载测试数据# LSD-SLAM 官方提供 .tgz 格式数据集wgethttp://vmcremers8.informatik.tu-muenchen.de/lsd/LSD_room.bz2 bunzip2 LSD_room.bz24. OpenCV 版本兼容性修复
LSD-SLAM 发布于 2014 年,需在 Ubuntu 20.04 的 OpenCV 4.x 上做适配:
# 常见问题:cv::Algorithm 接口变化# 需要在 CMakeLists.txt 中添加:set(CMAKE_CXX_STANDARD14)find_package(OpenCV4REQUIRED)5. 运行测试
# 启动 LSD-SLAMroslaunch lsd_slam_viewer viewer.launch roslaunch lsd_slam_core live_slam.launch camera:=/usb_cam# 播放数据集rosbag play LSD_room.bag--clock