第二章 传感器数据处理I:轮式里程计运动模型及标定
里程计:
https://blog.csdn.net/zhu751191958/article/details/79322364?utm_source=blogxgwz2
里程计又包含2 个方面的信息:
一、是位姿(位置和转角),即(x,y,θ)
二、是速度(前进x、y速度和转向速度)。
- 运动解算:绕中心运动
- 运动解算:圆弧运动
- 里程计递推公式
- 最小二乘解
里程计标定的意义:里程计系统误差的三个主要来源为:
- “左右轮实际直径与标称直径的偏差”:会导致直线运动的距离误差。
- “左右轮实际间距与标称间距的偏差”:会导致旋转运动的方向误差。
- “两轮子直径的实际平均值与标称平均值不相等”:将同时影响直线运动和旋转运动
- 经过标定,里程计的精度可到0.3%。
主要基于两轮差速底盘 (九成AGV应用使用差速轮);
在SLAM领域一般都是使用超定方程组,无解,需要使用最小二乘法求解线性拟合方程。
在线性空间有如PPT所示的通解;
求出和b向量最近的向量,在S线性空间中找b向量的投影b*(最小二乘解)。
a垂直于b:a点乘b等于0;a的转置矩阵乘b等0;
下图为最小二乘法在线性空间的通解:
- 里程计的标定:直接线性、基于模型
分类:直接线性方法、基于运动学模型方法(差速轮、万向轮等)
1、直接线性方法:通用性强、实现简单、精度不高;
2、基于运动学模型方法:精度高、实现复杂、特异性强(只能用于当前运动学模型)。
- 里程计标定内容:
内参: 把传感器内自身要调节的参数,,比如前面作业中里程计模型的两轮间距与两个轮子的半
径。
外参: 传感器之间的信息称为外参,比如里程计与激光雷达之间的时间延迟,位姿变换(旋转矩阵)等。
直接线性方法:
- 参考资料:https://blog.csdn.net/shoufei403/article/details/102877299
- eigen库函数基本用法:https://blog.csdn.net/u012541187/article/details/53420432
- Eigen库函数:http://eigen.tuxfamily.org/dox/group__TopicLinearAlgebraDecompositions.html
- AX=b线性方程组求解问题:https://www.cnblogs.com/wangxiaoyong/p/8977343.html
- 注意点:
- 每一帧激光数据的位姿变化都是基于上一帧激光自身的坐标系变换。
- 论文以激光pose为准,那么就要求激光pose尽量能准确估计出机器人的运动变化,所以最好在建完图之后取全局优化之后的激光pose(关键帧数据太少的话,建议取全部帧激光数据),此时的激光pose已经经过大闭环和全局优化了,位姿比较精确。
- 里程计数据直接取原始数据就行(比如里程计ticks或者累积位移也可以)。
- 在将数据喂给算法之前,要将激光pose数据与里程计数据进行时间戳对齐。
- 标定数据采集方法:原地左右各转三圈,然后向前直行3m (或5m,或10m),然后原地旋转180°直行回到原地。原地旋转是为了标轮距,直行为了标轮半径。
- 校准时需要在环境特征多的地方。如果在长的走廊里,激光数据计算得到的里程增量是不准的。
基于运动学模型方法 :
目的: