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