Isaac Sim教程01 Isaac Sim介绍

Isaac Sim 介绍

版权信息

Copyright 2023 Herman Ye@Auromix. All rights reserved.

This course and all of its associated content, including but not limited to text, 
images, videos, and any other materials, are protected by copyright law. 
The author holds all rights to this course and its contents.

Any unauthorized use, reproduction, distribution, or modification of this course 
or its contents is strictly prohibited and may result in legal action. 
This includes, but is not limited to:
Copying or distributing course materials without express written permission.
Reposting, sharing, or distributing course content on any platform without proper attribution and permission.
Creating derivative works based on this course without permission.
Permissions and Inquiries

If you wish to use or reproduce any part of this course for purposes other than personal learning, 
please contact the author to request permission.

The course content is provided for educational purposes, and the author makes no warranties or representations 
regarding the accuracy, completeness, or suitability of the course content for any specific purpose. 
The author shall not be held liable for any damages, losses, 
or other consequences resulting from the use or misuse of this course.

Please be aware that this course may contain materials or images obtained from third-party sources. 
The author and course creator diligently endeavor to ensure that these materials 
are used in full compliance with copyright and fair use regulations. 
If you have concerns about any specific content in this regard, 
please contact the author for clarification or resolution.

By enrolling in this course, you agree to abide by the terms and conditions outlined in this copyright notice.

学习目标

  • 理解Isaac Sim及其相关组件的背景和特点
  • 了解Isaac Sim的应用场景
  • 了解Isaac Sim的架构
  • 了解Isaac SIm的工作流程
  • 了解Isaac SIm的近期更新

难度级别

初级中级高级

预计耗时

25 mins

学习前提

对象类型状态
Ubuntu22.04操作系统软件已确认

Isaac Sim概述

Isaac Sim 是专为 NVIDIA Omniverse平台开发的机器人仿真工具包
Isaac Sim 提供了构建仿真机器人世界和进行实验所需的大部分功能,并提供了创建稳健、物理精确的仿真合成数据集的工具和工作流程。
Isaac Sim 支持常见的机器人框架,例如ROS/ROS2,它可通过ROS/ROS2进行导航操作应用
Isaac Sim 能够模拟来自各种传感器的传感器数据,如RGB-D、激光雷达和IMU,用于各种计算机视觉技术,包括域随机化、地面真值标注、分割和边界框。

来自Nvidia这一工具包提供了强大的功能,可以帮助研究人员和工程师在虚拟环境中开展广泛的机器人仿真研究和实验。
在这里插入图片描述

Isaac Sim特点

关键词:机器人仿真物理仿真数据集合成ROS支持机器人导航机器人操作应用传感器模拟

机器人仿真

机器人仿真是一种使用计算机模拟技术来模拟机器人的运动、感知和互动的过程。这包括模拟机器人的硬件和软件系统,以便在虚拟环境中测试、开发和验证机器人算法和控制策略。

  • 成本考量
    仿真环境可以显著降低开发和测试机器人的成本,避免了昂贵的硬件和设备需求。
    从机器人角度来说,如果不使用仿真,而是使用一千台或一万台真实机器人进行测试,将面临硬件组装、调试和损坏等问题,这将带来高昂的时间和经济成本。从场景角度来说,特别是对于一些特殊测试场景,如沙漠或核电站,搭建逼真的测试场景所需成本也非常高。
    在这里插入图片描述
    图片来源:IsaacGymEnvs

  • 安全性
    在虚拟环境中测试机器人可以避免潜在的危险或意外情况,有助于保护人员和设备的安全。
    例如,在工业机械臂、无人机等机器人设备的调试过程中,可能会发生危险情况,如无人机失控坠毁或机械臂故障,这些情况会对企业的人员安全构成威胁。
    在这里插入图片描述
    图片来源:IsaacGymEnvs

  • 快速迭代
    仿真环境允许开发人员快速迭代机器人的算法和控制器,以优化性能和功能。
    避免了对真实机器人的繁琐调试,例如为一千台机器人重新烧录固件或修改搭载的算法,从而节省了大量的调试时间。

  • 可复制性
    仿真实验可以轻松复制,以验证结果的可重复性和一致性。
    在每一次仿真中,部署都是精确的,例如在仿真中将一瓶矿泉水放在桌面上供机器人抓取,每轮测试时这瓶水都在同一个地方。
    而在实际环境中,每轮摆放物体可能存在一定的偏差,因此仿真实验更容易确保结果的可重复性。

  • 理想化假设
    仿真环境通常需要引入一些理想化假设,例如忽略了一些复杂的物理效应。这一实践的背后是追求在虚拟环境中实现高效的计算和资源利用,以便进行快速的开发和测试。然而,这种理想化假设也带来了一个重要的挑战,即在真实世界中的机器人性能可能与仿真结果不完全匹配。

英伟达:
在这里插入图片描述

图片来源:Youtube Nvidia Omniverse

在这里插入图片描述

图片来源:Nvidia USD

上海米哈游:
在这里插入图片描述
在这里插入图片描述

图片来源:Youtube Lumi_N0va

  • 有限的精确性
    虽然现代仿真工具越来越精确,但它们仍然受到计算资源和物理模型的限制,不能完美地模拟所有方面的机器人行为。

物理仿真

物理仿真是机器人仿真的一个关键组成部分,它涉及模拟机器人和环境的物理交互,包括重力、碰撞、摩擦等重要的物理属性。

  • 真实性
    物理仿真能够更加精确地模拟机器人与其环境的物理互动,从而提供更准确的机器人在真实世界中的行为预测。
    这种精确性对于测试、验证和优化机器人算法和控制策略至关重要。
    实际上,许多算法的开发通常从仿真环境开始,直到在仿真中表现出稳定性,才会将其迁移到实际硬件上进行测试。

  • 大量计算要求
    物理仿真通常需要大量的计算资源,尤其是在需要模拟复杂物理效应时,如流体动力学仿真。
    这可能会导致高昂的计算成本,因此在进行大规模仿真时需要考虑有效的计算资源管理。

  • 物理模型不能完全准确
    尽管物理仿真可以提供高度精确的结果,但其准确性受到所使用的物理模型质量的限制。
    物理模型可能无法完全准确地模拟所有物理现象,因此在将仿真结果应用于实际机器人系统时,需要谨慎考虑模型的适用性。
    在某些情况下,仿真环境中表现良好的机器人可能在真实环境中产生不同的行为,这对于实现sim2real是一个挑战。

数据集合成

数据集合成是通过模拟或生成虚拟场景中的各种数据,以便用于机器学习、深度学习或其他数据驱动的应用程序的方法。
这可以包括模拟传感器数据(如相机、激光雷达、IMU数据),机器人的行为和动作,环境中的对象以及其他相关信息。这些数据通常在虚拟环境中生成,以便进行大规模的实验、测试和训练。

  • 成本效益
    相较于采集真实世界数据,数据集合成提供了更经济有效的方法。创建真实世界数据集通常需要大量的时间和资金,而合成数据可降低成本和时间开销。

ImageNet

More than 14 million[1][2] images have been hand-annotated by the project to indicate what objects are pictured and in at least one million of the images, bounding boxes are also provided.

  • 数据多样性
    数据集合成使研究人员能够生成多样性的数据,包括各种场景、环境条件和机器人任务,从而有助于更好地训练和评估算法。它还允许合成那些难以采集或成本极高的数据。

  • 数据标定和真值
    通过合成数据集,可以精确地标定和记录真实场景中难以获取的真实信息,如目标位置和深度信息。
    这些数据可用于改善算法的性能,例如通过合成数据的玻璃杯来提高目标检测或物体识别算法的准确性。
    相关链接:ICRA GraspNeRF: Multiview-based 6-DoF Grasp Detection for Transparent and Specular Objects Using Generalizable NeRF
    在这里插入图片描述
    图片来源:GraspNeRF

  • 可控性
    数据集合成赋予用户对合成环境的参数和条件的控制权。
    这允许用户测试算法在各种不同情况下的鲁棒性,例如,在自动驾驶环境下考虑不同的光照条件或自然灾害(如大雨或泥石流)对系统的影响。

  • 大量的数据
    合成数据集为机器学习算法提供了更多的数据,有助于提高算法的性能和泛化能力。这对于深度学习等数据驱动的应用尤为重要。
    使用合成的数据集

  • 缺乏真实噪声
    合成数据往往不包含真实世界传感器数据中存在的多样性和噪声,这可能导致在真实环境中的性能与虚拟环境不一致。

ROS支持

Isaac Sim具有与ROS和ROS2兼容的功能和接口。
ROS(Robot Operating System)是当前广泛应用于机器人领域的框架,而Isaac Sim的能力与ROS和ROS2兼容,使机器人研究人员和工程师能够轻松地在仿真环境中开发、测试和验证他们的机器人控制和导航算法,然后将这些算法无缝地迁移到实际的机器人硬件中。

  • 实验和调试
    在仿真环境中,研究人员可以轻松地模拟实际机器人的行为,并执行各种实验和调试操作,方便验证和优化机器人的控制算法。

  • 导航和操作应用
    ROS支持还允许机器人在仿真环境中执行导航和操作任务。通过在仿真中执行导航和操作任务,研究人员可以更好地了解机器人的行为,并调整算法以适应不同的情况。

传感器模拟

传感器模拟是指在虚拟环境中模拟机器人或其他设备使用传感器获取数据的过程。在Isaac Sim中,传感器模拟允许用户模拟各种传感器,如RGB-D相机、激光雷达和惯性测量单元(IMU),以获取与实际世界相似的传感器数据。

  • 数据收集和标定
    传感器模拟允许用户生成大量的合成数据,这对于机器学习和计算机视觉任务的训练和评估非常有用。生成的数据可以用于训练深度学习模型,进行物体检测、分割和姿势估计等任务。

  • 成本效益
    真实传感器硬件的购买和维护成本很高,比如前些年的激光雷达,而传感器模拟在虚拟环境中可以降低成本,因为不需要实际传感器设备,完全免费。

  • 可重复性和控制
    传感器模拟允许用户轻松地控制虚拟环境中的各种参数,例如光照条件、天气条件和物体位置,以进行可重复性实验。这是在真实世界中难以实现的。者对于自动驾驶一类的帮助会非常大。

  • 模型不准确性
    传感器模拟可能无法完全模拟真实传感器的性能和不确定性。虚拟环境中的物理和光照模型可能与实际世界存在差异,因此生成的数据可能不完全准确。以UCSD的Sapien仿真器为例,Sapien在2.2版本中支持传感器的仿真,但存在一定的局限性,即使仿真的相机参数和真实的相机参数一致,得到的深度图也会有较大的差别。
    相关链接:SAPIEN: A SimulAted Part-based Interactive ENvironment
    在这里插入图片描述

  • 缺少实际噪声
    传感器模拟通常不包括与实际传感器使用相关的噪声和干扰,这可能会影响模型在实际世界中的性能。
    即使通过添加人为噪声的方法,也无法完全达到实际的噪声效果。

Isaac Sim的应用场景

在这里插入图片描述
图片来源:Isaac Sim

机器人导航和路径规划

Isaac Sim 可用于测试和验证机器人导航算法,包括路径规划、避障和自主导航。研究人员和工程师可以在虚拟环境中模拟不同的场景,以评估机器人在不同情况下的性能。
在这里插入图片描述

图片来源:Nvidia USD

机器人操作和操纵

Isaac Sim 支持机器人操纵和操作的仿真,可以用于测试机械臂以及其他操作设备的性能。这对于开发机器人在制造、仓储和物流等领域的应用非常有用。

在这里插入图片描述
图片来源:Nvidia USD

计算机视觉和感知研究

Isaac Sim 可以生成各种传感器数据,如RGB-D 相机、激光雷达(Lidar)和惯性测量单元(IMU)的模拟数据。这些数据可用于训练和测试计算机视觉算法,如目标检测、目标跟踪、图像分割和深度估计。

数据集生成

Isaac Sim 能够生成丰富的合成数据集,用于训练机器学习模型。这些数据集可以用于领域随机化、标注真实数据、生成边界框等任务,帮助改进模型的鲁棒性和性能。
在这里插入图片描述
图片来源:Nvidia USD

机器人教育和培训

Isaac Sim 也可用于机器人教育和培训。学生和新手可以使用它来学习机器人控制、导航、感知等概念,并进行实际的仿真实验,而不必担心物理机器人的成本和安全问题。

Isaac Sim的架构

以下为Nvidia Omniverse Isaac Sim的软件架构和工作流图。

可以看到,在架构图中:
在这里插入图片描述
图片来源:Isaac Sim Documentation

输入

Isaac Sim可以接受来自不同来源的输入,比如Onshape、URDF、MJCF、USD,其中USD直接导入Isaac Sim,其他类型的输入则会通过对应的importer插件进行导入。

  • Onshape
    Onshape 是一种基于云的计算机辅助设计(CAD)软件,用于进行三维建模和设计工作。应该类似于Fusion360。
    相关链接:Onshape
  • URDF
    URDF(Unified Robot Description Format) 是一种XML文件格式,用于描述机器人模型的几何形状、连接性、关节、传感器和其他相关信息。URDF 常在ROS中被使用(Robot Operating System),作为机器人的描述信息。
    相关链接:URDF Wiki
  • MJCF
    MJCF是用于描述多关节机器人和其他物体的XML文件格式。它是用于在MuJoCo模拟器中,一起使用,用于模拟机器人的动力学和物理属性。MJCF 模型可以表示具有广泛特征和模型元素的复杂动力系统。
    相关链接:Mujoco modeling
  • USD
    Omniverse Isaac Sim 使用 USD 交换文件格式来表示场景。USD(Universal Scene Description)是由Pixar开发的一种易于扩展的开源3D场景描述和文件格式,用于在不同工具之间进行内容创建和交换。由于其强大和多才多艺,USD正在广泛应用,不仅在视觉效果社区,还在建筑、设计、机器人技术、制造和其他领域中得到采用。
    值得一提的是,USD是皮克斯、Adobe、苹果和Autodesk等厂家联合起来搞的OpenUSD联盟产物。
    相关链接:USD

处理

  • Omniverse Kit
    Omniverse Isaac Sim 基于 NVIDIA Omniverse Kit SDK 开发。
    Omniverse Kit 是一个用于构建本机 Omniverse 应用程序和微服务的工具包。
    Omniverse Kit 通过一组轻量级插件提供各种功能。这些插件是使用 C 接口编写的,以确保持续的 API 兼容性。
    此外,它还提供了 Python 解释器,用于进行脚本编写和定制。
    使用 Python API 可以编写新的扩展程序以扩展 Omniverse Kit,或创建新的 Omniverse 体验。
  • 使用模式
    Isaac Sim 可以以两种使用模式运行。
    首先,它可以在 headless 模式下运行,这意味着它在没有图形化用户界面的情况下运行,还可以减轻渲染压力,通常用于自动化任务或远程计算。
    其次,Isaac Sim 也可以通过 desktop 模式以图形化窗口的形式运行,提供可视化用户界面。

Isaac Sim WebSocket在2023.1.0版本中被弃用

  • Extensions
    Isaac Sim 有许多插件,其中一些用于导入描述文件,例如 importer 插件。ROS Bridge 插件用于与 ROS 生态系统进行通信。
    同时, Core 插件也是 Isaac Sim 的基本功能的一部分,因此 Isaac Sim 的各项基本功能都是通过插件(Omniverse Extension)来实现的。

输出

  • ROS
    Isaac Sim可以通过ROS Bridge插件和ROS、ROS2系统进行交互
  • Omniverse Kit Remote/Web Browser
    此外,Omniverse Isaac Sim 还可以通过 Omniverse Kit Remote 和 Web Browser 与其他应用程序进行交互,通常在 headless 模式下使用。这有助于远程访问和管理仿真环境,以及在 Web 浏览器中查看和操作仿真场景。
  • Dataset
    Omniverse Isaac Sim 具有生成数据集(dataset)的能力,因此它的输出也可以是虚拟的仿真数据集
    这些数据集可以用于训练机器学习模型、测试算法或进行其他仿真实验。

Isaac Sim的工作流程

在 Nvidia Omniverse Isaac Sim 中,有三个主要工作流程,每个都具有独特的特点和推荐用途,以满足不同的开发需求。
在这里插入图片描述
图片来源:Isaac Sim Documentation

1. 图形化界面(GUI)

如图所示即是在Omniverse里打开Isaac sim的图形化窗口。
在这里插入图片描述

主要特点: Omniverse Isaac Sim 的图形用户界面(GUI)是一个功能强大的工具,提供了直观和视觉化的方式来创建、模拟和操作虚拟世界。它在功能上与 Omniverse USD Composer(一款专门用于世界构建的应用程序)相似,但具有额外的机器人相关功能。

推荐用途: Omniverse Isaac Sim 的 GUI 具有广泛的应用领域,包括但不限于:

  1. 世界构建: 使用GUI,可以轻松创建虚拟环境,包括地形、建筑和物体的布置。这使它成为构建虚拟世界的理想场所。

  2. 机器人组装: GUI允许组装、配置和定制机器人,包括添加传感器和执行器。这对于机器人应用程序的开发和测试非常关键。

  3. 连接传感器: GUI支持连接和配置传感器,以便机器人能够感知其周围环境。这有助于模拟机器人感知和交互的情境。

  4. 初始化ROS桥: 使用GUI,可以轻松地启动和管理ROS桥,实现与ROS(机器人操作系统)的通信。这对于在虚拟环境中测试和集成ROS的机器人应用程序非常有帮助。

评价: Omniverse Isaac Sim 的图形用户界面是一种直观且功能丰富的开发工具,不仅适合初学者上手,还为专业用户提供了强大的虚拟世界构建和机器人模拟能力。它是实验、开发和测试机器人应用程序的理想选择。

2. 扩展(Extension)

概要: 扩展是 Omniverse Kit 基础之上的核心应用程序构建块,为各种应用程序提供强大的功能扩展。这些扩展具有一系列主要特点,使其成为强大的工具,支持异步运行,交互性,实时响应,以及热重载功能,从而提供了广泛的应用领域。此外,扩展还支持自适应物理步骤,适用于实时模拟,使其成为多领域应用的理想选择。

主要特点:

  • 异步运行: 扩展应用程序的一个关键特点是异步运行,这使得它们能够与 USD 舞台进行互动,同时不会阻塞渲染和物理步进。这为用户提供了流畅的交互体验。
  • 热重载: 扩展的另一个强大特点是热重载功能,允许在 Omniverse Isaac Sim 运行时更改应用程序代码,然后在保存文件后查看应用程序中反映的更改,而无需关闭或重新启动 Omniverse Isaac Sim。这加速了开发和测试过程。
  • 事件触发: 大部分扩展中的操作都是通过事件触发的回调完成的,例如物理或渲染步骤、舞台事件、时间标记。这样的设计使得扩展可以以高度可定制的方式响应不同的场景和用户需求。

推荐用途:

  • 构建交互式 GUI: 扩展可以用于创建自定义的交互式用户界面,以满足特定应用程序的需求。这使得用户能够轻松控制和调整应用程序的行为,从而提高工作效率。
  • 自定义应用程序模块: 用户可以通过创建新的扩展或编辑和激活现有扩展来扩展所使用的应用程序的功能,以满足具体需求。这意味着应用程序可以根据用户需求进行高度定制,无需修改源代码。
  • 实时敏感应用程序: 扩展特别适用于实时敏感应用程序,如虚拟现实体验和模拟。它们能够实时响应用户的交互,为用户提供沉浸式体验。

评价:
自定义扩展插件属于高级用途,需要一定的技术知识和开发经验。然而,对于需要特定功能的用户和开发者来说,扩展提供了强大的工具,以满足其需求。

如果对扩展(Extension)的概念感兴趣,并想深入了解,可以查阅Nvidia官方文档: Extension以获取更详细的信息。

3. 独立 Python

主要特点: 独立Python工作流程允许精确控制物理和渲染步骤的时间,并可以在无头模式(Headless)下运行以减少资源开销,适用于各种用途。

推荐用途:

  • 大规模强化学习训练:独立Python可用于进行大规模的强化学习训练,以训练智能代理。
  • 系统的世界生成和修改:通过独立Python,可以创建、修改和控制虚拟世界中的元素,以满足特定的研究或应用需求。

评价:
相对于GUI来说更加抽象的方式,但可以实现开发者的特定需求,属于中高阶内容,此处不涉及。

Isaac Sim的近期更新

Isaac Sim在2023年10月末更新了2023.1.0版本,对于详细信息请查看2023.1.0版本更新公告

  • 修复了omn​​i.isaac.ros2_bridge过渡到ROS2 Humble版本的一些适配性问题
  • 增加了新的机器人demo和传感器
  • 增加了对ROS2工作空间的环境设置支持
  • Isaac core的优化
  • Isaac Gym的调整
  • 默认Python版本调整为3.10

相关资料

IsaacGymEnvs
Youtube Nvidia Omniverse
Youtube Lumi_N0va
ImageNet
GraspNeRF
ICRA GraspNeRF: Multiview-based 6-DoF Grasp Detection for Transparent and Specular Objects Using Generalizable NeRF
SAPIEN: A SimulAted Part-based Interactive ENvironment
Onshape
URDF Wiki
Mujoco modeling
USD
Isaac Sim Documentation system architecture

  • 25
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值