Isaac Sim中加载并测试机器人动作

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中导入机器人相关内容介绍,至此结束。

相关推荐
WWZZ20251 个月前
Sim2Sim理论与实践1:坐标系与位姿变换
人工智能·算法·机器人·大模型·具身智能·isaac sim
WWZZ20251 个月前
具身智能入门Isaac Sim——机器人设置-中级搭建机械臂
机器人·大模型·具身智能·isaac sim
WWZZ20252 个月前
具身智能入门Isaac Sim——机器人设置-初级设计轮式机器人1
机器人·大模型·机械臂·ros2·具身智能·isaac sim
WWZZ20253 个月前
Isaac Sim入门——基础用法
机器人·大模型·机械臂·ros2·具身智能·isaac sim
WWZZ20253 个月前
Isaac Sim安装
机器人·大模型·具身智能·isaac sim·四足·人形
Code-world-13 个月前
NVIDIA Isaac Sim 安装教程
linux·人工智能·ubuntu·强化学习·isaac sim
奔跑的花短裤3 个月前
ubuntu安装Isaac sim4.5与强化学习使用
linux·ubuntu·机器人·强化学习·isaac sim·isaac lab
potato_15545 个月前
Windows11系统安装Isaac Sim和Isaac Lab记录
人工智能·学习·isaac sim·isaac lab
AndrewHZ8 个月前
【三维渲染技术讨论】Blender输出的三维文件里的透明贴图在Isaac Sim里会丢失, 是什么原因?
算法·3d·blender·nvidia·贴图·具身智能·isaac sim