ARTICLE DETAIL

资讯详情

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

MuJoCo MJX Barkour v0 四足模型解析:为 JAX 后端定制的高动态四足机器人 MJCF 配置

MuJoCo MJX Barkour v0 四足模型解析:为 JAX 后端定制的高动态四足机器人 MJCF 配置 MuJoCo MJX Barkour v0 四足模型解析为 JAX 后端定制的高动态四足机器人 MJCF 配置【免费下载链接】mujocoMulti-Joint dynamics with Contact. A general purpose physics simulator.项目地址: https://gitcode.com/GitHub_Trending/mu/mujoco本文以 MJX 测试数据目录中的 Google Barkour v0 模型说明文档 为核心完整拆解该四足机器人 MJCF 模型barkour_v0_mjx.xml的模型来源、面向 Brax/MJX 的六项定制修改以及关节限位、PD 执行器、足端点接触、hfield 地形等关键配置的设计意图与实现细节。读完本文你将能够理解一个用于强化学习的高动态四足模型是如何被裁剪成适合 JAX 批量仿真MJX测试与训练的形状并可以据此为自己的仿人/仿动物机器人配置做出类似的改造。一、模型定位MJX 测试数据中的 Barkour v0 四足Barkour v0 是源自 Google DeepMind 公开的 MuJoCo Menageriegoogle_barkour_v0项目的四足机器人模型最初用于 Barkour: Benchmarking Animal-level Agility with Quadruped Robots 基准研究动物级别的四足运动敏捷性。在当前仓库中该模型位于 mjx/mujoco/mjx/test_data/barkour_v0/ 目录作为MJXMuJoCo 的 JAX 可微/可批处理后端的测试数据使用README.md说明模型来源与针对 Brax 所做的全部修改assets/14 个 STL 网格文件head、body、foot、upper_left/right 各部件等与一张 hfield 高度场纹理hfield_240_280.png以及模型主文件 barkour_v0_mjx.xml。MJX 的测试工具链通过包内资源路径定位这些测试数据。例如 _src/test_util.py 中的load_test_file用epath.resource_path(mujoco.mjx) / test_data / name构造路径并调用mujoco.MjModel.from_xml_path加载模型再交给 MJX 的io.put_model转为 JAX 数组化的模型表示。因此该目录下的每个模型包括 barkour_v0既是数值一致性测试的回归基准也可以直接用作 JAX 策略训练的仿真环境起点。仓库的 mjx/tutorial.ipynb 中也展示了以 Barkour 系列四足vb 版本在 MJX 中训练摇杆控制策略的完整示例与本模型属于同一技术路线。二、面向 Brax/MJX 的六项 MJCF 定制README 明确列出了相对原版 Menagerie 配置所做的修改。这些修改的共同目标非常清晰让模型更适合 JAX 批量仿真Brax/MJX 的训练场景与快速渲染——接触面尽量简单、求解迭代尽量少、初始姿态直接可用、网格路径自包含。逐条对照当前仓库中的 XML 源码meshdir由assets改为.原版模型的网格放在独立assets子目录MJX 版本中网格与 XML 同目录。当前 compiler 行 为compiler angleradian meshdir. texturedirassets autolimitstrue/配合autolimitstrue所有 hinge 关节会自动获得基于 range 的位置约束限位无需手工写joint limitedangleradian则保证角度参数以弧度给出对 RL 训练脚本直接以弧度读写 qpos 更自然。移除frictionlossdamping统一为 0.5239全局关节默认值见 default 节joint range-1.5708 1.5708 armature0.01090125 damping0.5239/原版的frictionloss关节摩擦损耗在零速附近引入不连续/硬化的力矩特性被移除改由纯线性阻尼damping0.5239表达能量耗散。这对 JAX 求值友好摩擦项会引入非光滑性对可微仿真与批量 rollout 都是障碍。armature0.01090125为每个关节保留了一个小的执行器等效转动惯量能显著提高接触求解的数值稳定性它是 Brax 系配置中常见的稳定化手段。添加自定义init_qpos模型通过custom数值数据显式记录了站立初始位形custom numeric data0.0 0.0 0.21 1.0 0.0 0.0 0.0 0.0 0.5 1.0 0.0 0.5 1.0 0.0 0.5 1.0 0.0 0.5 1.0 nameinit_qpos/ /custom与 keyframe standing 一致躯干离地 0.21 m六个膝关节取 0.5/1.0 弧度、髋关节取 0 弧度左右腿对称姿态。这样 Brax 环境初始化时不必依赖 keyframe 解析直接读取数值即可获得确定的站立位形。为每条腿的足端添加球体 geomlowerLegFoot并关闭其余全部接触这是整个模型接触设计中最关键的一刀。全局 geom 默认关闭碰撞geom contype0 conaffinity0 typemesh/然后仅在四个小腿 body 末端各放一个极小的红色球体lowerLegFootLeft/Right 默认定义default classlowerLegFootLeft geom typesphere pos-0.191284 -0.0191638 -0.013 size0.014 contype1 conaffinity0 rgba1 0 0 1/ /default而地形hfield_floor设置conaffinity1第 105 行。MuJoCo 的接触判定要求geom1.contype geom2.conaffinity ! 0因此全模型唯一存在的接触就是 4 个 1.4 cm 足尖球与地面——足尖与地形之间的点接触。这正是 Brax 四足环境的标准做法把接触自由度压到最少既大幅降低碰撞检测与约束求解成本对 JAX 展开的长 rollout 至关重要又保留了四足行走所需的足地交互。求解器与时间步参数调整README 记录的原版修改为option timestep0.002 iterations4 solverCG/当前仓库 XML 的 option 节 进一步演化为option timestep0.002 iterations1 ls_iterations4 flag eulerdampdisable/ /option即 2 ms 时间步主约束求解迭代降到 1 次、线搜索迭代 4 次ls_iterations并关闭eulerdampEuler 积分的隐式阻尼项。从源码结构看这种低迭代 小时间步 禁用 eulerdamp的组合是 MJX 基准测试的典型配置——迭代次数直接影响 JAX 展开的 FLOPs训练型环境通常牺牲一点求解精度换取吞吐仓库的测试工具 _src/test_util.py 中benchmark函数的默认参数iterations1, ls_iterations4与模型配置完全一致可以印证这组参数就是面向 MJX 基准调优的。移除躯干的非视觉 geom加速渲染原版躯干同时挂有碰撞网格与视觉网格MJX 版本把网格 geom 全部归入classvisualcontype0 conaffinity0 density0 group1见 visual 默认类躯干不再带碰撞体。碰撞只发生在足尖球与地面之间因此去掉冗余的碰撞网格不影响物理正确性只减少渲染与碰撞负载。三、模型结构深读12 关节四足 12 通道 PD 执行器3.1 运动学链与关节限位模型是一棵 12 自由度的四足树躯干chassis通过 freejoint 与地面解耦第 107-110 行每条腿依次为 abduction外展→ hip髋→ knee膝三个 hinge 关节关节轴方向按前后腿、左右腿分别镜像例如abduction_front_right轴为-0.94806 0 0.318092而左侧为0.94806 0 -0.318092。各类关节的范围由 default 类分层覆盖汇总如下均为弧度关节类数量range其他参数abductor外展4-1.0472 ~ 1.0472—hip_front前髋2-1.22173 ~ 3.24631默认 axis 沿 ±zhip_hind后髋2-1.98968 ~ 2.46091默认 axis 沿 ±zknee膝40 ~ 2.5132单向屈曲axis0 -0.0775009 0.996992膝关节单向 0~2.5132 弧度约 0°~143.6°符合四足膝关节只能屈曲的解剖约束髋关节范围前腿-1.22173~3.24631比后腿-1.98968~2.46091明显不对称这是为 Barkour 这类敏捷前扑姿态front 需要大幅前摆保留的自由度。膝轴0 -0.0775009 0.996992带有轻微侧倾来自真实机械腿 CAD 装机的几何偏差直接沿用了 Menagerie 原版的标定值。3.2 执行器multi_mode_controlled_actuator12 个关节各配一个general执行器actuator 节全部继承同一个 default 类第 32-34 行general biastypeaffine gainprm35 0 0 0 0 0 0 0 0 0 biasprm0 -35 -0.65 0 0 0 0 0 0 0 forcerange-18.0 18.0 ctrlrange-2 2/按 MuJoCo general 执行器的 affine 公式u gain0 Σ gain_i·prm_i − (bias0 Σ bias_i·prm_i)实际力矩为τ 35·c − 35·q − 0.65·q̇即P 增益 35、D 增益 0.65 的 PD 位置控制控制输入c与关节位置q同量纲ctrlrange-2 2表示控制量在位置坐标上以 ±2 弧度为限forcerange±18 N·m模拟真实执行器的力矩饱和。multi_mode 的命名来自 Brax 侧的需求同一套执行器既可以按位置指令做 PD 跟踪也便于在脚本中切换为力矩/速度等其他控制模式。这套数值35 / -35 / -0.65在仓库的 MJX 随机模型测试工具 _src/test_util.py 中也被当作general执行器的标准样例参数复用侧面说明它是 Brax 系配置的事实标准。3.3 地形hfield 高度场场景地面不是平面而是一张随机均匀噪声高度场hfield namerand_uniform filehfield_240_280.png size20.1 20.0 .05 .1/ geom namehfield_floor typehfield hfieldrand_uniform conaffinity1/hfield_240_280.png280×240 像素的像素灰度被解释为高度数据size20.1 20.0 .05 .1表示 20.1 m × 20.0 m 的地面、5 cm 分辨率、最大高度差 0.1 m即一张约 10 cm 起伏的粗糙乱石地。使用高度场而非网格地面的意义在于碰撞检测走的是高度场插值查询比大网格碰撞便宜得多且天然为 RL 环境提供了带随机性的崎岖地形——Barkour 基准的核心就是崎岖地形上的敏捷运动。XML 中保留了被注释的平面地板选项第 106 行一行注释即可切回平地做对照实验。3.4 观测与初始化传感器和 standing keyframesensor节第 210-238 行提供了 29 个观测通道12 路jointpos 12 路jointvel本体系的 12 关节位置与速度gyro与accelerometer挂在世界坐标系原点 siteorigin上采集躯干角速度与线加速度orientationframequat传感器输出躯干相对世界的四元数姿态。这正是 Brax 四足环境的标准观测向量proprioceptionq q̇ 姿态 IMU。注意originsite 建在 worldbody 上第 102 行陀螺/加速度计测量的是世界原点处坐标系相对惯性系的变化等价于躯干 base link 的 IMU 观测base 通过 freejoint 与原点重合。standingkeyframe 给出与init_qpos相同的位形并附初始控制量ctrl0 0.5 1.0 ... 0 0.5 1.0前髋 0、前膝 0.5、后髋 0、后膝 1.0 交替保证从静止起算模型即处于受力平衡的站立姿态可用于仿真演示与回归测试的起点。四、如何使用与改造这份模型加载在安装了mujoco[mjx]的 Python 环境中可以像加载任何 MJCF 一样加载它import mujoco m mujoco.MjModel.from_xml_path( mjx/mujoco/mjx/test_data/barkour_v0/assets/barkour_v0_mjx.xml)在 MJX 测试流程中则等价于mujoco.mjx._src.test_util.load_test_file(barkour_v0/...)经包资源路径解析见 test_util.py。改造要点复盘可直接迁移到你自己的仿人/仿动物四足 MJCF全局geom contype0 conaffinity0/只给足端放小尺寸 sphere 并置contype1地面置conaffinity1——点接触化接触对数量从 O(网格对) 降到 4用dampingarmature替代frictionloss消除非光滑项求解器参数按训练吞吐优先裁剪小iterations、显式ls_iterations、eulerdampdisable与 MJX 基准工具的默认值对齐用customnumeric nameinit_qpos//custom显式存初始位形避免训练脚本对 keyframe 机制的依赖用default类hip_front / hip_hind / knee / abductor / multi_mode_controlled_actuator集中管理限位与执行器参数便于批量继承与域随机化。五、引用与出处该模型基于 Google DeepMind 的 Barkour 基准工作README 要求学术使用时引用以下文献完整 BibTeX 见 READMEmisc{caluwaerts2023barkour, title{Barkour: Benchmarking Animal-level Agility with Quadruped Robots}, author{Ken Caluwaerts and Atil Iscen and J. Chase Kew and Wenhao Yu and ... and Jie Tan}, year{2023}, eprint{2305.14654}, archivePrefix{arXiv}, primaryClass{cs.RO} }模型的直接来源是 MuJoCo Menagerie 的google_barkour_v0项目当前仓库内的 barkour_v0_mjx.xml 是在其基础上按上文六项修改定制、并经后续演进如 option 节参数的最终版本主要服务于 MJX 的数值测试、基准与 JAX 策略训练。仓库文档 doc/models.rst 中也把 Google Barkour v0/vB 列入了官方示例模型索引可作为延伸阅读线索。【免费下载链接】mujocoMulti-Joint dynamics with Contact. A general purpose physics simulator.项目地址: https://gitcode.com/GitHub_Trending/mu/mujoco创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表