Isaac Sim中导入机器人通常通过机器人示例或者通过URDF文件导入。接下来演示通过使用Isaac Sim 5.1.0进行导入演示。
一 、通过机器人示例导入
①在Isaac Sim 5.1.0中,内置了多种机器人模型示例,可以直接加载使用。如下所示,选择Window > Examples > Robotics Examples
然后弹跳出如下窗口

②接下来继续选择"IMPORT ROBOTS",此处选择"UR10 URDF"。
③接着点击"LOAD"将"UR10"机器人加载至Isaac Sim中。

④由于显示比较暗,可以通过切换灯光方式使其变亮
⑤接着通过菜单栏 Tools> Physics > Physics Inspector 启用Physics Inspector(物理检查器)

⑥接着在Physics Inspector窗口中点击箭头小标识后,弹跳出如下"Select Articulation"窗口。
⑦接着选择"root_joint"后点击"Select"按钮
如下所示,右侧窗口中就会出现机器人操作界面:
⑧接着就可以通过拖动蓝色条,从而移动机器人

⑨默认的话,通过力矩方式驱动,机器人动作时会看到有些抖动。也可以通过选择"Joint States Position" 后,通过指定位置方式移动机器人。

关于UR10的导入方式源码,可以通过点击"Open Source Code"按钮查看。
此外,UR10的URDF文件保存在以下地址:
isaac-sim-standalone-5.1.0-windows-x86_64\exts\isaacsim.asset.importer.urdf\data\urdf\robots\ur10
<?xml version="1.0" encoding="utf-8"?>
<robot name="ur10">
<link name="base_link">
<collision>
<origin xyz="0 0 0.02" rpy="0 0 0"/>
<geometry>
<cylinder radius="0.075" length="0.03"/>
</geometry>
</collision>
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="../meshes/ur10_base.obj" scale="1 1 1"/>
</geometry>
</visual>
<inertial>
<mass value="200.0"/>
</inertial>
</link>
<link name="shoulder_link">
<visual>
<origin xyz="0 0 -.1273" rpy="0 0 0"/>
<geometry>
<mesh filename="../meshes/ur10_shoulder.obj" scale="1 1 1"/>
</geometry>
</visual>
<collision>
<origin xyz="0 0.0 0.0027000046)" rpy="0 0 0"/>
<geometry>
<cylinder radius="0.075" length="0.17"/>
</geometry>
</collision>
<collision>
<origin xyz="0 .0425 0.007000065" rpy="1.57079632679 0 0"/>
<geometry>
<cylinder radius="0.075" length="0.085"/>
</geometry>
</collision>
<inertial>
<mass value="7.1"/>
</inertial>
</link>
<link name="upper_arm_link">
<visual>
<origin xyz="-0.0007000065 -0.044941006 0" rpy="0 -1.57079632679 0"/>
<geometry>
<mesh filename="../meshes/ur10_upper_arm.obj" scale="1 1 1"/>
</geometry>
</visual>
<collision>
<origin xyz="-0.0007000065 -0.044941006 0" rpy="1.57079632679 0 0"/>
<geometry>
<cylinder radius="0.075" length="0.175"/>
</geometry>
</collision>
<collision>
<origin xyz="-0.0007000065 -0.044941006 0.306" rpy="0 0 0"/>
<geometry>
<cylinder radius="0.06" length="0.612"/>
</geometry>
</collision>
<collision>
<origin xyz="-0.0007000065 -0.044941006 0.612" rpy="1.57079632679 0 0"/>
<geometry>
<cylinder radius="0.06" length="0.136"/>
</geometry>
</collision>
<inertial>
<mass value="12.7"/>
</inertial>
</link>
<link name="forearm_link">
<visual>
<origin xyz="-0.0007000351 -0.0010410404 0" rpy="0 -1.57079632679 0"/>
<geometry>
<mesh filename="../meshes/ur10_forearm.obj" scale="1 1 1"/>
</geometry>
</visual>
<collision>
<origin xyz="-0.0007000351 -0.0041510403 0" rpy="1.57079632679 0 0"/>
<geometry>
<cylinder radius="0.06" length="0.126"/>
</geometry>
</collision>
<collision>
<origin xyz="-0.0007000351 -0.0010410404 0.286" rpy="0 0 0"/>
<geometry>
<cylinder radius="0.047" length="0.572"/>
</geometry>
</collision>
<collision>
<origin xyz="-0.0007000547 0.0017589596 0.572" rpy="1.57079632679 0 0"/>
<geometry>
<cylinder radius="0.047" length="0.118"/>
</geometry>
</collision>
<inertial>
<mass value="4.27"/>
</inertial>
</link>
<link name="wrist_1_link">
<visual>
<origin xyz="0.0002999115 0.11495896 -0.0007000637" rpy="-3.14159265359 0 -3.14159265359"/>
<geometry>
<mesh filename="../meshes/ur10_wrist_1.obj" scale="1 1 1"/>
</geometry>
</visual>
<collision>
<origin xyz="0.0002999115 0.08745896 -0.0007000637" rpy="1.57079632679 0 3.14159265359"/>
<geometry>
<cylinder radius="0.047" length="0.055"/>
</geometry>
</collision>
<collision>
<origin xyz="0.0002999115 0.11495896 0.0020999363" rpy="-3.14159265359 0 -3.14159265359"/>
<geometry>
<cylinder radius="0.047" length="0.118"/>
</geometry>
</collision>
<inertial>
<mass value="1.0"/>
</inertial>
</link>
<link name="wrist_2_link">
<visual>
<origin xyz="0.0002999115 0.000058994293 0.11529993" rpy="-3.14159265359 0 -3.14159265359"/>
<geometry>
<mesh filename="../meshes/ur10_wrist_2.obj" scale="1 1 1"/>
</geometry>
</visual>
<collision>
<origin xyz="0.0002999115 0.000058994293 0.08829992" rpy="-3.14159265359 0 -3.14159265359"/>
<geometry>
<cylinder radius="0.047" length="0.054"/>
</geometry>
</collision>
<collision>
<origin xyz="0.0002999115 0.0028589943 0.11529993" rpy="1.57079632679 0 3.14159265359"/>
<geometry>
<cylinder radius="0.047" length="0.118"/>
</geometry>
</collision>
<inertial>
<mass value="1.0"/>
</inertial>
</link>
<link name="wrist_3_link">
<visual>
<origin xyz="0.0002999115 0.09205898 -0.00040007472" rpy="-3.14159265359 0 -3.14159265359"/>
<geometry>
<mesh filename="../meshes/ur10_wrist_3.obj" scale="1 1 1"/>
</geometry>
</visual>
<collision>
<origin xyz="0.0002999115 0.077058983 -0.00040007472" rpy="1.57079632679 0 -3.14159265359"/>
<geometry>
<cylinder radius="0.047" length="0.03"/>
</geometry>
</collision>
<inertial>
<mass value="0.365"/>
</inertial>
</link>
<joint name="shoulder_pan_joint" type="revolute">
<origin rpy="0 0 0" xyz="0 0 0.1273"/>
<axis xyz="0 0 1" />
<limit upper="6.28318" lower="-6.28318" velocity="2.0944" effort="330" />
<parent link="base_link" />
<child link ="shoulder_link" />
</joint>
<joint name="shoulder_lift_joint" type="revolute">
<origin rpy="0.0 1.5707963267948966 0.0" xyz="0.0 0.220941 0.0"/>
<axis xyz="0 1 0" />
<limit upper="6.28318" lower="-6.28318" velocity="2.0944" effort="330.0" />
<parent link ="shoulder_link" />
<child link="upper_arm_link" />
</joint>
<joint name="elbow_joint" type="revolute">
<origin rpy="0.0 0.0 0.0" xyz="0.0 -0.1719 0.612"/>
<axis xyz="0 1 0" />
<limit upper="6.28318" lower="-6.28318" velocity="3.14159" effort="150.0" />
<parent link ="upper_arm_link" />
<child link="forearm_link" />
</joint>
<joint name="wrist_1_joint" type="revolute">
<origin rpy="0.0 1.5707963267948966 0.0" xyz="0.0 0.0 0.5723"/>
<axis xyz="0 1 0" />
<limit upper="6.28318" lower="-6.28318" velocity="3.14159" effort="56.0" />
<parent link ="forearm_link" />
<child link="wrist_1_link" />
</joint>
<joint name="wrist_2_joint" type="revolute">
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.1149 0.0"/>
<axis xyz="0 0 1"/>
<limit upper="6.28318" lower="-6.28318" velocity="3.14159" effort="56.0" />
<parent link ="wrist_1_link" />
<child link="wrist_2_link" />
</joint>
<joint name="wrist_3_joint" type="revolute">
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.1157"/>
<axis xyz="0 1 0" />
<limit upper="6.28318" lower="-6.28318" velocity="3.14159" effort="56.0" />
<parent link ="wrist_2_link" />
<child link="wrist_3_link" />
</joint>
<joint name="ee_fixed_joint" type="fixed">
<parent link="wrist_3_link"/>
<child link="ee_link"/>
<origin rpy="0.0 0.0 1.5707963267948966" xyz="0.0 0.0922 0.0"/>
</joint>
<link name="ee_link">
<collision>
<geometry>
<box size="0.01 0.01 0.01"/>
</geometry>
<origin rpy="0 0 0" xyz="-0.01 0 0"/>
</collision>
</link>
</robot>
其中,由于UR10的URDF文件中关于"Joint"的<limit> 标签里有"effort="56.0"等相关描述( effort 代表的是该关节电机所能输出的最大力矩(Torque)),因此此前在操作机器人时,可以通过力矩方式控制机器人。
二、通过URDF文件导入
接下来演示通过URDF文件方式导入机器人。
①通过点击File>Import后选择事先准备好的URDF文件,此处演示的为RV-8CRL-D机器人的URDF文件。

②此时如果选择 Tools> Physics > Physics Inspector后,默认的方式无法移动机器人。此处需要改为"Joint State Position"。


主要原因为在事先准备的URDF文件中没有包含**effort相关描述。**
<?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"/>
</robot>
以上为Isaac Sim中导入机器人相关内容介绍,至此结束。
