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.
?