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
步态控制器输出四条腿的髋关节和膝关节目标角度。相位关系为:
LF与RH为一组对角腿,同相运动。RF与LH为另一组对角腿,同相运动。- 两组对角腿相位差为 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 |
摩擦系数 |
使用方法
-
启动 MWORKS.Sysplorer。
-
加载模型包:
c:\Users\TR\Desktop\new\QuadrupedRobot\package.mo -
打开示例模型:
QuadrupedRobot.Examples.QuadrupedTrotDemo -
执行检查和翻译。
-
运行仿真,仿真时间为 60 s。
-
在三维动画中观察机身、四条腿、足端接触、支撑相、摆动相和换腿过程。
已完成验证
已在 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
这些结果表明机器人能够在足端接触力参与下完成持续小跑运动,且横向漂移较小。
调参建议
如果仿真出现跳动、穿透过大或不稳定,可以按以下顺序调整:
- 减小
stepLength,降低髋关节摆动幅值。 - 增大
gaitPeriod,放慢步态。 - 增大
contactDamping,抑制落地冲击。 - 适当降低
contactStiffness,减小刚性接触带来的数值困难。 - 减小
liftHeight,降低摆动腿对机身俯仰的扰动。 - 调整
initialBodyHeight,使足端初始为轻微接触或接近地面。
注意事项
- 模型用于步态和接触建模演示,不是高精度机器人控制器。
- 足地接触为简化模型,摩擦采用平滑近似,适合稳定演示和结构验证。
- 机身是自由刚体,不能直接固定到世界坐标系,否则会破坏行走效果。
- 三维动画中机身显示中心已与机身坐标系对齐,四条腿通过机身四角安装坐标系连接。
登录账号即可下载资源、参与讨论。