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

相关推荐
正在走向自律11 小时前
怎样区分人工智能、离身智能、具身智能、智能机器人与人形机器人
人工智能·机器人·具身智能·人形机器人·智能机器人·离身智能
神经智研社19 小时前
ROS2-13章:机器人仿真环境介绍Turtlesim示例
机器人·机器人环境搭建·ros2 jazzy·机器人坐标系系统
Excel效率人20 小时前
飞书自动回复机器人开发:@机器人自助查询物流信息
机器人·node.js·飞书
quanjui21 小时前
从零跑通 PPO 双足机器人
机器人
茯苓gao2 天前
嵌入式开发笔记:工业机器人通信协议深度解析——从现场总线到工业以太网
笔记·嵌入式硬件·学习·机器人·信息与通信
鲁邦通物联网2 天前
基于GPIO与高频滤波的状态机:非侵入式机器人梯控精准平层判定实现
机器人·巡检机器人·机器人梯控·agv梯控·非侵入式采集·机器人乘梯·机器人自主乘梯
牛哥带你学代码2 天前
VLA 与机器人基础模型:具身智能的下一代操作系统
人工智能·机器人
code_pgf2 天前
大模型赋能家庭服务机器人的场景适应性分析
大数据·人工智能·机器人
深度森林2 天前
机器人领域“工业机械臂”高价值专利案例:一种工业机器人智能分拣方法
机器人·工业机械臂