MoveIt是一个机器人操纵平台,融合了运动规划、操纵、 3D 感知、运动学、控制和导航方面的最新进展。PickNik Robotics,领导 MoveIt 开发的公司,正在探索使用NVIDIA Isaac Sim在内部研发项目中。该项目的目标是提高对操纵的感知,并通过MoveIt Studio, PickNik 的商业机器人开发平台,具有更自主的行为
这篇文章向您展示了如何将 MoveIt 2 与 NVIDIA ISAAC Sim 中模拟的机器人集成。本教程需要一台安装了 ISAAC Sim 2022.2.0 的机器,以及如下所列的系统配置。请参阅 NVIDIAIsaac Sim documentation了解具体的安装细节和要求
- NVIDIA ISAAC Sim 2022.2.0 安装在 Ubuntu 20.04 主机上
$HOME/.local/share/ov/pkg/isaac_sim-2022.2.0
目录这是默认位置。 - Docker 已安装。
- 克隆 MoveIt2 教程(请参阅下面关于计算机设置的部分),以构建一个基于 Ubuntu 22.04 Humble 的 Docker 映像,该映像可以与 ISAAC Sim 通信并运行本教程。
ros2 _ control 简介
要执行 MoveIt 计算的轨迹,我建议使用ros2_control用于管理和与您的机器人通信的框架,无论是真实的还是模拟的。建议使用这种方法,因为它为开发人员提供了一个通用的 API ,使您的软件能够通过简单地更改一些启动参数来在许多不同的机器人类型和内置传感器之间切换。
例如,熊猫机器人ros2_control.xacro
使用标志use_fake_hardware
以在被模拟或连接到物理机器人之间切换,如下所示
<hardware>
<xacro:if value="${use_fake_hardware}">
<plugin>mock_components/GenericSystem</plugin>
</xacro:if>
<xacro:unless value="${use_fake_hardware}">
<plugin>franka_hardware/FrankaHardwareInterface</plugin>
<param name="robot_ip">${robot_ip}</param>
</xacro:unless>
</hardware>
Hardware components可以是不同类型的。插件<plugin>mock_components/GenericSystem</plugin>
是一个简单的系统,用于转发传入的command_interface
要跟踪的值state_interface
关节的。该系统模拟对关节的完美控制。
为了将机器人的配置扩展到 ISAAC Sim ,有必要首先介绍topic_based_ros2_control。此硬件接口是一个订阅和发布已配置主题的系统。对于本教程,主题/isaac_joint_states
将包含机器人的当前状态,并且/isaac_joint_commands
将用于驱动它
这个moveit_resources_panda_moveit_config本教程中使用的不支持连接到硬件。因此ros2_control.xacro
现在更新为加载TopicBasedSystem
当标志ros2_control_hardware_type
设置为isaac
.
<xacro:if value="${ros2_control_hardware_type == 'mock_components'}">
<plugin>mock_components/GenericSystem</plugin>
</xacro:if>
<xacro:if value="${ros2_control_hardware_type == 'isaac'}">
<plugin>topic_based_ros2_control/TopicBasedSystem</plugin>
<param name="joint_commands_topic">/isaac_joint_commands</param>
<param name="joint_states_topic">/isaac_joint_states</param>
</xacro:if>
包含的 Python 脚本加载 Panda 机器人并构建OmniGraph发布和订阅用于控制机器人的 ROS 主题。要了解有关配置 ISAAC Sim 机器人与 ROS 2 通信的信息,请参阅ROS 2 Joint Control: Extension Python Scripting.
计算机设置
按照以下步骤设置计算机。
1.使用Workstation Installation documentation.
2 .使用以下脚本执行 MoveIt2 教程回购的浅层克隆:
git clone https://github.com/ros-planning/moveit2_tutorials.git -b humble --depth 1
3 .打开克隆教程的文件夹,然后切换到以下目录:
cd moveit2_tutorials/doc/how_to_guides/isaac_panda
4 .构建 Docker 镜像:
docker compose build
使用模拟组件运行 MoveIt 交互式标记演示
测试mock_components/GenericSystem
硬件接口,运行以下脚本:
docker compose up demo_mock_components
RViz 将与熊猫机器人一起使用mock_components
以模拟机器人并执行轨迹。请参阅Quickstart in RViz如果这是您第一次将 MoveIt 与 RViz 一起使用,请参阅教程。
完成测试后,选择Ctrl+C
在终端中停止集装箱。
使用 ISAAC Sim 运行 MoveIt 交互式标记演示
1 .在主机上,导航到教程启动目录:
cd moveit2_tutorials/doc/how_to_guides/isaac_panda/launch
2 .加载预先配置的 Panda 机器人以使用本教程。请注意,此步骤假定 ISAAC Sim 安装在$HOME/.local/share/ov/pkg/isaac_sim-2022.2.0"
目录
此步骤需要几分钟的时间来下载资产并设置 ISAAC Sim 。耐心等待,不要点击Force Quit
模拟器启动时弹出的对话框。要加载 Panda 机器人,请运行以下命令:
./python.sh isaac_moveit.py
3 .来自moveit2_tutorials/doc/how_to_guides/isaac_panda
目录,启动一个连接到 ISAAC Sim 的容器,使用topic_based_ros2_control/TopicBasedSystem
硬件接口:
docker compose up demo_isaac
RViz 将使用TopicBasedSystem
用于与模拟机器人通信并执行轨迹的接口。
结论
将 MoveIt 与 NVIDIA ISAAC Sim 相结合,使开发人员能够创建反映真实世界的复杂逼真的机器人系统模拟。通过将这两个框架与 ros2 _ control 配对,您可以在不同的模拟器和真实硬件之间快速切换,以快速迭代新算法和机器人行为。有关学习或为 MoveIt 做出贡献的更多信息,请访问MoveIt website.