QuadrupedRobot 四足机器人对角线小跑模型

QuadrupedRobot 是一个基于 Sysplorer 默认 Modelica 标准库的四足机器人多体仿真模型库。模型使用 Modelica.Mechanics.MultiBody 搭建机身、四条两自由度机械腿、足端地面接触和对角线小跑步态控制器,用于展示四足机器人依靠足端交替接触地面实现行走的过程。

模型特点

  • 使用 Sysplorer 默认加载的 Modelica 标准库,不依赖外部第三方机器人库。
  • 机身为三维自由刚体,四条腿对称安装在机身四角。
  • 每条腿包含髋关节、大腿、膝关节、小腿和足端。
  • 每条腿具有 2 个主动关节自由度:髋关节摆动和膝关节屈伸。
  • 每个足端都有独立的弹簧-阻尼-摩擦地面接触模型。
  • 控制器实现对角线小跑步态:LF + RH 同相,RF + LH 同相,两组相差 180 度。
  • 顶层示例仿真时间为 60 s。
  • 自定义组件包含 Icon 和 Diagram 注解,便于在 Sysplorer 图形界面中查看。

目录结构

QuadrupedRobot/
  package.mo
  package.order
  Components/
    RobotBody.mo
    RobotLeg.mo
    FootGroundContact.mo
    TrotGaitController.mo
  Examples/
    QuadrupedTrotDemo.mo
  Interfaces/
    LegCommandBus.mo
  Utilities/
    RobotParameters.mo
  Tests/
    QuadrupedTrotShortCheck.mo

核心模型说明

Components.RobotBody

机身模型使用 MultiBody 刚体表示机器人主体,质量、尺寸和惯量由参数给定。机身中心坐标系作为自由刚体参考点,并通过四个 FixedTranslation 生成四个腿部安装坐标系:

  • frame_LF: 左前腿安装点
  • frame_RF: 右前腿安装点
  • frame_LH: 左后腿安装点
  • frame_RH: 右后腿安装点

机身动画采用长方体显示,视觉中心与机身坐标系对齐,便于在三维动画中观察四腿是否对称安装。

Components.RobotLeg

单腿模型由两段刚体和两个主动转动副组成:

  • hipJoint: 髋关节摆动
  • thigh: 大腿刚体
  • kneeJoint: 膝关节屈伸
  • shank: 小腿刚体
  • footBody: 足端小球刚体

髋关节和膝关节由 Modelica.Mechanics.Rotational.Sources.Position 位置源驱动,输入信号来自步态控制器。

Components.FootGroundContact

足端接触模型连接到每个足端坐标系,实时测量足端在世界坐标系中的位置和速度,并施加地面对足端的反力。

接触逻辑如下:

  • 当足底高于地面时,法向力为 0。
  • 当足底低于或接触地面时,计算穿透深度。
  • 法向力采用弹簧-阻尼模型,并限制为非负值。
  • 切向摩擦力与法向力相关,使用 tanh 平滑近似,避免零速附近的数值不连续。

主要参数:

参数 含义 默认值
groundHeight 地面高度 0 m
contactStiffness 法向接触刚度 14000 N/m
contactDamping 法向接触阻尼 500 N.s/m
frictionCoefficient 足端地面摩擦系数 0.75
slipVelocity 摩擦平滑速度 0.15 m/s

Components.TrotGaitController

步态控制器输出四条腿的髋关节和膝关节目标角度。相位关系为:

  • LFRH 为一组对角腿,同相运动。
  • RFLH 为另一组对角腿,同相运动。
  • 两组对角腿相位差为 180 度。

控制器使用周期正弦信号区分支撑相和摆动相:

  • 摆动相:膝关节增加屈曲量,足端抬起并向前摆动。
  • 支撑相:膝关节小幅伸展,足端压地并通过摩擦推动机身前进。

顶层示例

顶层示例模型为:

QuadrupedRobot.Examples.QuadrupedTrotDemo

该模型包含:

  • world: MultiBody 世界坐标系,重力方向为 -z,地面为 z=0
  • robotBody: 机身刚体。
  • legLF, legRF, legLH, legRH: 四条机械腿。
  • contactLF, contactRF, contactLH, contactRH: 四个足端接触模型。
  • controller: 对角线小跑控制器。

仿真设置:

experiment(StopTime=60, Interval=0.01, Tolerance=1e-5)

参数配置

默认参数集中在:

QuadrupedRobot.Utilities.RobotParameters

关键参数如下:

参数 默认值 说明
bodyLength 0.8 m 机身长度
bodyWidth 0.35 m 机身宽度
bodyHeight 0.18 m 机身高度
bodyMass 8 kg 机身质量
thighLength 0.28 m 大腿长度
shankLength 0.28 m 小腿长度
footRadius 0.04 m 足端半径
initialBodyHeight 0.56 m 机身初始高度
gaitPeriod 1.0 s 步态周期
stepLength 0.10 m 名义步长
liftHeight 0.045 m 名义抬腿高度
contactStiffness 14000 N/m 接触刚度
contactDamping 500 N.s/m 接触阻尼
frictionCoefficient 0.75 摩擦系数

使用方法

  1. 启动 MWORKS.Sysplorer。

  2. 加载模型包:

    c:\Users\TR\Desktop\new\QuadrupedRobot\package.mo
    
  3. 打开示例模型:

    QuadrupedRobot.Examples.QuadrupedTrotDemo
    
  4. 执行检查和翻译。

  5. 运行仿真,仿真时间为 60 s。

  6. 在三维动画中观察机身、四条腿、足端接触、支撑相、摆动相和换腿过程。

已完成验证

已在 Sysplorer MCP 中完成以下验证:

项目 结果
QuadrupedRobot.Examples.QuadrupedTrotDemo 检查 通过
QuadrupedRobot.Examples.QuadrupedTrotDemo 翻译 通过
QuadrupedRobot.Tests.QuadrupedTrotShortCheck 2 秒短时仿真 通过
QuadrupedRobot.Examples.QuadrupedTrotDemo 60 秒仿真 通过

最近一次 60 秒仿真末端结果:

  • 机身 x 位移约 3.777 m
  • 机身 y 偏移约 0.052 m
  • 机身高度约 0.570 m

这些结果表明机器人能够在足端接触力参与下完成持续小跑运动,且横向漂移较小。

调参建议

如果仿真出现跳动、穿透过大或不稳定,可以按以下顺序调整:

  1. 减小 stepLength,降低髋关节摆动幅值。
  2. 增大 gaitPeriod,放慢步态。
  3. 增大 contactDamping,抑制落地冲击。
  4. 适当降低 contactStiffness,减小刚性接触带来的数值困难。
  5. 减小 liftHeight,降低摆动腿对机身俯仰的扰动。
  6. 调整 initialBodyHeight,使足端初始为轻微接触或接近地面。

注意事项

  • 模型用于步态和接触建模演示,不是高精度机器人控制器。
  • 足地接触为简化模型,摩擦采用平滑近似,适合稳定演示和结构验证。
  • 机身是自由刚体,不能直接固定到世界坐标系,否则会破坏行走效果。
  • 三维动画中机身显示中心已与机身坐标系对齐,四条腿通过机身四角安装坐标系连接。