资讯动态

50Hz控制频率、61维观测、14维动作:定义Microduck RL策略的3组关键数字

发布时间:2026/9/18 15:58:31 来源:尧图企业网站定制
50Hz控制频率、61维观测、14维动作定义Microduck RL策略的3组关键数字【免费下载链接】microduck_rlRL training environments for Microduck (mjlab)项目地址: https://gitcode.com/GitHub_Trending/mi/microduck_rl Microduck RL 是面向约 800 g 微型双足机器人 Microduck 的强化学习训练环境基于 mjlabMuJoCo Warp PPO 训练行走、摔倒恢复、溜冰等策略再导出 ONNX 部署到真机。读懂50Hz 控制频率、61 维观测、14 维动作这 3 组数字你就掌握了它 sim2real 全流程的接口契约——所有策略都围绕它们构建。30秒速览这3组数字各管什么数字是什么一句话解释50 Hz策略决策频率机器人每 20 ms 收到一次新动作指令61观测向量维度策略的眼睛耳朵48 维本体感知 13 维指令14动作向量维度14 个舵机的关节位置目标与 14 个舵机一一对应它们共同构成真机 runtime 的策略插槽任何策略只要满足[1, 61] - [1, 14]的网络形状就能在机器人上随时热切换——走路、翻滚、滑行策略可以无缝接管同一个机体。50Hz 控制频率为什么恰好是 50Hz这个频率不是拍脑袋定的而是由仿真步长 × 降采样因子推导出来的物理仿真步长timestep 0.005 s即 200 Hz策略降采样因子decimation 4策略频率4 × 0.005 s 0.02 s→恰好 50 Hz也就是说仿真每跑 4 个物理小步策略才重新决策一次。这样既保证了接触解算的数值精度200 Hz 物理又让策略节奏与真机控制循环对齐——真机上的 50 Hz 控制环与训练时的策略频率完全一致这是 sim2real 不打滑的前提。相关定义可以在以下文件里找到测试台架的对照实现scripts/testbench_sim2real.pyCONTROL_DT 0.02注释即写明 decimation4 × timestep0.005 (policy rate 50 Hz)推理脚本scripts/infer_policy.py运行时打印 Control frequency: 50 Hz (decimation: 4)仿真服务端src/mjlab_microduck/sim/body_server.py模拟真机 50 Hz 循环 小机器人 小舵机Dynamixel XL330的组合下50 Hz 是精度与算力的平衡点频率再高舵机电力电子跟不上再低动态平衡学不出来。61维观测48维本体感知 13维指令拆解61 维观测是所有策略共享的统一布局unified 61D layout。完整分段如下源码注释里逐段标好了索引区间见 src/mjlab_microduck/tasks/symmetry.py前 48 维本体感知proprioception区间字段维度说明[0:3]机体角速度3机体坐标系 IMU 的 roll/pitch/yaw[3:6]投影重力方向3机体坐标系下的重力向量[6:20]关节位置偏差14相对默认站姿的 14 个关节位置[20:34]关节速度1414 个关节的速度[34:48]上一步动作14上一次的 14 维动作闭环记忆后 13 维指令command slots区间字段维度说明[48:51]速度指令twist3前进/横移速度 转向角速度[51:55]头部姿态指令4颈俯仰、头俯仰、头偏航、头横滚[55:61]身体姿态指令6机体 x/y/z 与 roll/pitch/yaw 偏差关键设计细节用不到的槽位补零而不是删掉。比如滑行策略不用身体姿态指令就把这 6 维填 0零填充机制见 src/mjlab_microduck/tasks/mdp.py 的zero_command_padding保证所有策略观测形状一致。critic评论家拥有特权信息actor 的 61 维里刻意去掉了机体线速度和地形扫描critic 则保留——部署时只用到 actor 这 61 维。指令槽位不是摆设头部姿态指令在行走任务里是一级跟踪目标让机器人在走路时还能抬头看指令范围通过课程学习逐步放宽。14维动作驱动14个舵机的关节位置目标动作空间是14 个舵机关节的位置目标joint position action网络输出经target raw_action × scale offset映射为绝对关节角度再交给 BAM 执行器模型电压控制律 负载相关摩擦而非理想 PD。14 个关节的固定排列0–4 左腿、5–8 颈/头、9–13 右腿见 src/mjlab_microduck/tasks/symmetry.py0: left_hip_yaw 5: neck_pitch 9: right_hip_yaw 1: left_hip_roll 6: head_pitch 10: right_hip_roll 2: left_hip_pitch 7: head_yaw 11: right_hip_pitch 3: left_knee 8: head_roll 12: right_knee 4: left_ankle 13: right_ankle两个容易踩坑的点动作维度 14 而不是 16原始机构有 16 个关节但被动关节如下颌连杆都以passive_前缀命名并从观测/动作中剔除正则^(?!passive_).*只选取可驱动关节。间隙backlash变体不改变维度Backlash 系列任务给每个舵机串联 ±1° 齿轮间隙铰链但观测和动作维度保持不变间隙通过qpos[servo] qpos[backlash]读穿ONNX 导出与真机 runtime 完全无需改动见 src/mjlab_microduck/tasks/backlash.py。为什么3组数字在所有策略中完全相同这是本项目的核心工程决策——共享观测契约shared observation contract行走、摔倒恢复、空翻、坐姿起立、滚轮滑行……十余个任务全部输出 61→14 形状的网络真机 runtime 在同一个观测缓冲区上热切换策略hot-swap任何策略随时接管机器人发布前有一道硬校验src/mjlab_microduck/publish/manifest.py 中写死OBS_LEN 61图形状不是 61→14 的文件会被直接拒收旧版 51 维策略也会明确报错回归测试 tests/test_publish_manifest.py 锁死了这对常量防止任何策略悄悄改变接口。一句话50Hz 决定何时决策61 维决定看到什么14 维决定控制什么——三者构成策略即插即用的协议。在源码中定位这3组数字你想知道去看这里61 维观测逐段布局src/mjlab_microduck/tasks/symmetry.py行走任务的完整配置观测/指令/奖励src/mjlab_microduck/tasks/microduck_velocity_env_cfg.py14 关节站姿默认值、机器人模型入口src/mjlab_microduck/robot/microduck_constants.py61→14 发布校验src/mjlab_microduck/publish/manifest.py50Hz 真机对照实验scripts/testbench_sim2real.py策略设计案例滚轮起立docs/roller_standup_policy_summary.md新手上手路径先跑通推理脚本看策略效果uv run scripts/infer_policy.py --walking output.onnxscripts/infer_policy.py用uv run list-envs查看任务注册表挑一个任务 id 训练打开任务对应的 env cfg 文件如 src/mjlab_microduck/tasks/microduck_velocity_env_cfg.py对照本文的 61 维布局表逐段核对观测项用uv run publish --onnx output.onnx ...发布前留意 61→14 形状校验这条保险丝。掌握这 3 组数字你就拿到了 Microduck RL 从仿真训练到真机部署的完整地图 ️【免费下载链接】microduck_rlRL training environments for Microduck (mjlab)项目地址: https://gitcode.com/GitHub_Trending/mi/microduck_rl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价