游乐游手机版
首页/AI热点日报/热点详情

ROS 2 MoveIt与NVIDIA Isaac Sim联合构建逼真机器人仿真

类型:热点整理2026-07-12
机器人开发中,运动规划与控制始终是核心难题。MoveIt 作为集成了运动规划、操纵、3D感知、运动学、控制和导航最新技术的平台,已成为行业标配。而 PickNik Robotics 作为 MoveIt 的主要维护者,正在探索将其与 NVIDIA Isaac Sim 结合,目标是提升操纵感知能力,并通

机器人开发中,运动规划与控制始终是核心难题。MoveIt 作为集成了运动规划、操纵、3D感知、运动学、控制和导航最新技术的平台,已成为行业标配。而 PickNik Robotics 作为 MoveIt 的主要维护者,正在探索将其与 NVIDIA Isaac Sim 结合,目标是提升操纵感知能力,并通过商业平台 MoveIt Studio 赋予机器人更自主的行为。这套组合拳,恰好解决了从仿真到真实部署的鸿沟问题。

使用ROS 2 MoveIt和NVIDIA Isaac Sim创建逼真的机器人模拟

本文展示如何将 MoveIt 2 与 Isaac Sim 中模拟的机器人进行集成。准备工作:一台安装了 Isaac Sim 2022.2.0 的电脑,并满足以下系统配置。安装细节可参考 NVIDIA Isaac Sim documentationhttps://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 标志在模拟和物理机器人之间切换:


  
    mock_components/GenericSystem
  
  
    franka_hardware/FrankaHardwareInterface
    ${robot_ip}
  

这里硬件元件类型不同。插件 mock_components/GenericSystem 是一个简单系统,用于将输入的 command_interface 转发为跟踪的 state_interface 值,模拟对节点的完美控制。

为了将机器人配置扩展到 Isaac Sim,需要引入 topic_based_ros2_control。这个硬件接口会订阅和发布已配置的主题。在本教程中,主题 /isaac_joint_states 包含机器人当前状态,/isaac_joint_commands 用于驱动机器人。

本教程使用的 moveit_resources_panda_moveit_config 本身不支持连接硬件。因此,当标志 ros2_control_hardware_type 设置为 isaac 时,ros2_control.xacro 会更新并装载 TopicBasedSystem 插件:


  mock_components/GenericSystem


  topic_based_ros2_control/TopicBasedSystem
  /isaac_joint_commands
  /isaac_joint_states

包含的 Python 脚本会加载 Panda 机器人,同时构建 OmniGraph 来发布和订阅用于控制机器人的 ROS 主题。关于配置 Isaac Sim 机器人与 ROS 2 通信的更多信息,可参考 ROS 2 Joint Control: Extension Python Scriptinghttps://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”对话框。运行命令:

./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 接口与模拟机器人通信并执行轨迹。

结论

将 MoveIt 与 NVIDIA Isaac Sim 集成,开发者能够创建反映真实世界的复杂逼真的机器人模拟。通过将这两个框架与 ros2_control 配对,你可以在不同的模拟器和真实硬件之间快速切换,从而高效迭代新算法和机器人行为。这正是从仿真到落地的最佳实践路径。

来源:https://m.elecfans.com/article/2080246.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。