2. 环境总览:课程目标、硬件与软件栈
说实话,每次开始一个新项目,我最先做的不是写代码,而是先把环境理清楚。你想想看,如果连手里有什么工具、目标是什么都没搞明白,后面肯定到处踩坑。这一章咱们就把整个课程的蓝图铺开,看看要准备哪些硬件,软件栈长什么样。我个人习惯先把大框架搭好,再往里面填细节。
2.1 课程目标 —— 我们要搭出什么?
这门课的目标很直接:从零开始,在一台带摄像头的笔记本(或者树莓派)上,搭建一个能跑起来的视觉SLAM地图构建环境。不是只装几个库就完事,而是真正把传感器数据、特征提取、后端优化串成一条流水线。我记得自己刚学SLAM时,最痛苦的就是“每个库都会装,但一跑就崩”。所以这门课会带着你一步步验证,确保每个环节都通。
🎯 核心里程碑:
- 搭建 Ubuntu + ROS 底层系统
- 安装并验证 OpenCV、Eigen、Sophus、Pangolin
- 配置图优化库 g2o 或 Ceres(二选一,我建议都装)
- 用真实数据集跑通完整的视觉里程计(VO)
- 最终输出一张稀疏或半稠密的地图
说白了,学完这门课,你就能自己从零手写一个简化版的 ORB-SLAM 前端。嗯,这里要提醒一下:我们不追求工程级性能,但原理和流程必须完整。
2.2 硬件要求 —— 别被“高性能”吓到
很多同学一听到SLAM就觉得必须上 i9 + 独立显卡。其实不然。我带过的项目里,有在树莓派4B上跑通单目VO的。当然,体验上会卡一点,但学习完全够用。
| 硬件 | 最低配置 | 推荐配置 | 备注 |
|---|---|---|---|
| 笔记本电脑 | i5 第8代 / 8GB RAM | i7 第12代 / 16GB RAM | 带集成摄像头即可 |
| 树莓派 | 树莓派4B (4GB) | 树莓派5 (8GB) | 需 USB 摄像头或 CSI 接口 |
| 摄像头 | 720p USB 摄像头 | 全局快门 / 双目 | 笔记本自带摄像头也能用 |
| 存储 | 64GB 可用空间 | 128GB SSD | 数据集很占空间 |
💡 我的经验: 如果你用笔记本,记得把电源插上。SLAM 编译时 CPU 满载,电池撑不了多久。我曾经在咖啡厅用电池编译 g2o,结果编译到一半没电关机…… 嗯,从那以后我养成了编译前插电的习惯。
2.3 软件栈概览 —— 每一层都是什么角色?
整个软件栈就像叠罗汉,每一层负责一件事。我习惯从下往上理解:
从上图能看明白:Ubuntu 是地基,ROS 是血管,OpenCV/Eigen 提供数学和视觉能力,g2o/Ceres 负责优化,Pangolin 让你看到结果。我刚开始接触时,总觉得“装个ROS就行了”,后来才发现每个库都有自己别扭的地方。比如 Eigen 是纯头文件库,但版本不对会导致编译错误——这个坑我替你们踩过了。
2.4 各组件速览 & 避坑
- Ubuntu 20.04 —— ROS Noetic 的最佳搭档。别用 22.04,除非你想折腾 Docker。
- ROS Noetic —— 机器人界的“Linux”。它管理节点、话题、服务。我个人习惯把所有传感器驱动都包装成 ROS 节点。
- OpenCV 4.x —— 图像读取、特征提取、可视化。我建议从源码编译,这样能打开 contrib 模块。
- Eigen 3.4+ —— 矩阵运算的瑞士军刀。注意:Sophus 依赖 Eigen,版本要匹配。
- g2o / Ceres —— 图优化库。g2o 更直观,Ceres 更通用。我的建议是:先装 g2o 跑通流程,再试试 Ceres。
- Pangolin —— 3D 可视化。用来显示相机轨迹和地图点,比 Rviz 轻量。
⚠️ 我曾经踩过的坑: 装 g2o 时忘了安装依赖 libsuitesparse-dev,结果编译报错一长串,当时我还以为是编译器坏了…… 后来发现只要一行 sudo apt install libsuitesparse-dev 就搞定。所以后面每装一个库,我都会强调依赖检查。
2.5 本章小结 & 下一步
好了,现在你心里应该有数了:我们有一台带摄像头的电脑,目标是把 Ubuntu、ROS、OpenCV、Eigen、g2o/Ceres 这一整套环境跑通。别担心,我会把每个步骤掰开揉碎,包括那些文档里没写的“小窍门”。