第二章:运动学与动力学基础
各位同学,欢迎来到《动态避障控制算法实战》的第二讲。
今天我们要聊的,是机器人控制里最基础、也最绕不开的一块——运动学与动力学模型。说白了,就是搞清楚你的机器人到底能怎么动、动得快不快、拐弯时会不会翻车。
我个人习惯把这一章叫做“机器人的身份证”。你连它怎么走路都不知道,后面谈避障就是空中楼阁。好,咱们直接开干。
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 本章知识体系总览
为了让你更直观地理解这一章的结构,我画了一张图。它把差速轮、阿克曼、状态空间、控制约束串在了一起。你看完应该能明白,这些知识点是怎么配合的。
这张图里,差速轮和阿克曼是两种最常见的底盘模型。状态空间表示是把物理运动翻译成数学语言。控制约束则是给机器人戴上“紧箍咒”,防止它做出危险动作。三者缺一不可。
本章小结:
- 差速轮:灵活、可原地旋转,适合室内低速场景
- 阿克曼:稳定、高速性能好,适合室外园区
- 状态空间:用 [x, y, θ] 描述机器人位姿,用 [v, ω] 或 [v, δ] 作为控制输入
- 控制约束:必须做限幅和加速度平滑,否则机器人会失控
好了,这一章就到这里。记住,运动学模型是你和机器人沟通的语言。搞不懂它,后面所有算法都是空中楼阁。下一章我们会讲传感器模型,到时候你会看到,这些运动学知识是怎么和传感器数据融合的。
公众号:蓝海资料掘金营,微信deep3321