Isaac Sim中通过URDF文件进行机器人抓手安装

Isaac Sim中进行抓手安装可以通过URDF文件导入方式。

通过编辑URDF文件方式,将相应的3D数据(如stl文件)安装至机器人上。具体实现方式如下:

①准备好3D数据

准备好抓手安装部位(hand.stl)以及可动的夹爪部位的3D数据(finger.stl)

②进行URDF文件编辑

如下所示,通过在原有机器人URDF文件基础上,编辑追加抓手文件数据。

复制代码
<?xml version="1.0" ?>
<robot name="melfa_rv-8crl" xmlns:xacro="http://wiki.ros.org/xacro">
  <!-- Colors -->
  <material name="melfa_rv-8crl_grey">
    <color rgba="0.75 0.75 0.75 1"/>
  </material>
  <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
  <!-- world joints -->
  <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
  <link name="world"/>
  <!-- fixed joint -->
  <joint name="world_joint" type="fixed">
    <parent link="world"/>
    <child link="base_link"/>
    <origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0"/>
  </joint>
  <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
  <!--~~~~~~  ROBOT  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
  <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
  <!-- Base Link -->
  <link name="base_link">
    <visual>
      <origin xyz="0 0 0" rpy="1.5708 -0 3.1416" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/base.stl"/>
      </geometry>
      <material name="melfa_rv-8crl_grey"/>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="1.5708 -0 3.1416" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/base.stl"/>
      </geometry>
    </collision>
  </link>
  <!-- Link 1 -->
  <joint name="joint_1" type="revolute">
    <origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
    <axis xyz="0 0 1"/>
    <parent link="base_link"/>
    <child link="link_1"/>
    <limit effort="0" lower="-2.96706" upper="2.96706" velocity="0"/>
  </joint>
  <link name="link_1">
    <visual>
      <origin xyz="0 0 0.388" rpy="1.5708 -0 3.1416" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/shoulder.stl"/>
      </geometry>
      <material name="melfa_rv-8crl_grey"/>
    </visual>
    <collision>
      <origin xyz="0 0 0.388" rpy="1.5708 -0 3.1416" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/shoulder.stl"/>
      </geometry>
    </collision>
  </link>
  <!-- Link 2 -->
  <joint name="joint_2" type="revolute">
    <origin rpy="0 0 0" xyz="0.0 0.0 0.390"/>
    <axis xyz="0 1 0"/>
    <parent link="link_1"/>
    <child link="link_2"/>
    <limit effort="0" lower="-1.919862" upper="1.919862" velocity="0"/>
  </joint>
  <link name="link_2">
    <visual>
      <origin xyz="0 0 0" rpy="1.5708 -0 3.1416" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/upper_arm.stl"/>
      </geometry>
      <material name="melfa_rv-8crl_grey"/>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="1.5708 -0 3.1416" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/upper_arm.stl"/>
      </geometry>
    </collision>
  </link>
  <!-- Link 3 -->
  <joint name="joint_3" type="revolute">
    <origin rpy="0 0 0" xyz="0.0 0.0 0.450"/>
    <axis xyz="0 1 0"/>
    <parent link="link_2"/>
    <child link="link_3"/>
    <limit effort="0" lower="0" upper="2.879793" velocity="0"/>
  </joint>
  <link name="link_3">
    <visual>
      <origin xyz="0 0 0" rpy="1.5708 1.5708 3.1416" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/elbow.stl"/>
      </geometry>
      <material name="melfa_rv-8crl_grey"/>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="1.5708 1.5708 3.1416" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/elbow.stl"/>
      </geometry>
    </collision>
  </link>
  <!-- Link 4 -->
  <joint name="joint_4" type="revolute">
    <origin rpy="0 0 0" xyz="-0.100 0.0 0.0"/>
    <axis xyz="0 0 1"/>
    <parent link="link_3"/>
    <child link="link_4"/>
    <limit effort="0" lower="-3.490659" upper="3.490659" velocity="0"/>
  </joint>
  <link name="link_4">
    <visual>
      <origin xyz="0 0 0.469" rpy="1.5708 1.5708 3.1416" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/forearm.stl"/>
      </geometry>
      <material name="melfa_rv-8crl_grey"/>
    </visual>
    <collision>
      <origin xyz="0 0 0.469" rpy="1.5708 1.5708 3.1416" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/forearm.stl"/>
      </geometry>
    </collision>
  </link>
  <!-- Link 5 -->
  <joint name="joint_5" type="revolute">
    <origin rpy="0 0 0" xyz="0.0 0.0 0.470"/>
    <axis xyz="0 1 0"/>
    <parent link="link_4"/>
    <child link="link_5"/>
    <limit effort="0" lower="-2.094395" upper="2.094395" velocity="0"/>
  </joint>
  <link name="link_5">
    <visual>
      <origin xyz="0 0 0" rpy="1.5708 1.5708 0" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/wrist.stl"/>
      </geometry>
      <material name="melfa_rv-8crl_grey"/>
    </visual>
    <collision>
      <origin xyz="0 0 0" rpy="1.5708 1.5708 0" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/wrist.stl"/>
      </geometry>
    </collision>
  </link>
  <!-- Link 6 -->
  <joint name="joint_6" type="revolute">
    <origin rpy="0 0 0" xyz="0.0 0.0 0.085"/>
    <axis xyz="0 0 1"/>
    <parent link="link_5"/>
    <child link="link_6"/>
    <limit effort="0" lower="-6.283185" upper="6.283185" velocity="0"/>
  </joint>
  <link name="link_6">
    <visual>
      <origin xyz="0 0 -0.085" rpy="0 1.5708 -1.5708" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/hand_flange.stl"/>
      </geometry>
      <material name="melfa_rv-8crl_grey"/>
    </visual>
    <collision>
      <origin xyz="0 0 -0.085" rpy="0 1.5708 -1.5708" />
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/hand_flange.stl"/>
      </geometry>
    </collision>
  </link>
  <!-- Tool0 -->
  <joint name="link_6-to-tool0" type="fixed">
    <origin rpy="0 0 0" xyz="0 0 0"/>
    <parent link="link_6"/>
    <child link="tool0"/>
  </joint>
  <link name="tool0"/>
  <joint name="panda_hand_joint" type="fixed">
    <parent link="tool0"/>
    <child link="panda_hand"/>
    <origin rpy="0 0 -0.785398163397" xyz="0 0 0"/>
  </joint>
  <link name="panda_hand">
    <visual>
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/hand.dae"/>
      </geometry>
    </visual>
    <collision>
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/hand.stl"/>
      </geometry>
    </collision>
    <inertial>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <mass value="0.5583304799"/>
      <inertia ixx="0.0023394448" ixy="0.0" ixz="0.0" iyy="0.0005782786" iyz="0" izz="0.0021310296"/>
    </inertial>
  </link>
  <link name="panda_leftfinger">
    <visual>
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/finger.dae"/>
      </geometry>
    </visual>
    <collision>
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/finger.stl"/>
      </geometry>
    </collision>
    <inertial>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <mass value="0.0140552232"/>
      <inertia ixx="4.20413082650939E-06" ixy="0.0" ixz="0.0" iyy="3.90263687466755E-06" iyz="0" izz="1.33474964199095E-06"/>
    </inertial>
  </link>
  <link name="panda_rightfinger">
    <visual>
      <origin rpy="0 0 3.14159265359" xyz="0 0 0"/>
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/finger.dae"/>
      </geometry>
    </visual>
    <collision>
      <origin rpy="0 0 3.14159265359" xyz="0 0 0"/>
      <geometry>
        <mesh filename="package://melfa_rv-8crl/meshes/finger.stl"/>
      </geometry>
    </collision>
    <inertial>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <mass value="0.0140552232"/>
      <inertia ixx="4.20413082650939E-06" ixy="0.0" ixz="0.0" iyy="3.90263687466755E-06" iyz="0" izz="1.33474964199095E-06"/>
    </inertial>
  </link>
  <joint name="panda_finger_joint1" type="prismatic">
    <parent link="panda_hand"/>
    <child link="panda_leftfinger"/>
    <origin rpy="0 0 0" xyz="0 0 0.0584"/>
    <axis xyz="0 1 0"/>
    <limit effort="20" lower="0.0" upper="0.04" velocity="0.2"/>
  </joint>
  <joint name="panda_finger_joint2" type="prismatic">
    <parent link="panda_hand"/>
    <child link="panda_rightfinger"/>
    <origin rpy="0 0 0" xyz="0 0 0.0584"/>
    <axis xyz="0 -1 0"/>
    <limit effort="20" lower="0.0" upper="0.04" velocity="0.2"/>
    <mimic joint="panda_finger_joint1"/>
  </joint>
</robot>

其中分为Link和Joint描述,可以参考如下文章:

⑤Pybullet之URDF文件说明及示例_sketchup 导出urdf-CSDN博客

由于夹爪属于联动,因此在另一半夹爪描述时,追加了"mimic"描述。

最后通过"File"---"import"方式导入。

以上为通过URDF文件导入方式介绍。

相关推荐
Rocktech_ruixun6 小时前
机器人本地跑LLM大模型对主板硬件有什么要求?瑞迅科技RK3588/3568方案选型解析
人工智能·科技·嵌入式硬件·机器人·边缘计算
北京盟通科技官方账号8 小时前
高通 IQ-9075 部署 EC-Master 实战指南:环境构建与实时 Linux (RT) 系统烧录
人工智能·机器人·yocto·ethercat·ecmaster·盟通科技·rt kernel
kyle~16 小时前
光流传感器
机器人·传感器
Mr.朱鹏18 小时前
科技周报(第2026-09-10期):模型激战量子降温
人工智能·科技·chatgpt·机器人·开源
鲁邦通物联网18 小时前
硬件开发笔记:非侵入式机器人梯控外挂平层传感器的滤波与校准实录
机器人·机器人梯控·agv梯控·机器人乘梯·机器人自主乘梯
赖赖-19 小时前
工业一体机在机器人领域的应用:从控制架构到场景选型的全面解读
ai·架构·机器人·电脑
CCC:CarCrazeCurator20 小时前
LeRobot 深度技术方案解析:Hugging Face 端到端机器人学习框架
学习·机器人
海盗123420 小时前
AI 新闻日报 2026-09-10:DeepSeek V4.1 Flash 上线降价60%、京东狼族机器人军团、优必选联姻沐曦造芯
人工智能·机器人
DogDaoDao20 小时前
DexPIE:让人类手把手教灵巧手“回炉重造“——真实世界后训练 RL 深度拆解
深度学习·机器学习·机器人·人形机器人·运动轨迹·模仿学习·dexpie
某林21221 小时前
机器人重启失联:DDS 发现机制与传输层静默故障
人工智能·python·机器人·硬件架构·ros2