3、运动学模型基础:两轮差速模型、阿克曼转向模型、运动学方程推导、模型参数辨识简介
各位好,我是你们这节课程的讲师。咱们今天聊点硬核的——运动学模型。说白了,就是研究机器人怎么动起来的数学描述。你想想看,要让一个轮子上的家伙听话地沿着路径走,你总得知道它怎么转弯、怎么加速吧?这就是运动学模型要干的事。
我个人习惯把运动学模型比作「机器人的腿脚说明书」。没有它,你写的控制算法就像蒙着眼睛开车。我在项目中遇到过不少新手,上来就调PID参数,结果车在原地打转——因为根本没搞清楚模型长什么样。嗯,咱们今天就把这事掰扯清楚。
3.1 两轮差速模型
两轮差速模型,说白了就是靠两个独立驱动的轮子转速差来实现转向。最常见的应用就是扫地机器人、AGV小车。结构简单,成本低,室内导航的标配。
核心思想:左右轮速度不同,车体就会绕着一个瞬时旋转中心(ICR)转动。
咱们直接上公式。设左轮速度为 v_L,右轮速度为 v_R,轮距(两轮中心距离)为 L。那么车体中心的速度 v 和角速度 ω 为:
v = (v_R + v_L) / 2
ω = (v_R - v_L) / L
这里有个关键点:当 v_R = v_L 时,ω = 0,车直线行驶;当 v_R = -v_L 时,车原地旋转。 我在调试一个仓储机器人时,就遇到过左右轮编码器零漂不一致,导致直线走偏的问题。后来加了个零速校准,才搞定。
避坑指南:我曾经在项目里直接用理想模型算轨迹,结果发现实际路径偏差很大。后来排查发现,轮子打滑、地面摩擦系数变化都会影响模型精度。所以,差速模型只适用于低速、高摩擦场景。高速时一定要考虑滑移。
3.2 阿克曼转向模型
阿克曼转向模型,就是咱们汽车上用的那种。前轮转向,后轮驱动。它的特点是:转弯时,内外侧前轮的转向角不同,保证所有车轮绕同一个圆心转动。
为什么这么设计?你想想看,如果左右前轮转角一样,转弯时内侧轮会侧滑,轮胎磨损严重。阿克曼几何就是为了解决这个问题。
设前轮转角为 δ(通常指内侧轮转角),轴距为 L_wb,那么转弯半径 R 为:
R = L_wb / tan(δ)
注意,这里的 δ 是等效转角。实际应用中,左右轮转角关系为:
cot(δ_left) - cot(δ_right) = L_wb / L_track
其中 L_track 是轮距。这个公式我建议你记下来,做车辆控制时经常用到。
个人经验:我在做无人车项目时,发现阿克曼模型在低速时很准,但高速时由于轮胎侧偏特性,实际转弯半径会比理论值大10%-20%。这时候就需要引入动力学修正了。不过那是后话,咱们先把运动学基础打牢。
3.3 运动学方程推导
有了模型,咱们得把运动学方程写出来。这是控制算法的基础。我习惯用状态空间法来推导。
对于两轮差速模型:
设车体位姿为 [x, y, θ]^T,其中 θ 是航向角。那么运动学方程为:
ẋ = v * cos(θ)
ẏ = v * sin(θ)
θ̇ = ω
把 v 和 ω 用左右轮速度表示:
ẋ = (v_R + v_L)/2 * cos(θ)
ẏ = (v_R + v_L)/2 * sin(θ)
θ̇ = (v_R - v_L) / L
对于阿克曼模型:
设后轴中心为参考点,前轮转角为 δ,后轮速度为 v:
ẋ = v * cos(θ)
ẏ = v * sin(θ)
θ̇ = v * tan(δ) / L_wb
这里要注意,阿克曼模型的角速度与速度 v 成正比,而差速模型与速度差成正比。这是两者本质区别。
重要提醒:运动学方程是连续时间模型。实际控制中,我们需要离散化。离散化步长一般取控制周期的1/10到1/5。我见过有人直接用欧拉法离散,结果高频震荡。建议用四阶龙格库塔法,精度高很多。
3.4 模型参数辨识简介
模型建好了,参数怎么来?总不能靠猜吧。参数辨识就是干这个的。
需要辨识的参数:
- 轮距 L: 两轮差速模型的关键参数
- 轴距 L_wb: 阿克曼模型的关键参数
- 轮子半径 r: 影响速度计算
- 编码器分辨率: 影响测量精度
辨识方法:
- 直接测量法: 用尺子量。简单粗暴,但精度有限。
- 最小二乘法: 让机器人走已知轨迹,记录传感器数据,反推参数。我在项目中常用这个方法。
- 卡尔曼滤波: 在线实时辨识,适合参数变化场景。
举个例子,辨识轮距 L:让机器人原地旋转360度,记录左右轮编码器数据。理论上,旋转角度 Δθ = (Δs_R - Δs_L) / L。通过多次实验,用最小二乘法拟合出 L。
我的习惯:参数辨识至少做3组实验,取平均值。而且要在不同负载、不同地面条件下测试。我曾经只做了一组实验就上线,结果换了个地面,模型直接失效。嗯,吃一堑长一智。
知识体系总览
下面这张图,是我自己画的运动学模型知识框架。你可以把它当作本章的「地图」。
这张图把本章的核心内容串起来了。你看,两轮差速和阿克曼是两种基础模型,它们各自有对应的运动学方程。而参数辨识,就是给这些方程配上准确的数值。三者缺一不可。
好了,运动学模型的基础就讲到这里。记住,模型是控制的上限,算法只是逼近这个上限。把模型搞透,后面的路径跟踪才能游刃有余。
课后思考:如果你做一个室内送餐机器人,你会选差速模型还是阿克曼模型?为什么?想清楚这个问题,你对运动学模型的理解就更深一层。
可可精品资料库