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文件导入方式介绍。

相关推荐
硅谷秋水2 小时前
MotuBrain:一种用于机器人控制的高级世界动作模型
机器学习·计算机视觉·语言模型·机器人
米饭不加菜2 小时前
机器人三次多项式插值和带抛物线过渡的线性插值法详解
机器人
AI科技星2 小时前
基于代数拓扑与等腰梯形素数对网格【乖乖数学】
人工智能·算法·决策树·机器学习·数学建模·数据挖掘·机器人
爆打维c3 小时前
5.ROS话题通信编程(万字详解)
机器人
东京老树根3 小时前
Arduino - 入门03 - Arduino编程基础 Arduino常用函数-digitalRead
单片机·机器人
东京老树根4 小时前
Arduino - 入门01 - Arduino,SimulIDE 简介
单片机·机器人
YJlio13 小时前
7.4.5 Windows 11 企业网络连接与网络重置实战:远程访问、本地策略与故障恢复
前端·chrome·windows·python·edge·机器人·django
xwz小王子13 小时前
Science Robotics基础模型正在改写机器人集群的“游戏规则”
数据库·人工智能·机器人
沫儿笙20 小时前
机器人二保焊焊接节气装置
人工智能·机器人