用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/MIUAV/vibe-coding-ros2 --skill sdf-xacro-model命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | sdf-xacro-model |
| description | 轮式车辆 SDF/XACRO 模型开发技能 - 差速驱动车、阿克曼车、履带车模型创建与仿真配置 |
| argument-hint | 创建轮式车辆模型 OR 差速驱动 OR 阿克曼模型 OR 履带车 |
| user-invocable | true |
用于创建轮式移动机器人的 SDF 和 XACRO 模型
当需要以下帮助时使用此技能:
// 差速驱动 - 适合室内移动机器人
// 阿克曼转向 - 适合户外车辆
// 履带式 - 适合复杂地形
<?xml version="1.0" ?>
<sdf version="1.11">
<model name="diff_drive_robot">
<static>false</static>
<self_collide>false</self_collide>
<!-- 基座链接 -->
<link name="base_link">
<pose>0 0 0.1 0 0 0</pose>
<inertial>
<mass>10.0</mass>
<inertia>
<ixx>0.1</ixx><ixy>0</ixy><ixz>0</ixz>
<iyy>0.1</iyy><iyz>0</iyz>
<izz>0.1</izz>
</inertia>
</inertial>
<!-- 基座碰撞体 -->
<collision name="base_collision">
<geometry>
<box>
<size>0.5 0.4 0.1</size>
</box>
</geometry>
</collision>
<!-- 基座视觉体 -->
<visual name="base_visual">
<geometry>
<box>
<size>0.5 0.4 0.1</size>
</box>
</geometry>
<material>
<ambient>0.3 0.3 0.3 1</ambient>
<diffuse>0.3 0.3 0.3 1</diffuse>
</material>
</visual>
</link>
<!-- 左前轮 -->
<link name="wheel_fl">
<pose>0.2 0.25 0 0 0 0</pose>
<inertial>
<mass>0.5</mass>
<inertia>
<ixx>0.001</ixx><ixy>0</ixy><ixz>0</ixz>
<iyy>0.001</iyy><iyz>0</iyz>
<izz>0.001</izz>
</inertia>
</inertial>
<collision name="wheel_fl_collision">
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.05</length>
</cylinder>
</geometry>
<surface>
<friction>
<ode>
<mu>1.0</mu>
<mu2>1.0</mu2>
</ode>
</friction>
</surface>
</collision>
<visual name="wheel_fl_visual">
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.05</length>
</cylinder>
</geometry>
<material>
<ambient>0.1 0.1 0.1 1</ambient>
</material>
</visual>
</link>
<joint name="wheel_fl_joint" type="continuous">
<parent>base_link</parent>
<child>wheel_fl</child>
<axis>
<xyz>0 1 0</xyz>
</axis>
</joint>
<!-- 右前轮 -->
<link name="wheel_fr">
<pose>0.2 -0.25 0 0 0 0</pose>
<inertial>
<mass>0.5</mass>
<inertia>
<ixx>0.001</ixx><ixy>0</ixy><ixz>0</ixz>
<iyy>0.001</iyy><iyz>0</iyz>
<izz>0.001</izz>
</inertia>
</inertial>
<collision name="wheel_fr_collision">
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.05</length>
</cylinder>
</geometry>
</collision>
<visual name="wheel_fr_visual">
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.05</length>
</cylinder>
</geometry>
<material>
<ambient>0.1 0.1 0.1 1</ambient>
</material>
</visual>
</link>
<joint name="wheel_fr_joint" type="continuous">
<parent>base_link</parent>
<child>wheel_fr</child>
<axis>
<xyz>0 1 0</xyz>
</axis>
</joint>
<!-- 左后轮 -->
<link name="wheel_rl">
<pose>-0.2 0.25 0 0 0 0</pose>
<inertial>
<mass>0.5</mass>
<inertia>
<ixx>0.001</ixx><ixy>0</ixy><ixz>0</ixz>
<iyy>0.001</iyy><iyz>0</iyz>
<izz>0.001</izz>
</inertia>
</inertial>
<collision name="wheel_rl_collision">
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.05</length>
</cylinder>
</geometry>
</collision>
<visual name="wheel_rl_visual">
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.05</length>
</cylinder>
</geometry>
<material>
<ambient>0.1 0.1 0.1 1</ambient>
</material>
</visual>
</link>
<joint name="wheel_rl_joint" type="continuous">
<parent>base_link</parent>
<child>wheel_rl</child>
<axis>
<xyz>0 1 0</xyz>
</axis>
</joint>
<!-- 右后轮 -->
<link name="wheel_rr">
<pose>-0.2 -0.25 0 0 0 0</pose>
<inertial>
<mass>0.5</mass>
<inertia>
<ixx>0.001</ixx><ixy>0</ixy><ixz>0</ixz>
<iyy>0.001</iyy><iyz>0</iyz>
<izz>0.001</izz>
</inertia>
</inertial>
<collision name="wheel_rr_collision">
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.05</length>
</cylinder>
</geometry>
</collision>
<visual name="wheel_rr_visual">
<geometry>
<cylinder>
<radius>0.1</radius>
<length>0.05</length>
</cylinder>
</geometry>
<material>
<ambient>0.1 0.1 0.1 1</ambient>
</material>
</visual>
</link>
<joint name="wheel_rr_joint" type="continuous">
<parent>base_link</parent>
<child>wheel_rr</child>
<axis>
<xyz>0 1 0</xyz>
</axis>
</joint>
<!-- 激光雷达 -->
<link name="laser_link">
<pose>0.25 0 0.15 0 0 0</pose>
<sensor name="laser" type="gpu_lidar">
<update_rate>10</update_rate>
<ray>
<scan>
<horizontal>
<samples>360</samples>
<resolution>1</resolution>
</horizontal>
</scan>
<range>
<min>0.1</min>
<max>30</max>
</range>
</ray>
<plugin filename="gz-sim-sensors-gpu-lidar" name="gz::sim::systems::GpuRaySensor">
<ros>
<namespace>/robot</namespace>
</ros>
</plugin>
</sensor>
</link>
<joint name="laser_joint" type="fixed">
<parent>base_link</parent>
<child>laser_link</child>
</joint>
<!-- 差速驱动插件 -->
<plugin filename="gz-sim-diff-drive-system" name="gz::sim::systems::DiffDrive">
<left_joint>wheel_fl_joint</left_joint>
<right_joint>wheel_fr_joint</right_joint>
<left_joint>wheel_rl_joint</left_joint>
<right_joint>wheel_rr_joint</right_joint>
<wheel_radius>0.1</wheel_radius>
<wheel_separation>0.5</wheel_separation>
<max_wheel_torque>20</max_wheel_torque>
<max_wheel_velocity>10</max_wheel_velocity>
</plugin>
</model>
</sdf>
<?xml version="1.0" ?>
<robot name="diff_drive_robot" xmlns:xacro="http://www.ros.org/wiki/xacro">
<!-- 参数定义 -->
<xacro:property name="PI" value="3.14159265358979"/>
<xacro:property name="base_mass" value="10.0"/>
<xacro:property name="base_length" value="0.5"/>
<xacro:property name="base_width" value="0.4"/>
<xacro:property name="base_height" value="0.1"/>
<xacro:property name="wheel_radius" value="0.1"/>
<xacro:property name="wheel_width" value="0.05"/>
<xacro:property name="wheel_mass" value="0.5"/>
<xacro:property name= =/>
1.0
1.0
/robot
cmd_vel:=cmd_vel
odom:=odom
50
wheel_fl_joint
wheel_fr_joint
${wheel_separation}
${wheel_radius}
20
10
<?xml version="1.0" ?>
<sdf version="1.11">
<model name="ackermann_vehicle">
<static>false</static>
<!-- 车身 -->
<link name="chassis">
<pose>0 0 0.2 0 0 0</pose>
<inertial>
<mass>50.0</mass>
<inertia>
<ixx>0.5</ixx><ixy>0</ixy><ixz>0</ixz>
<iyy>0.8</iyy><iyz>0</iyz>
<izz>0.8</izz>
</inertia>
</inertial>
<collision name="chassis_collision">
1.0 0.5 0.2
1.0 0.5 0.2
0.4 0.2 0.1 1
0.4 0 0.1 0 0 0
5.0
0.0100
0.010
0.01
0.1 0.4 0.1
0.1 0.4 0.1
0.2 0.2 0.2 1
chassis
front_axle
0 0 1
-0.5
0.5
0.4 0.3 0.1 0 0 0
2.0
0.0100
0.010
0.01
0.15
0.1
0.15
0.1
0.1 0.1 0.1 1
front_axle
wheel_fl
0 1 0
0.4 -0.3 0.1 0 0 0
2.0
0.0100
0.010
0.01
0.15
0.1
0.15
0.1
0.1 0.1 0.1 1
front_axle
wheel_fr
0 1 0
-0.4 0.25 0.1 0 0 0
2.0
0.0100
0.010
0.01
0.15
0.1
0.15
0.1
0.1 0.1 0.1 1
chassis
wheel_rl
0 1 0
-0.4 -0.25 0.1 0 0 0
2.0
0.0100
0.010
0.01
0.15
0.1
0.15
0.1
0.1 0.1 0.1 1
chassis
wheel_rr
0 1 0
wheel_fl_joint
wheel_fr_joint
wheel_rl_joint
wheel_rr_joint
front_steering_joint
0.15
0.6
0.8
0.5
<?xml version="1.0" ?>
<sdf version="1.11">
<model name="tracked_vehicle">
<static>false</static>
<!-- 车身 -->
<link name="chassis">
<pose>0 0 0.15 0 0 0</pose>
<inertial>
<mass>30.0</mass>
<inertia>
<ixx>0.3</ixx><ixy>0</ixy><ixz>0</ixz>
<iyy>0.5</iyy><iyz>0</iyz>
<izz>0.5</izz>
</inertia>
</inertial>
<collision name="chassis_collision">
0.8 0.4 0.15
0.8 0.4 0.15
0.3 0.3 0.2 1
0 0.25 0 0 0 0
5.0
0.0500
0.050
0.05
0.8 0.1 0.1
2.0
2.0
0.8 0.1 0.1
0.1 0.1 0.1 1
chassis
track_left
0 1 0
0 -0.25 0 0 0 0
5.0
0.0500
0.050
0.05
0.8 0.1 0.1
2.0
2.0
0.8 0.1 0.1
0.1 0.1 0.1 1
chassis
track_right
0 1 0
track_left_joint
track_right_joint
0.1
0.5
50
5
<!-- 激光雷达 - 前置 -->
<link name="front_laser_link">
<pose>0.4 0 0.15 0 0 0</pose>
<sensor name="front_laser" type="gpu_lidar">
<update_rate>10</update_rate>
<ray>
<scan>
<horizontal>
<samples>360</samples>
<resolution>1</resolution>
</horizontal>
</scan>
<range>
<min>0.1</min>
<max>30</max>
</range>
</ray>
<plugin filename="gz-sim-sensors-gpu-lidar" name="gz::sim::systems::GpuRaySensor">
<ros>
<namespace>/robot
0.3 0 0.2 0 0.3 0
30
1.57
640
480
/robot
0 0 0.1 0 0 0
100
/robot
0 0 0.2 0 0 0
10
/robot
<gazebo reference="wheel">
<surface>
<friction>
<ode>
<mu>1.0</mu>
<mu2>1.0</mu2>
<fdir1>0 0 1</fdir1>
<slip1>0</slip1>
<slip2>0</slip2>
</ode>
<contact>
<kp>1e7</kp>
<kd>1</kd>
</contact>
</friction>
</surface>
</gazebo>
<gazebo reference="base_link">
<!-- 附加负载质量 -->
<mass>2.0</mass>
</gazebo>
解决方案:
解决方案: