十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

四足机器人步态稳定性:从ZMP原理到PuppyPi工程实践

四足机器人步态稳定性:从ZMP原理到PuppyPi工程实践 1. 从“蹒跚学步”到“健步如飞”四足机器人步态稳定性的核心挑战如果你看过波士顿动力的机器狗视频一定会被它那流畅、稳定甚至带点“皮实”的步态所震撼。但当你自己动手或者关注一些开源项目比如PuppyPi这样的机器人时可能会发现一个残酷的现实让四条腿的机器人走起来不摔倒远比想象中要难。它不像轮式机器人四个轮子往地上一放重心基本就稳了。四足机器人是典型的“欠驱动”系统它的脚与地面是点接触支撑面极小整个身体就像一块被几根筷子支起来的豆腐随时可能因为重心偏移、地面不平或者一个错误的关节角度而轰然倒地。PuppyPi作为一个相对亲民的开源机器人平台其目标就是让更多人能接触到四足机器人控制的核心。它“Remarkably Stable Gait”异常稳定的步态这个描述背后绝不是简单的几个电机转起来就行。这份稳定是运动学建模、实时状态估计、智能步态规划与控制算法三者精密协作的结果。简单来说它需要知道“自己是谁”身体构型、“自己在哪”身体姿态和位置、“要去哪”目标步态以及“怎么安全地过去”控制指令。今天我们就抛开那些复杂的数学公式从工程实现的角度拆解一下像PuppyPi这样的机器狗是如何一步步实现稳定行走的。你会发现这其中的很多思路对于理解更复杂的机器人控制也大有裨益。2. 稳定性的基石运动学建模与“零力矩点”思想在让机器狗动起来之前我们必须先给它建立一个数字世界的“分身”这就是运动学建模。对于PuppyPi这样的四足机器人通常采用串联连杆模型。每条腿被视为由3个旋转关节髋关节侧摆、髋关节俯仰、膝关节俯仰串联而成这三个关节决定了脚掌末端在空间中的位置。2.1 正运动学与逆运动学告诉腿该怎么放正运动学解决的是“给定每个关节的角度脚掌在哪里”的问题。这相对直接通过几何关系和三角函数就能计算出来。例如我们知道大腿长度、小腿长度和各个关节角就能算出脚掌相对于机器人躯干坐标系的位置。而真正在步态控制中频繁使用的是逆运动学。它回答的问题是“我希望脚掌到达空间中的某个特定位置比如在地面上向前踩一步那么每个关节应该转动多少度” 这是步态规划的核心。PuppyPi在行走时控制器会不断计算每条腿的“落脚点”然后通过逆运动学解算得到每个关节电机的目标角度。注意逆运动学求解可能有多组解比如膝盖可以向前弯也可以向后弯需要根据机器人的机械结构限制如关节活动范围、避免连杆碰撞选择一个最合适的解。PuppyPi通常会选择能耗较低、运动更自然的解。2.2 理解“零力矩点”不摔倒的物理法则有了让脚到达指定位置的能力后我们面临最核心的问题如何保证整个机器人在运动时不摔倒这里就要引入一个关键概念——零力矩点。你可以把ZMP想象成机器人脚底压力分布的“重心”。当机器人静止站立时ZMP就在支撑脚形成的多边形区域内比如四脚站立时在四个脚掌中心连成的四边形内。物理规律告诉我们如果ZMP始终保持在支撑多边形内部机器人就是静态稳定的不会倾倒。但在行走时情况变了。机器人会进入动态阶段比如只有两条或三条腿着地。此时ZMP必须被严格控制在当前着地脚形成的支撑区域内。PuppyPi的步态算法其最根本的任务之一就是通过规划躯干的运动轨迹和脚的落点来确保在任何时刻ZMP都在安全的支撑区域内。如果计算出的下一步会导致ZMP超出支撑区域算法就会提前调整躯干姿态或改变步态时序防止摔倒。这就是“预判”式的稳定控制。3. 步态模式从爬行到小跑的节奏大师有了ZMP这个稳定性判据我们就可以设计具体的步态模式了。步态模式定义了每条腿抬起、摆动、落下的顺序和时机就像音乐的节拍。PuppyPi通常支持以下几种基本步态稳定性依次增加速度也通常更快。3.1 爬行步态最稳健的“初学者”爬行步态是四足机器人最基础、最稳定的步态。在任意时刻至少有三条腿着地形成一个大而稳定的三角形支撑面。四条腿的移动顺序通常是左前腿 - 右后腿 - 右前腿 - 左后腿。这种步态速度慢但能耗相对均匀稳定性极高非常适合在复杂、崎岖的地形上谨慎移动。PuppyPi在启动或进行高精度作业时可能会优先采用这种步态。3.2 踱步步态向动态稳定过渡踱步步态时对角的两条腿如左前和右后同时移动另外两条腿支撑。这减少了支撑腿的数量但通过对角支撑仍然能保持一个良好的支撑矩形。这种步态比爬行快是向更动态步态过渡的常见选择。它要求控制器能更好地管理重心在两条支撑腿之间的转移。3.3 小跑步态效率与速度的平衡小跑步态是许多像PuppyPi这样的机器狗追求的高阶步态。它通常表现为“腾空相”即存在所有脚都离地的瞬间。常见的是对角小跑左前腿和右后腿作为一组右前腿和左后腿作为另一组两组交替摆动和支撑。这要求机器人必须具备动态平衡能力。因为存在全身腾空的瞬间静态稳定性理论ZMP在支撑多边形内不再完全适用此时需要引入更复杂的动力学模型如全身动力学或基于状态估计的反馈控制来保持空中姿态和落地缓冲。PuppyPi要实现稳定的小跑光有步态时序规划远远不够。它必须结合下面要讲的姿态估计与反馈控制实时调整身体姿态确保落地瞬间的冲击可控并能立即进入下一个稳定的支撑阶段。4. 感知自身姿态估计与传感器融合机器人不是活在理想模型里的。模型和现实总有误差地面可能有点软电机可能有点打滑电池消耗后重心可能微微变化。因此PuppyPi必须时刻“感知”自己的真实状态这就是姿态估计的任务。4.1 核心传感器IMU与关节编码器PuppyPi通常搭载一个惯性测量单元。IMU提供了机器人躯干在空间中的角速度和加速度信息。通过积分角速度可以得到姿态变化但陀螺仪存在漂移误差时间一长算出的角度就会严重偏离真实值。同时加速度计在静止时可以测量重力方向从而推算出俯仰和横滚角但在运动时加速度计读数包含了机体运动加速度会严重干扰重力测量。此外每个关节电机都配有编码器它提供高精度的关节角度反馈。结合运动学模型我们可以从关节角度反推脚掌是否着地、躯干的大致高度等信息。4.2 传感器融合算法取长补短单一传感器不可靠所以必须进行传感器融合。最经典、最常用的算法就是互补滤波或卡尔曼滤波。其核心思想非常巧妙短期信任陀螺仪陀螺仪测量角速度响应快短期精度高。我们用它对上一时刻的姿态进行积分得到当前姿态的预测值。长期锚定加速度计加速度计在静止时提供的姿态角是绝对准确的相对于重力但响应慢、动态下噪声大。我们用它来缓慢地“纠正”陀螺仪积分带来的长期漂移。结合编码器信息通过运动学模型结合关节编码器数据和脚底接触开关或通过电流/力矩估计判断是否着地可以间接估计躯干的位置和速度这些信息也可以作为观测值输入滤波器进一步修正状态估计。通过这套融合算法PuppyPi就能得到一个实时、准确、可靠的躯干三维姿态俯仰、横滚、偏航角和位置/速度估计。这个“本体感觉”是后续所有控制决策的基础。没有准确的姿态估计再好的步态规划也如同闭眼走路必然摔倒。5. 控制闭环从规划到执行的“智能小脑”现在我们有了目标步态规划知道了自身状态姿态估计最后一步就是发出正确的指令让电机执行这就是控制器的任务。PuppyPi的控制系统是一个多层级的闭环。5.1 高层控制器步态生成与躯干控制高层控制器以一定的频率比如100Hz运行。它根据当前指令如“向前走速度0.3米/秒”和步态模式生成一个周期性的脚掌运动轨迹。这个轨迹包括摆动相轨迹脚掌从离地到再次落地的空中运动路径通常是一条平滑的曲线如摆线以确保抬起和放下时速度为零减少冲击。支撑相轨迹脚掌着地期间为了推动身体前进脚掌相对于地面其实有一个微小的向后移动对机身参考系来说是静止的。同时高层控制器根据当前估计的ZMP和期望的机身高度、姿态计算出身躯干的期望运动轨迹。例如当机器狗要上一个小台阶时高层控制器会规划一个抬升躯干的轨迹。5.2 底层控制器关节力矩与位置伺服高层控制器输出的结果是每条腿脚掌末端的期望位置/轨迹以及躯干的期望姿态。这些信息通过逆运动学解算被转换成12个关节每条腿3个的期望角度。底层控制器运行频率更高通常1kHz以上它的任务就是让每个关节电机快速、精确地到达期望角度。这里最常用的是PID控制或更先进的模型预测控制。位置控制PID这是最直接的方式。控制器比较关节编码器反馈的实际角度与期望角度根据误差的比例、积分、微分项计算出一个控制量通常是PWM占空比驱动电机。但纯位置控制对突加外力如踩到石子响应僵硬可能导致失稳。力矩/电流控制更高级的方式是进行力矩控制。系统通过期望的脚掌力可能由高层控制器根据ZMP调节计算得出结合雅可比矩阵计算出每个关节需要输出的力矩。底层控制器直接控制电机的电流电流与输出力矩成正比以实现期望的关节力矩。这种方式能让机器腿表现得像有“柔顺性”踩到不平地面时能缓冲适应稳定性大大增强。PuppyPi如果追求高阶稳定性很可能会采用或混合使用力矩控制。5.3 全身协调与抗扰动应对突发状况真正的稳定性体现在应对干扰时。当PuppyPi一条腿突然踩空或受到侧向推力时整个控制系统需要联动状态感知IMU立刻感知到身体的异常加速度和角速度姿态估计模块迅速更新。步态调整高层控制器根据新的姿态可能立即缩短摆动腿的空中时间让其尽快落地以提供支撑或者调整其他支撑腿的落脚位置快速生成一个新的、稳定的支撑多边形。重心调节通过调整所有关节的角度快速将躯干重心移动到新的稳定区域上空。力矩补偿底层力矩控制器增大相关关节的输出力矩以抵抗外力恢复平衡。这一系列动作在几十到几百毫秒内完成从传感器到控制器再到执行器的闭环延迟必须极低这是实现“Remarkably Stable”的关键技术挑战。6. 工程实现中的“魔鬼细节”与调参心得理论完美但实际组装调试PuppyPi这样的机器狗时你会遇到一大堆模型里没有的“魔鬼细节”。这些往往决定了项目成败。6.1 机械结构的“硬伤”与补偿首先加工与装配误差无法避免。腿的长度有细微差别关节轴线不绝对平行这些会导致逆运动学计算出的“理想”角度在实际中无法让四条腿真正落在同一个水平面上。解决办法是在软件中加入标定程序。让机器人做一个已知的运动如所有腿伸直下压通过脚底接触传感器或关节电流突变点反推每个关节的“零点偏移”和连杆长度误差并在逆运动学计算中进行补偿。其次齿轮间隙是杀手。廉价的舵机或带减速箱的电机存在回程间隙。当电机换向时输出轴会有一个微小的空转导致位置控制出现滞后和振荡。这直接破坏步态的精确性。除了选用更高品质的电机在软件上可以尝试始终单向逼近在精细定位时让电机始终从同一个方向旋转到目标位置避免换向。加入死区补偿在控制指令中预先加入一个反向的脉冲抵消间隙但这需要精细调试。升级为力矩控制力矩控制对间隙不敏感因为它不直接依赖位置反馈而是控制输出力。6.2 传感器噪声与数据同步IMU数据噪声大尤其是廉价款。原始的角速度数据如果直接积分几秒钟后姿态估计就会飘得没边。滤波器的参数 tuning 是玄学也是科学。我的经验是互补滤波的融合系数需要根据机器人的运动剧烈程度调整。运动越剧烈应更信任陀螺仪给加速度计的权重降低。卡尔曼滤波更强大但需要准确估计系统过程噪声和观测噪声的协方差矩阵Q和R。这通常通过“静止采集数据统计方差”来初步确定然后在实际运动中微调。数据时间戳同步至关重要。IMU数据、编码器数据可能来自不同的硬件以不同的频率到达。必须用一个统一的高精度时钟为所有数据打上时间戳并在融合时进行时间对齐。否则用10毫秒前的姿态和当前的关节角度做计算结果必然是错的。6.3 控制频率与实时性整个控制环路对实时性要求极高。高层规划100Hz、底层伺服1kHz、状态估计通常与IMU频率一致如500Hz需要在实时操作系统如FreeRTOS或精心设计的多线程程序中严格按时执行。任何一处的延迟或抖动如垃圾回收、文件读写阻塞都可能导致控制指令跟不上状态变化从而引发振荡甚至摔倒。在嵌入式平台如PuppyPi可能使用的树莓派或STM32上需要关闭不必要的后台服务为控制线程赋予最高优先级并确保关键循环的执行时间稳定。6.4 地面适应性从“硬编码”到“自适应”最初的步态参数步幅、步高、周期往往是在平坦硬地面上调好的。一旦遇到地毯、沙地或斜坡可能就走不稳了。进阶的稳定性需要引入自适应能力。触地检测通过关节电流/力矩的突然变化脚触地时阻力增大可以实时检测每条腿是否已着地。一旦检测到提前触地如踩到坑高层控制器可以立即终止该腿的摆动轨迹转入支撑相。阻抗控制在底层控制中不单纯控制位置而是控制关节的“刚度”和“阻尼”。想象机器腿像一个弹簧阻尼器。在地面较软时降低刚度让脚能“陷入”地面获得更好的抓地力在需要减震时增大阻尼吸收冲击。这能极大提升对不同地形的适应能力。基于状态估计的步态调整持续监测躯干姿态角。如果检测到持续向一侧倾斜可以微调该侧腿的落脚点更向外一些或调整对侧腿的推力形成一个恢复力矩。7. 从PuppyPi看开源四足机器人的演进与展望像PuppyPi这样的开源项目其最大价值在于将曾经高不可攀的四足机器人控制技术拆解成了可理解、可复现的模块。它让我们明白稳定步态不是魔法而是一系列经典控制理论和现代工程实践的结晶。从技术演进来看未来的趋势清晰可见感知的融合加入视觉、激光雷达进行地形预判、算法的升级从基于模型的控制走向强化学习等数据驱动方法让机器人能自主学习适应复杂环境、以及执行器的革新更高扭矩密度、更低减速比、更柔顺的直驱或准直驱电机。对于实践者而言调通一个PuppyPi的稳定步态是一次无与伦比的学习经历。你会深刻体会到在机器人领域软件和硬件是密不可分的。一个优秀的控制算法可以弥补硬件的不足而一个糟糕的机械设计则会让最先进的算法也无能为力。我的个人体会是不要急于让机器人跑起来先从静态站立调起确保姿态估计准确然后尝试单腿摆动观察重心补偿是否有效再过渡到对角步态。每一步都做好数据记录和可视化如绘制实时姿态曲线、ZMP轨迹用数据驱动调试远比盲目试错高效得多。最后接受不完美在现有硬件条件下找到性能、稳定性和成本的平衡点这本身就是机器人工程学的核心艺术。
返回列表