编程(核心)
- C++: 面向对象编程、现代C++、数据结构与算法、编译器、CMake/Makefile/Ninja、设计模式、OpenCV C++
- C
- Git/GitHub
- OpenCV (opencv-python)
- Python: 深度学习、绘图、系统脚本
- Bash/Linux: ssh、命令行文本编辑器/Vim/tmux
- 数学库: Eigen、Ceres-solver/GTSAM/g2o
- C++/Python互操作: PyBind11、nanobind
- ROS/ROS2
- Docker
编程(可选 — 面向SLAM岗位的工程技能)
- 并发: SIMD-SSE/AVX/Neon、OpenMP、CUDA
- 边缘端部署: 学习型前端的TensorRT/ONNX导出、Jetson性能测试
- 移动端: Android(Java/Kotlin)、iOS(Objective-C/Swift)
- C#: Unity AR、Microsoft HoloLens
- CI/CD: GitHub Actions
- 仿真: Gazebo、Isaac Sim
图像处理
局部特征匹配
全局特征匹配
特征跟踪
多视图几何
外点剔除
- RANSAC、PROSAC、M-估计器(M-Estimator)、MAXCON、凸松弛
- 鲁棒位姿图优化: 可切换约束(Switchable constraints)、动态协方差缩放(DCS)、成对一致性最大化(PCM)
可证明最优算法
| 系统 | 作者/年份 | 关键概念 |
|---|---|---|
| SE-Sync | Rosen 2019 | 通过SDP+黎曼优化实现可证明的位姿图优化(arXiv 2016, IJRR 2019) |
| TEASER++ | Yang 2020 | 点云配准,对90%以上外点鲁棒,TLS+最大团(T-RO/RSS 2020) |
| GNC | Yang 2020 | 渐进非凸化(Graduated Non-Convexity),从凸优化连续过渡到鲁棒代价函数 |
| QUASAR | Yang 2019 | 可证明最优的旋转搜索(含外点的Wahba问题),四元数QCQP+SDP松弛 |
最小二乘优化
运动模型
观测模型
- 外部感知传感器: 相机、LiDAR
- 地标点(Landmark)(地图)
- 联合优化、最大似然估计与最大后验估计(MLE & MAP)
因子图优化
- 因子图: 将SLAM表示为变量(位姿、地标点)与因子(观测量)构成的二部图
- 将MAP推断表示为稀疏非线性最小二乘问题;变量消元与贝叶斯树(Bayes tree)
- 增量式平滑: iSAM / iSAM2
- **边缘化**与固定滞后平滑(fixed-lag smoothing)
- 参考文献: Dellaert & Kaess, Factor Graphs for Robot Perception (2017); GTSAM教程
高斯信念传播
| 系统 | 作者/年份 | 关键概念 |
|---|---|---|
| FutureMapping 1 | Davison 2018 | Spatial AI的计算结构,用于SLAM的高斯信念传播(GBP) |
| FutureMapping 2 | Davison 2019 | 将GBP作为Spatial AI的核心基础,GBP的可视化介绍 |
| BA on Graph Processor | Ortiz 2020 | 在Graphcore IPU上进行光束法平差,基于分块(tile)的并行化 |
| DANCeRS | Patwardhan 2025 | 基于GBP的机器人集群分布式共识 |
建图
传感器
- 相机设备: 广角/远心镜头、镜头MTF、CCD/CMOS、卷帘/全局快门、曝光/ISO、立体视觉、RGB-D、结构光、主动红外/ToF
- LiDAR → 视觉-LiDAR融合
- IMU → VIO
- RADAR → 传感器融合、扩展卡尔曼滤波器
- 声呐(Sonar)
- 多传感器标定: 相机-IMU、相机-LiDAR(Kalibr)
评估
- 评价指标: ATE(绝对轨迹误差)、RPE(相对位姿误差)
- 一致性: NEES(归一化估计误差平方)
- 数据集: KITTI、TUM RGB-D、EuRoC、TartanAir、TUM-VI、4Seasons、Hilti SLAM Challenge、Newer College、Project Aria
- 工具: evo(轨迹评估)