外观
踩坑github.com7 天前
智身钢镚 L1 / L2 从 MATRiX 仿真迁移强化学习策略至真机时关节索引与轮毂电机震颤
硬件与软件环境
- 机型:钢镚 L1 / L1-W / L2-W(12 关节电机 + 4 轮毂电机复合构型)
- 仿真与模型库:
zsibot/genisom_model(ZSL-1.urdf/ZSL-1W.urdf)+MATRiX_Python_SDK
故障现象与报错
在 MATRiX 或 Isaac Gym 中训练收敛的步态策略导出为 ONNX 后,部署到真机上电切入强化学习控制模式时:
- 四条腿动作不对称(前左腿与前右腿指令互换,或髋/大腿/小腿顺序错位);
- 轮足版(L1-W / L2-W)足端轮毂电机在静止站立时出现高频正反转啸叫与机身前后微幅震颤。
根因分析
- URDF 树遍历顺序与底层 SDK 数组索引差异:物理仿真器按 URDF/MJCF 树深度优先遍历生成的关节向量顺序(通常为
FL_hip, FL_thigh, FL_calf, FR_...),若与底层运控 SDK 电机 CAN ID 数组顺序不一致,会导致观测(Observation)与动作(Action)错位。 - 轮毂电机控制模式混用:髋、大腿、小腿 12 个关节采用位置 PD 控制(
q_des+kp/kd),而足端 4 个轮毂电机在地面滚动时应使用速度阻尼控制(kp = 0, 仅给定dq_des与kd);若误对轮毂电机设置非零位置刚度kp,轮子微小的里程计积分误差就会产生持续恢复力矩引发震颤。
解决步骤
- 先在悬空吊架上跑零动作映射校验:将机器人吊起离地,在部署脚本中逐一对第
0..11号关节施加+0.15 rad的正弦微动,核对ZSL-1.urdf/ZSL-1W.urdf中的joint_names与真机 SDK 电机索引及旋转正方向(右手定则)完全一致。 - 分离腿部关节与轮毂电机的增益配置:
- 12 个腿部关节(P65 / P85 运动单元):设置标准位置刚度
kp(如 25~45 N·m/rad)与阻尼kd(1.0~2.5 N·m·s/rad); - 4 个轮毂电机(W150-S / W190-S):强制设置位置刚度
kp = 0.0,将策略输出的动作分量映射为目标角速度dq_des,仅保留速度阻尼项kd。
- 12 个腿部关节(P65 / P85 运动单元):设置标准位置刚度
- 对齐重力投影与角速度滤波:确保传入策略网络的机身角速度(
base_ang_vel)与重力投影向量(projected_gravity)坐标系与训练时一致,并对真机关节差分角速度做一阶低通滤波(截止频率约 30Hz)以抑制高频噪声。
来源
本页事实对应的公开页面,以原文为准。
- GitHub zsibot/genisom_model访问 2026-10-21
- GitHub zsibot/MATRiX_Python_SDK访问 2026-10-21