Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/MIUAV/vibe-coding-ros2 --skill mujoco-modeling명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | mujoco-modeling |
| description | Mujoco 建模技能 - MJCF 模型、关节驱动、接触参数、ROS2 Mujoco 桥接 |
| argument-hint | Mujoco OR MJCF OR 建模 OR mujoco_model |
| user-invocable | true |
Mujoco 物理仿真建模
当需要以下帮助时使用此技能:
<!-- robot.xml -->
<mujoco model="robot">
<compiler angle="radian" meshdir="meshes" autolimits="true"/>
<!-- 默认参数 -->
<option timestep="0.001" iterations="50" jacobian="dense" solver="Newton"/>
<!-- 视觉化 -->
<visual>
<map znear="0.02" zfar="50"/>
<quality shadow="true"/>
</visual>
<!-- 物理参数 -->
<flag contact="true" energy="true"/>
<!-- 世界 -->
<worldbody>
<!-- 地面 -->
<geom type="plane" size="10 10 0.1" rgba="0.8 0.8 0.8 1" friction="1 0.005 0.0001"/>
<!-- 机器人 -->
<body name="torso" pos="0 0 0.5">
<freejoint/>
<inertial pos="0 0 0" mass="10" diaginertia="0.1 0.1 0.1"/>
<geom type="box" size="0.2 0.2 0.3" rgba="1 0.5 0 1" mass="10"/>
<!-- 腿 -->
<body name="front_left_leg" pos="0.15 0.15 0">
<joint name="hip_x" type="hinge" axis="1 0 0" range="-1 1"/>
<inertial pos="0 0 -0.2" mass="1" diaginertia="0.01 0.01 0.01"/>
<geom type="capsule" fromto="0 0 0 0 0 -0.4" rgba="0.8 0.2 0.2 1"
friction="1" density="500"/>
<body name="front_left_foot" pos="0 0 -0.4">
<joint name="ankle_x" type="hinge" axis="1 0 0" range="-0.5 0.5"/>
<geom type="sphere" size="0.05" rgba="0.2 0.2 0.8 1" friction="1"/>
</body>
</body>
</body>
</worldbody>
<!-- 驱动器 -->
<actuator>
<motor joint="hip_x" gear="100" ctrllimited="true" ctrlrange="-10 10"/>
<motor joint="ankle_x" gear="50" ctrllimited="true" ctrlrange="-5 5"/>
</actuator>
</mujoco>
# mujoco_ros_bridge.py
import mujoco
import numpy as np
class MujocoROS_Bridge:
def __init__(self, model_path):
self.model = mujoco.MjModel.from_xml_path(model_path)
self.data = mujoco.MjData(self.model)
# ROS2 接口
# 订阅关节命令
# 发布关节状态
def step(self, ctrl):
"""执行一步仿真"""
self.data.ctrl = ctrl
mujoco.mj_step(self.model, self.data)
return {
'qpos': self.data.qpos.copy(),
'qvel': self.data.qvel.copy(),
'qacc': self.data.qacc.copy()
}