- 整体框架
分为ROS和算法两部分。ROS实现sensor数据的采集,及地图和点云数据的显示。
2. 算法框架
算法主要分为四个部分,input sensor,PoseExtrapolator,Local SLAM,Global SLAM。
3. 位姿推测器
三个tracker:
Imu_tracker, 用imu角速度数据,更新姿态。
Odometry_imu_tracker, 用码盘数据,分别计算线速度与角速度。
Extrapolation_imu_tracker, 用local map中scan matching输出的pose序列,分别计算线速度与角速度。
三者之间松耦合。
线速度优先级:Odometry_imu_tracker>Extrapolation_imu_tracker
角速度优先级:Imu_tracker>Odometry_imu_tracker>Extrapolation_imu_tracker
工作原理:
预测位姿时的4种情况 都是匀速模型
i 使用imu, 使用里程计
平移的预测: 通过里程计数据队列开始和末尾的2个数据计算出的线速度乘以时间
姿态的预测: 通过imu的角速度乘以时间
ii 使用imu, 不使用里程计
平移的预测: 通过pose数据队列开始和末尾的2个数据计算出的线速度乘以时间
姿态的预测: 通过imu的角速度乘以时间
iii不使用imu, 使用里程计
平移的预测: 通过里程计数据队列开始和末尾的2个数据计算出的线速度乘以时间
姿态的预测: 通过里程计数据队列开始和末尾的2个数据计算出的角速度乘以时间
iv 不使用imu, 不是用里程计
平移的预测: 通过pose数据队列开始和末尾的2个数据计算出的线速度乘以时间
姿态的预测: 通过pose数据队列开始和末尾的2个数据计算出的角速度乘以时间
4. Local SLAM
4.1 点云
点云数据用vector存储,一个点数据包含其位姿和时间。
4.2 激光帧
最下面重合的部分会drop掉。同一线的激光,为啥会有重合。Cartography记录时间,是用等距计数加一的方式。
点云畸变校正:
4.3 体素滤波
立方体内多个点,随机选一个点作为代表。
自适应:
Max range 距离原点最大的距离。大于这个的点加到misses里。
Max_length,立方体最大的边长。
Min_num_points, 最少的点,也就是目标点。
自适应的目的,就是用二分法,选取一个最小的边长立方体,使其点云数目接近Min_num_points(上一次个数比它少,再二分一次就比他多了)。
4.4 Submap
有两个submap,一个用于匹配,一个用于更新。N = 90。
4.5 栅格地图
采用概率栅格地图。
4.6 Scan to Map
5. Global-SLAM
分支定界法,在此处的应用原理,请查看如下博客。 【精选】【cartographer】(2)分枝定界算法_cartographer 分支定界_EchoChou428的博客-CSDN博客