经典的SLAM模型是由一个运动方程和一个观测方程构成的,如下图所示:
其中:x_k为机器人的状态,z为机器人的观测数据,u_k为控制数据,y_j观测点,w和v分别为运动噪声和观测噪声。f为运动方程,h为观测方程。
- 控制数据是机器人记录自身运动的传感器获取的数据,比如IMU中的陀螺仪可以测量角速度、加速度计可以测量运动的加速度。
- 测量数据则是机器人记录环境信息的传感器获取的数据,比如相机可以将环境转化为二维的图像像素、激光雷达捕捉环境中的信息生成点云。
SLAM问题旨在解决两个问题,一个是定位,一个是建图,因此一般来说SLAM的运动模型中运动方程是求解姿态即定位问题,观测方程是求解地图点即建图问题。(在具体的情境下,含义不尽相同,观测方程也不一定是为了求解建图问题。)
下面举两个示例来解释上面SLAM模型的含义。
- 1.当机器人携带雷达和imu运动时,以LIO-SAM为例:
此时,u_k控制数据为imu数据和lidar数据,f运动方程为imu的预积分以及ICP通过非线性优化求解位姿的过程,z观测数据为lidar的原始数据,y_j观测点即lidar点云的世界坐标系坐标,h观测方程就是lidar坐标系到世界坐标系的转化方程。
- 2.当机器人携带相机运动时,以ORB-SLAM2为例:
当ORB-SLAM2处于恒速跟踪模型时,u_k控制数据是图像帧(图像像素),f运动方程是恒速模型以及通过图像帧求解位姿的方程,z观测数据为图像像素,y_i观测点为图像像素生成的地图点,h观测方程就是相机坐标系到地图坐标系的转换方程。