4. 步态基础概念
聊四足机器人步态,绕不开四个基础概念:步态周期、占空比、相位差、支撑相与摆动相。
我刚开始接触步态规划时,觉得这些词太抽象了。后来在项目里调了三个月的狗腿子,才真正理解它们有多重要。说白了,这四个概念就是描述「腿什么时候抬、什么时候落、怎么配合」的数学语言。
你想想看,四条腿怎么走?不是随便乱迈的。每一步的时机、每条腿的节奏,都得用这些参数精确控制。下面我一个一个拆开讲。
4.1 步态周期(Gait Cycle)
步态周期,就是一条腿完成一次完整运动的时间。从这条腿触地开始,到下一次同一条腿再次触地结束。
用公式表示:
T = t_swing + t_stance
其中:
- T — 步态周期(单位:秒)
- t_swing — 摆动相时间
- t_stance — 支撑相时间
我在项目里习惯用周期来反推运动频率。比如想让机器人每秒走两步,周期就设 0.5 秒。周期越短,步频越快,但电机响应也得跟得上。
4.2 占空比(Duty Cycle)
占空比,就是支撑相时间占整个周期的比例。
D = t_stance / T
占空比决定了机器人的运动风格:
| 占空比范围 | 运动风格 | 典型应用 |
|---|---|---|
| D > 0.75 | 慢速、稳定 | 爬坡、负重行走 |
| 0.5 < D < 0.75 | 常规行走 | 平地巡航 |
| D < 0.5 | 快速、动态 | 奔跑、跳跃 |
嗯,这里要注意:占空比不是随便调的。我曾经在沙地上测试,占空比设到 0.4,结果支撑相太短,腿还没站稳就离地了——机器人直接趴窝。
4.3 相位差(Phase Offset)
相位差,是步态规划的灵魂。它定义了四条腿之间的「时间错位」。
用角度表示:
φ = (Δt / T) × 360°
其中 Δt 是两条腿开始摆动的时间差。
举个例子,常见的 Trot 步态:
- 左前腿与右后腿:相位差 0°(同相)
- 右前腿与左后腿:相位差 0°(同相)
- 两组之间:相位差 180°(反相)
为什么这样配?因为对角腿同时摆动,机器人重心更稳。我试过把相位差改成 90°,结果走起来像喝醉了酒——左右晃得厉害。
4.4 支撑相与摆动相(Stance & Swing Phase)
一条腿在一个周期里,只有两种状态:
- 支撑相(Stance) — 腿触地,支撑身体,推动前进
- 摆动相(Swing) — 腿离地,向前迈步
支撑相的核心任务是「支撑+推进」。这时候足端相对于地面是静止的(或者微滑动),身体靠腿的反作用力前进。
摆动相的核心任务是「复位+避障」。足端从当前位置抬起来,划一条轨迹,落到下一个目标点。
我习惯用轨迹规划来区分这两个阶段:
// 支撑相:足端在水平面做直线运动
p_stance(t) = p_start + v_body * t
// 摆动相:足端在垂直面做抛物线运动
p_swing(t) = p_lift + bezier(t) * (p_target - p_lift)
支撑相的运动方向与身体运动方向相反——你想想看,腿往后推,身体才能往前走。
4.5 四个概念的关系
这四个概念不是孤立的。它们共同决定了步态的「时空结构」。
我画了一张关系图,帮你理清思路:
从图里能看出来:
- 步态周期是顶层参数,决定了时间基准
- 占空比从周期里分出支撑相和摆动相的时间比例
- 相位差在周期基础上,给每条腿分配不同的起始时间
- 支撑相和摆动相是腿的实际执行状态
4.6 实际项目中的参数选择
我在做四足机器人巡检项目时,总结了一套参数选择流程:
- 先定周期 — 根据目标速度选。速度 = 步长 / 周期,步长受腿长限制。
- 再调占空比 — 地面条件好就降占空比提速度,地面滑就升占空比保稳定。
- 最后配相位差 — 根据步态模式(Trot/Pace/Walk)查表赋值。
举个例子,我做过一个 12kg 的四足机器人:
| 参数 | 平地行走 | 爬坡 | 小跑 |
|---|---|---|---|
| 周期 T | 0.6 s | 0.8 s | 0.4 s |
| 占空比 D | 0.65 | 0.75 | 0.45 |
| 相位差 φ | Trot (180°) | Walk (90°) | Trot (180°) |
你看,同样的机器人,换一组参数,运动模式就完全不一样了。这就是步态规划的魅力——用数学控制物理。