MoveIt 是一个机器人控制平台,包括了运动规划、操纵、3D 感知、运动学、控制和导航方面的最新技术。PickNik Robotics 是进行 MoveIt 开发的公司,该公司正在探索在内部研发项目中使用 NVIDIA Isaac Sim。项目的目标是提高对操纵的感知,并通过 PickNik 的商业机器人开发平台 MoveIt Studio 让机器人具有更自主的行为。
本文展示了将 MoveIt 2 与 NVIDIA Isaac Sim 中模拟的机器人进行集成的过程。本教程需要一台安装了 Isaac Sim 2022.2.0 的电脑,以及如下所列的系统配置。请参阅 NVIDIA Isaac Sim documentation (https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/overview.html)了解具体的安装细节和要求。
1、NVIDIA Isaac Sim 2022.2.0 安装于 Ubuntu 20.04 主机上。默认位置为$HOME/.local/share/ov/pkg/isaac_sim-2022.2.0 目录。
2、安装 docker。
3、克隆 MoveIt2 教程,以构建一个基于 Ubuntu 22.04 Humble 的 Docker 镜像,该镜像可以与 Isaac Sim 通信并运行本教程。
ros2 _ control 介绍
要执行 MoveIt 计算的轨迹,建议使用 ros2_control 框架进行管理并与您的机器人通信(无论真实的还是模拟的)。这种方法为开发人员提供了一个通用的 API,使软件能够通过简单地更改一些启动参数,在许多不同的机器人类型和内置传感器之间切换。
例如,Panda 机器人 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>
硬件元件可以是不同类型的。插件<plugin>mock_components/GenericSystem<plugin> 是一个简单的系统,用于转发输入的 command_interface 要跟踪的节点值 state_interface。该系统模拟了对节点的完美控制。
为了将机器人的配置扩展到 Isaac Sim ,首先需要引入 topic_based_ros2_control。此硬件接口是一个订阅和发布已配置主题的系统。对于本教程,topic /isaac_joint_states 将包含机器人的当前状态,并且 将使用 /isaac_joint_commands 进行驱动 。
本教程中使用的 moveit_resources_panda_moveit_config 不支持连接到硬件。因此当标志 ros2_control_hardware_type 设置为 isaac 时,表示 ros2_control.xacro 已更新并装载 TopicBasedSystem 插件。
<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 topic。要了解有关配置 Isaac Sim 机器人与 ROS 2 通信的信息,请参阅 ROS 2 Joint Control: Extension Python Scripting
(https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/tutorial_ros2_manipulation.html)。
计算机设置
按照以下步骤设置计算机。
1、使用 Workstation Installation documentation 安装 Isaac Sim.
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 Interactive Marker Demo
运行以下脚本以测试 mock_components/GenericSystem 硬件接口:
docker compose up demo_mock_components
RViz 将运行 Panda 机器人,并使用 mock_components 以模拟机器人并执行轨迹。如果这是您第一次同时使用 MoveIt 与 RViz ,请参阅 Quickstart in RViz 教程(https://moveit.picknik.ai/humble/doc/tutorials/quickstart_in_rviz/quickstart_in_rviz_tutorial.html)。
完成测试后,在终端中选择 Ctrl C 停止容器。
使用 Isaac Sim 运行
MoveIt Interactive Marker Demo
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 将运行 Panda 机器人,然后使用 TopicBasedSystem 用于与模拟机器人通信并执行轨迹的接口。
视频 1:了解如何集成 MoveIt 和 NVIDIA Isaac Sim
结论
将 MoveIt 与 NVIDIA Isaac Sim 集成,开发人员能够创建反映真实世界的复杂逼真的机器人系统模拟。通过将这两个框架与 ros2 _ control 配对,您可以在不同的模拟器和真实硬件之间快速切换,以快速迭代新算法和机器人行为。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved