主要參考:https://github.com/jpata/gym-so100/tree/integration/gym_so100/assets/trs_so_arm100
參考:(八)lerobot開源項目擴展so100的仿真操控(操作記錄)_so100機械臂 仿真-CSDN博客
下載:lerobot_so100_sim: lerobot_so100_sim - Gitee.com背景
URDF是Unified Robot Description Format,主要用于ROS中描述機器人的結構、關節、連桿、傳感器等。
MJCF是MuJoCo(Multi-Joint dynamics with Contact)的模型格式,用于物理仿真,更注重動力學和接觸計算。
?so100模型來源(在solidword畫好后導出):https://github.com/TheRobotStudio/SO-ARM100/blob/4e9c5588d8a8415b6a6c2142a0ce8c32207cf3e9/URDF/SO_5DOF_ARM100_8j_URDF.SLDASM/urdf/SO_5DOF_ARM100_8j_URDF.SLDASM.urdf
下載so100的xml,并拖入MuJoCo
git clone https://gitee.com/mrqiguan/lerobot_so100_sim.git
調節右側的參數可以動?
完整界面
??為什么不能直接將 URDF 導入 MuJoCo???
雖然 MuJoCo 支持導入 URDF,但 URDF 格式與 MuJoCo 的仿真需求存在顯著差異,直接導入可能導致以下問題:
-
??視覺與碰撞模型分離??
URDF 的?<visual>
?和?<collision>
?標簽通常使用不同的幾何體(例如高精度網格與簡化凸包)。MuJoCo 默認會丟棄?<visual>
?幾何體(通過?discardvisual="true"
),導致模型不可見。因此需要通過?<compiler discardvisual="false">
?顯式保留視覺模型。 -
??物理參數缺失??
URDF 缺乏對摩擦、執行器動態特性(如?impratio
、cone="elliptic"
)等仿真關鍵參數的描述,這些需手動添加以確保逼真的物理交互。 -
??碰撞優化不足??
URDF 的碰撞模型可能過于復雜或缺少必要優化。例如:- 需要手動提取 ??凸包碰撞網格??(如夾爪的凸包化)以提高計算效率。
- 添加 ??額外碰撞幾何體??(如夾爪的輔助碰撞盒)以增強接觸檢測。
-
??關節與執行器配置??
URDF 不定義關節的阻尼、執行器控制模式(如位置/速度控制)等,需在 MJCF 中通過?<default>
?和?<actuator>
?明確指定。 -
??模型層級與命名沖突??
URDF 的復雜嵌套結構可能導致 MuJoCo 解析時的路徑錯誤(例如材質或網格引用失效),需通過?strippath="false"
?保留完整路徑。
??轉換步驟的必要性??
-
??保留視覺模型??
<mujoco><compiler discardvisual="false" strippath="false"/></mujoco>
強制保留視覺網格,避免模型在仿真中不可見。
-
??統一默認屬性??
將重復的材質、關節屬性提取到?<default>
?中,簡化模型并確保一致性。 -
??優化碰撞模型??
- 將伺服電機網格分離為獨立文件,減少內存占用。
- 為夾爪創建 ??凸包碰撞網格??(例如?
gripper_collision.stl
),替代原始非凸網格以加速碰撞檢測。
-
??增強物理交互??
- 添加?
impratio="10"
?提高接觸力的各向異性,模擬非彈性碰撞。 - 使用?
cone="elliptic"
?替代默認的圓錐摩擦模型,更貼近真實摩擦行為。
- 添加?
-
??避免自碰撞干擾??
通過?<exclude>
?阻止基座(Base
)與俯仰關節(Rotation_Pitch
)的錯誤接觸檢測。 -
??執行器與控制??
添加?<position>
?執行器并設置?kp
(剛度系數),使關節能響應位置控制指令。
??總結??
URDF 是面向機器人描述的標準格式,而 ??MJCF 是專為物理仿真優化的格式??。直接導入 URDF 可能導致模型在 MuJoCo 中表現異常(如穿透、抖動、控制失效)。通過上述轉換步驟,可確保:
- 視覺與碰撞模型的完整性
- 物理參數符合仿真需求
- 計算效率與穩定性提升
最終生成的 MJCF 模型在 MuJoCo 中能實現逼真的動態行為,而未經處理的 URDF 可能僅適用于可視化,無法滿足仿真精度要求。