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: 影响速度计算
  • 编码器分辨率: 影响测量精度

辨识方法:

  1. 直接测量法: 用尺子量。简单粗暴,但精度有限。
  2. 最小二乘法: 让机器人走已知轨迹,记录传感器数据,反推参数。我在项目中常用这个方法。
  3. 卡尔曼滤波: 在线实时辨识,适合参数变化场景。

举个例子,辨识轮距 L:让机器人原地旋转360度,记录左右轮编码器数据。理论上,旋转角度 Δθ = (Δs_R - Δs_L) / L。通过多次实验,用最小二乘法拟合出 L。

我的习惯:参数辨识至少做3组实验,取平均值。而且要在不同负载、不同地面条件下测试。我曾经只做了一组实验就上线,结果换了个地面,模型直接失效。嗯,吃一堑长一智。

知识体系总览

下面这张图,是我自己画的运动学模型知识框架。你可以把它当作本章的「地图」。

运动学模型知识体系 两轮差速模型 阿克曼转向模型 参数辨识 v = (v_R+v_L)/2 ω = (v_R-v_L)/L 原地旋转、直线行驶 R = L_wb / tan(δ) 内外轮转角不同 高速侧偏修正 直接测量法 最小二乘法 卡尔曼滤波 运动学方程:ẋ = v·cos(θ), ẏ = v·sin(θ), θ̇ = ω 差速模型:ω = (v_R-v_L)/L | 阿克曼模型:ω = v·tan(δ)/L_wb 三个模块相互关联:模型决定方程形式,参数决定方程精度

这张图把本章的核心内容串起来了。你看,两轮差速和阿克曼是两种基础模型,它们各自有对应的运动学方程。而参数辨识,就是给这些方程配上准确的数值。三者缺一不可。

好了,运动学模型的基础就讲到这里。记住,模型是控制的上限,算法只是逼近这个上限。把模型搞透,后面的路径跟踪才能游刃有余。

课后思考:如果你做一个室内送餐机器人,你会选差速模型还是阿克曼模型?为什么?想清楚这个问题,你对运动学模型的理解就更深一层。

可可精品资料库