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

相关推荐
BSD_CGQ3 小时前
FSR 压力传感器 I2C 接口实战:地址规划与 MCU 软件滤波的工程取舍
嵌入式硬件·机器人·压力传感器·柔性薄膜压力传感器
火星机器人life5 小时前
|机器人强化学习系列第 1 篇|机器人为什么需要强化学习?传统控制方法的四个局限
机器人
xwz小王子5 小时前
Nature Machine Intelligence|微型机器人强化学习训练缩短至分钟级:每秒19万次交互
人工智能·机器人
某林2125 小时前
局部路径规划器 DWB:速度采样与评分权重的取值分析
人工智能·算法·架构·机器人·技术复盘
七夜zippoe5 小时前
启元 Q1 三份 MJCF 仿真文件对比:显示 / 运动学 / 全范围怎么选
ai·机器人·仿真·robot·mjcf
七夜zippoe6 小时前
启元 Q1 关节指令预检器:URDF 限位拦越界指令
ai·机器人·urdf·启元·关节
七夜zippoe6 小时前
启元 Q1 腿部运动学逆解:Python 算站立下蹲关节角
开发语言·python·ai·机器人·腿部运动学
Axis tech6 小时前
Xsens&Manus全身数据采集解决方案,用精确数据训练您的具身智能
人工智能·科技·机器人
七夜zippoe7 小时前
启元 Q1 接口地图:从 aimdk_msgs 逆向出 25 个 Service/Topic 的完整清单
ai·机器人·逆向·启元·接口地图
Quanqiucard8 小时前
四轮巡检机器人物联网卡怎么选?5 条硬指标 + 4 重干扰
物联网·机器人