第二章:运动学与动力学基础

各位同学,欢迎来到《动态避障控制算法实战》的第二讲。

今天我们要聊的,是机器人控制里最基础、也最绕不开的一块——运动学与动力学模型。说白了,就是搞清楚你的机器人到底能怎么动、动得快不快、拐弯时会不会翻车。

我个人习惯把这一章叫做“机器人的身份证”。你连它怎么走路都不知道,后面谈避障就是空中楼阁。好,咱们直接开干。

2.1 差速轮模型:最常用的“小推车”

差速轮,你想想看,就是两个轮子各自独立驱动。左边转得快,右边转得慢,车就往左拐。反过来,就往右拐。两个轮子速度一样,就直着走。

我在项目中遇到过不少新手,上来就问:“老师,差速轮能不能原地掉头?” 答案是:能。只要左轮正转、右轮反转,车就能原地转圈。这就是差速轮最大的优势——机动性极强。

它的运动学方程其实很简单:

v = (v_left + v_right) / 2
ω = (v_right - v_left) / L

其中 v 是线速度,ω 是角速度,L 是轮距(两个轮子中心的距离)。

嗯,这里要注意:这个模型假设轮子不打滑。实际项目中,地面摩擦系数、轮胎磨损都会影响精度。我曾经在瓷砖地面上跑差速轮,结果转弯半径比理论值大了将近20%。后来加了滑移补偿才搞定。

核心要点:差速轮模型是“非完整约束”系统。什么意思?就是它不能直接横向移动。你只能控制前进/后退和旋转,不能像螃蟹一样横着走。这个特性在避障规划时特别重要。

2.2 阿克曼模型:汽车的“亲戚”

阿克曼转向,说白了就是汽车用的那套。前轮转向,后轮驱动。你打方向盘,前轮转个角度,车就沿着一个圆弧走。

这个模型比差速轮复杂一点。它的运动学方程是:

v = 后轮速度
ω = v * tan(δ) / L

其中 δ 是前轮转向角,L 是轴距(前后轮中心的距离)。

我建议你记住一个关键点:阿克曼模型的最小转弯半径是固定的。因为前轮转角有机械限位,一般家用车也就30度左右。所以阿克曼机器人没法原地掉头,必须走一个圆弧。

实战技巧:如果你在做园区物流机器人,大概率用阿克曼。因为它在高速行驶时更稳定。差速轮适合室内、低速、需要频繁转向的场景。选型时别搞反了。

2.3 状态空间表示:把机器人“数字化”

好,现在我们知道机器人怎么动了。但控制算法需要的是一个数学描述。这就是状态空间表示法。

对于二维平面上的机器人,状态向量通常写成:

x = [x, y, θ]^T

其中 x, y 是位置坐标,θ 是朝向角(也叫偏航角)。

控制输入呢?对于差速轮:

u = [v, ω]^T

对于阿克曼:

u = [v, δ]^T

状态空间模型就是把“当前状态 + 控制输入”映射到“下一时刻状态”。写成离散形式:

x(k+1) = x(k) + v * cos(θ) * dt
y(k+1) = y(k) + v * sin(θ) * dt
θ(k+1) = θ(k) + ω * dt

这就是最经典的“自行车模型”。别看它简单,我做过的好几个项目,从扫地机器人到无人配送车,底层用的都是这个。够用。

注意:这个模型假设机器人是刚体,且运动在二维平面内。如果你做的是四足机器人、无人机,那状态空间要扩展到6维甚至更高。但原理是一样的——状态 + 输入 = 下一状态。

2.4 控制输入与约束:别让机器人“乱来”

控制输入不是你想给多少就给多少。每个机器人都有物理限制。

常见的约束包括:

  • 速度上限:电机有最大转速,比如差速轮最大线速度1.5 m/s
  • 加速度限制:急加速会打滑,急减速会甩尾。我一般设个0.5 m/s²的限幅
  • 转向角限制:阿克曼前轮最多转30度,差速轮没有这个限制
  • 角速度限制:转太快会翻车,尤其是重心高的机器人

我曾经在项目里吃过亏:给差速轮发了一个很大的角速度指令,结果机器人直接原地打转,IMU数据都飞了。后来加了角速度限幅和加速度平滑,才稳定下来。

所以,控制输入一定要做“约束检查”。代码里通常这样写:

def clamp_control(u, limits):
    u[0] = max(limits.v_min, min(limits.v_max, u[0]))
    u[1] = max(limits.w_min, min(limits.w_max, u[1]))
    return u

简单粗暴,但有效。

2.5 本章知识体系总览

为了让你更直观地理解这一章的结构,我画了一张图。它把差速轮、阿克曼、状态空间、控制约束串在了一起。你看完应该能明白,这些知识点是怎么配合的。

运动学与动力学基础 · 知识体系 机器人运动模型 差速轮模型 v = (vL+vR)/2, ω = (vR-vL)/L 阿克曼模型 v = 后轮速度, ω = v·tan(δ)/L 状态空间表示 x = [x, y, θ]^T, u = [v, ω]^T 控制输入与约束 速度/加速度/转向角/角速度限幅 核心:模型决定运动能力,约束保证安全运行

这张图里,差速轮和阿克曼是两种最常见的底盘模型。状态空间表示是把物理运动翻译成数学语言。控制约束则是给机器人戴上“紧箍咒”,防止它做出危险动作。三者缺一不可。

本章小结:

  • 差速轮:灵活、可原地旋转,适合室内低速场景
  • 阿克曼:稳定、高速性能好,适合室外园区
  • 状态空间:用 [x, y, θ] 描述机器人位姿,用 [v, ω] 或 [v, δ] 作为控制输入
  • 控制约束:必须做限幅和加速度平滑,否则机器人会失控

好了,这一章就到这里。记住,运动学模型是你和机器人沟通的语言。搞不懂它,后面所有算法都是空中楼阁。下一章我们会讲传感器模型,到时候你会看到,这些运动学知识是怎么和传感器数据融合的。

公众号:蓝海资料掘金营,微信deep3321