前情回顾

[Isaac Sim4.5]在Isaac Sim中模拟你的第一个机器人



前言

由于上一篇博主是在Windows上操作的,但是由于ROS2对Windos的支持并不理想,所以这一篇博主转到了Ubuntu24.04.3LTS(官方博客是22.04,但是博主显卡版本过高,22.04安装不成功,只好用24.04版本了。ROS2在22版本上是humble,但是在24版本上是jazzy,在获取ROS2安装文件时需要注意路径)

官方教程地址

废话不多说,书接上文

访问数据

安装ROS2

在本模块中,你将学习如何将传感器数据从 Isaac Sim流式传输到 ROS 2(机器人操作系统 2),从而实现高级数据处理与可视化。你需要搭建 ROS 2 环境、集成 ROS 2 Bridge(桥接)扩展,并配置 ActionGraph(动作图)以实现数据流式传输。完成本模块后,你将能够在 RViz(ROS 可视化工具)中可视化传感器数据,并确保 Isaac Sim 与 ROS 2 之间实现无缝通信。

注意事项
本课程中,我们在 Ubuntu 系统上采用Running Native ROS方法。请遵循以下路径下的说明进行操作:运行原生 ROS(Running Native ROS)> ROS 2 > Ubuntu 22.04 > Humble 版本。

PS:博主使用的Ubuntu24.04>Jazzy版本

教程如下:从零开始:乌班图(Ubuntu24.04.2)之ROS2一键安装

学习目标
安装并配置 ROS 2 Humble(Jazzy) 版本,以实现与 Isaac Sim 的集成。
创建 ActionGraph,用于将 RGB(红绿蓝)数据和激光雷达(lidar)数据流式传输到 ROS 2。
配置 ROS 2 Bridge 扩展,以实现数据通信。
使用 RViz 可视化传感器数据,进行实时监控。
排查与数据流式传输和可视化相关的常见问题

桥接 Isaac Sim 和 ROS 2

我们需要先花一点时间准备仿真环境,以实现与 ROS 2 的集成,从而获得高级数据流式传输和控制功能。本节将指导你配置工作空间,并启动支持 ROS 2 的 Isaac Sim,为机器人仿真与 ROS 2 应用程序之间的无缝通信奠定基础。
完成本节内容后,你将能够通过 ROS 2 流式传输传感器数据并控制机器人,为开展更复杂的机器人项目做好准备。


为 ROS 2 集成做准备
在我们为 “简易机器人”(SimpleRobot)添加了传感器后,接下来要将数据从 Isaac Sim流式传输到 ROS 2(机器人操作系统 2)。在重新启动 Isaac Sim 之前,需先确认系统中已安装 ROS 2 Humble(Jazzy) 版本。

1.检查 ROS 2 安装情况:

访问 ROS2 Humble或者ROS2 Jazzy 安装页面,查阅安装说明以进行验证。
本课程要求使用 Ubuntu 22.04(Ubuntu 24.04) 系统版本。
选择最适合你系统的方式安装,若使用 Ubuntu 22.04,通常通过 Debian 软件包(Debian packages)进行安装。

2.如需更多安装说明,可参考 Isaac Sim 的安装文档。
3.安装 ROS 2 后,需安装 ROS 2 Bridge(桥接工具)所需的vision_msgs_package功能包。


启动支持 ROS 2 的 Isaac Sim
确认 ROS 2 已安装后,我们重新打开 Isaac Sim,以配置环境并启用向 ROS 2 的数据流传输功能。
4.打开一个终端窗口。
5.执行以下命令设置 ROS 工作空间环境(ROS2安装路径):

source /opt/ros/humble/setup.bash ##(Ubuntu22 humble版本)
source /opt/ros/jazzy/setup.bash ##(Ubuntu24 jazzy版本)

该命令可确保 ROS 2 环境配置正确,使你能够正常使用 ROS 2 相关命令。

6.在终端中执行一条简单的 ros2 命令,验证 ROS 2 环境是否已成功配置且安装正常。

例如,若 ROS 2 环境配置正确,执行命令ros2 topic list(查看话题列表)应会输出若干默认值。我们将在后续课程中详细讲解该命令。

7.在终端中执行以下命令启动 Isaac Sim:

./isaac-sim.sh

首次加载可能需要稍长时间,请耐心等待。


Isaac Sim 4.2 版本
8.当Isaac Sim启动后,通过选择 “文件(File)”>“最近打开(Open Recent)”,打开上一模块中保存的项目文件。
9.若有需要,可在菜单栏选择 “窗口(Window)”>“视口(Viewport)”>“视口 2(Viewport 2)”,打开第二个视口。

根据项目需求,将透视视图(perspective view)设置为所需样式。

Isaac Sim 4.5 版本
8.当 Isaac Sim启动后,通过选择 “文件(File)> 最近打开(Open Recent)”,打开上一模块中保存的项目文件。
9.若有需要,可在菜单栏选择 “窗口(Window)> 视口(Viewports)”,勾选 “视口 1(Viewport 1)” 和 “视口 2(Viewport 2)”,以打开第二个视口。

根据项目需求,将透视视图(perspective view)设置为所需样式。

启用 ROS 2 桥接(ROS 2 Bridge)扩展
点击 “窗口(Window)> 扩展(Extensions)”,打开扩展管理器(Extension Manager)。
搜索 “ROS2”。ROS 2 桥接(ROS 2 Bridge)扩展通常默认已启用,若未启用,现在请将其启用。
在这里插入图片描述

ROS 2 桥接扩展提供适用于机器人任务的 OmniGraph 节点(OmniGraph 是 Isaac Sim 中的可视化编程框架,用于构建仿真逻辑)。
在 Isaac Sim 中启用此扩展,可促进仿真环境与 ROS 2 之间的通信。

通过上述步骤,你已完成 Isaac Sim 与 ROS 2 集成的环境准备工作,后续可借助 ROS 2 的功能实现传感器数据流式传输及机器人控制。

访问二维激光雷达数据

获取二维激光雷达(2D Lidar)数据

在本课程的最后一节中,我们将把激光雷达(Lidar)传感器数据从Isaac Sim流式传输到机器人操作系统 2(ROS 2),以实现高级可视化与分析。本节将指导你完成以下操作:创建专门用于处理激光雷达数据的动作图(ActionGraph)、配置节点以读取并发布激光雷达光束数据,以及将数据与仿真的时间戳(Timestamp)进行同步。你需要连接这些节点以确保数据流式传输的准确性,并调整相关设置,从而在 ROS 可视化工具(RViz)中高效可视化激光雷达的输出结果。

完成本节内容后,你将能够利用激光雷达数据监控环境交互情况,进而增强仿真环境中机器人的感知能力。

设置激光雷达(Lidar)数据流

注意事项
继续操作前,请确保 Isaac Sim(艾萨克仿真)中的仿真已停止。

1.创建一个新的动作图(ActionGraph),并将其重命名 “ROS2_LidarStream”
在这里插入图片描述

2.向动作图中添加节点
Isaac 读取激光雷达光束节点(Isaac Read lidar Beams Node): 搜索并添加此节点,它将用于读取激光雷达传感器的数据。
ROS 2 发布激光扫描节点(ROS 2 Publish Laser Scan Node): 添加此节点,用于将激光雷达数据发布到 ROS 2(机器人操作系统 2)。
Isaac 读取仿真时间节点(Isaac Read Simulation Time Node): 添加此节点,用于将数据与仿真的时间戳(timestamp)进行同步。
回放触发节点(On Playback Tick Node): 添加此节点,确保每帧数据都能被处理。
在这里插入图片描述


配置节点
首先,我们来配置 Isaac Read Lidar Beams Node(Isaac 激光雷达光束读取节点)。
3.通过选择 “添加目标(Add Target)” 并搜索 “lidar(激光雷达)”,将 LidarPrim 目标设置为您的激光雷达传感器。此节点会从激光雷达中计算出所有必要信息。
4.接下来,将 Isaac Read Lidar Beams 节点的相关输出连接到 ROS 2 Publish Laser Scan 节点(ROS 2 激光扫描发布节点)的输入。

将 “On Playback Tick(回放触发)” 连接到 Isaac Read Lidar Beams 节点。
将 “Isaac Read Simulation Time(Isaac 仿真时间读取)” 连接到 ROS 2 Publish Laser Scan 节点的 “Timestamp(时间戳)” 输入。

在这里插入图片描述
5.若您拥有多个传感器,在 ROS 2 Publish Laser Scan 节点中,可通过修改 “TopicName(话题名称)” 来更改所发送传感器的名称。
6.将 “TopicName(话题名称)” 修改为 “scan_lidar”

请留意 “FrameID(坐标系 ID)”,因为在 RViz(机器人可视化工具)中进行可视化时会用到该参数(例如:“sim_lidar”)。

在这里插入图片描述


在 RViz 中运行与可视化
7.启动仿真:点击 Isaac Sim 中的 “播放(Play)” 按钮,开始数据流传输。
在这里插入图片描述

8.接下来,验证数据是否正在传输。打开一个终端,加载工作空间环境变量,输入命令:

Ubuntu22.04 Humble版本:

source /opt/ros/humble/setup.bash

Ubuntu24.04 Jazzy版本:

source /opt/ros/jazzy/setup.bash

在这里插入图片描述

9.运行ros2 topic list命令,查看当前活跃的话题,其中应包含激光扫描(scan)相关话题。
在这里插入图片描述

10.在终端中输入rviz2,启动 RViz 工具。
在这里插入图片描述

11.在 RViz 中,将 “固定坐标系(Fixed Frame)” 选项修改为之前记录的 Topic(话题) 对应的坐标系(例如 “scan_lidar”)。
在这里插入图片描述
在这里插入图片描述

12.在左下角窗口中,点击 “添加(Add)”,切换到 “按话题(By Topic)” 标签页,选择 “激光扫描(laser scan)”,然后点击 “确定(OK)”,在 RViz 中添加激光雷达传感器数据。
在这里插入图片描述

13.最后,观察激光雷达数据。在视口中,您应能看到代表探测到物体的红色点。

注意事项
若激光雷达传感器位置过低,可能会探测到机器人自身部件(如车轮)。如有需要,可在 Isaac Sim 中调整传感器的高度。

操控机器人与观察

注意事项
在 RViz 中,您看到的画面是 “环境围绕静止的机器人移动”,而非 “机器人在环境中移动”。
在这里插入图片描述

14.在 Isaac Sim 中,使用键盘操控机器人移动,同时观察环境中的障碍物。

完成上述步骤后,您已成功实现将 Isaac Sim 中的 2D 激光雷达数据流集成到 ROS 2,并通过 RViz 进行可视化。借助这一流程,您可以在机器人导航时监控其与环境的交互情况。

💾 保存点击 “文件(File)> 保存(Save)”,保存您的工作成果!

回顾

在本模块中,您已成功将 Isaac Sim 与 ROS 2 集成,能够流式传输传感器数据以进行高级处理。您完成了 ROS 2 Humble(Jazzy) 的安装与配置,创建了用于 RGB(红绿色蓝)数据和激光雷达(lidar)数据流式传输的动作图(ActionGraph),并在 RViz(机器人可视化工具)中实现了该数据的可视化。

学习目标
完成 ROS 2 Humble(Jazzy) 的安装与配置,使其可用于 Isaac Sim。
创建动作图(ActionGraph),将 RGB 数据和激光雷达数据流式传输至 ROS 2。
配置 ROS 2 桥接(Bridge)扩展,实现无缝通信。
在 RViz 中实现传感器数据可视化,提升实时监控能力。
排查与数据流式传输及可视化相关的问题

总结

本课程向您传授了使用 Isaac Sim 进行机器人仿真的基础技能。请继续探索 Isaac Sim 中的诸多可能,以提升您的机器人领域知识。

学习目标
在本课程中,我们完成了以下内容:

探索 Isaac Sim 界面: 熟悉 Isaac Sim 界面的关键组成部分,包括面板、上下文菜单和工具栏。这些基础认知能帮助您高效浏览并利用仿真环境,从而构建和管理机器人模型。

构建简单机器人模型: 通过组装底盘、车轮、关节等部件,搭建基础机器人模型。此过程涉及创建视觉网格,并为其配置物理属性,以便在 Isaac Sim 环境中模拟真实的交互效果。

配置物理属性: 搭建物理场景并应用必要属性,确保机器人能与所处环境进行真实交互。这包括添加碰撞网格和地面平面,以准确模拟重力及其他作用力。

实现控制机制: 使用 OmniGraph(全能图)和 ROS 2(机器人操作系统第二代)为机器人创建控制系统,实现动态移动与交互。此过程涉及搭建差动控制器和关节连接件,以有效管理车轮运动。

集成传感器: 通过添加 RGB 相机、2D 激光雷达等传感器,增强机器人的功能。对这些传感器进行配置以采集环境数据,使机器人能够智能感知周围环境并做出响应。

将传感器数据流式传输至 ROS 2: 搭建从 Isaac Sim 到 ROS 2 的数据流式传输管道,以便在 RViz(机器人可视化工具)中进行实时可视化与分析。这涉及搭建动作图(ActionGraph),并使用 ROS 2 桥接(Bridge)扩展,实现不同平台间的无缝通信。

恭喜您!您已完成《入门指南:在 Isaac Sim 中仿真您的第一个机器人》课程。本课程是一条学习路径的起点,该路径将带您深入了解各类用于仿真机器人并为其进行现实场景训练的工具。请继续学习该路径中的下一门课程 ——《导入机器人资产并在 Isaac Sim 中仿真您的机器人》

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐