cartographer理解与代码框架
由于cartographer最近进行了一次改动,对之前的cartographer的代码进行了调整,特此记录
一、按着框架来看程序的话,首先是传感器数据,这些统一在源码的sensor包里,包括imu,odometry,激光,fixed frame
- 首先是激光数据,cartographer对他进行了体素滤波,更确切点是自适应体素滤波,体素滤波是为了后面的自适应体素滤波提供了一个接口,体素滤波在sensor/internal里面(具体就是给定一定值的激光范围,然后给定这个范围内的激光点云数据的最小值,通过不断缩小体素范围长度,达到这个要求,从而得到滤波的效果,具体数值在配置文件里面)。
滤波之后的激光数据一是被送入了局部slam里面进行扫描匹配,具体文件在mapping/internal/2d/scan_matching/real time CSM,
二是被送入了位姿插值器里面,用来进行推测位姿 - 里程计数据,并没有进行特别的处理,直接就被位姿插值器调用了,它的定义再sensor包里面,被调用是在mapping/pose_extrapolator里面。
- Imu数据,同样定义是在sensor包里面,后面经过mapping/imutracker调用,在imutracker里面通过计算重力在各个方向上的分量,计算出各轴的加速度。然后把数据给到mapping/pose_extrapolat