智能机器人概论 03 运动传感器与位姿估计
运动传感器与位姿估计
里程编码器(测量距离)
基本原理:记录刻度数,测量转角(转动端相对于固定端的转角),转换为弧长(≈行驶里程)
实质测量的是转角
里程编码器误差:里程编码器测量的里程≠真实里程。本质上是轮子(装有里程编码器)里程≠车的里程
e.g.:一个轮子气多,一个轮子气少;地面凹凸不平;光滑地面/沙地
测量车轮行驶里程的里程编码器又称车轮编码器Wheel Encoder
编码器数据
数据文件:COMPort_X_20130903_195003.txt
格式(文本):E Millisecond 1 Count
Count:累计计数,[1,30000]
单位计数对应的里程数:1 Count ≈ 0.003846154 meter
- 数据有跳跃是因为测量帧率不够高
惯性传感器
陀螺仪、加速度计、惯性测量单元(Inertial Measurement Unit, IMU)
见 04 惯性传感器
位姿估计
利用运动传感器和运动模型,可以对机器人的位置姿态进行估计
里程计法(Odometry):
- 利用轮速编码器等传感器和运动学模型,估计帧间机器人位姿变化
- 此外,可用利用环境传感器,如视觉里程计Visual Odometry、激光里程计LiDAR Odometry
航位推算法(Dead Reckoning):
- 已知当前位姿,通过轮速编码器、惯性传感器等推算下一个时刻的估计机器人位姿
两种方法是紧密相关的,里程计法积分实质上就是航位推算法
机器人运动模型:运动模型 g 描述机器人在 t 时刻执行控制命令 ut 后从前一个状态 xt-1 转移到下一个状态 xt 的过程
里程计法(Odometry)
- 利用轮速编码器等传感器和运动学模型,估计帧间机器人位姿变化
Odometry已知δSl、δSr,求δxt
差速驱动机器人里程计模型:
航位推算法(Dead Reckoning)
已知当前位姿,通过轮速编码器、惯性传感器等推算下一个时刻的估计机器人位姿
通过轮速编码器得到δtrans,通过惯性传感器得到δrot。已知xt-1、δtrans、δrot,求xt
- 简化:机器人直线运动
- 简化:δrot1 = δrot2 = 0.5 * δrot
位姿估计的误差
- 造成误差原因:
- 简化的运动模型与计算
- 机器人运动模式的多样性
- 数据采集帧率不足
- 传感器误差
- 状态估计中的误差传播(误差积累)
- 简化的运动模型与计算
简化的航位推算法
1 | import math |