0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Isaac仿真平台搭建以及ROS试用教程

NVIDIA英伟达企业解决方案 来源:NVIDIA英伟达企业解决方案 作者:NVIDIA英伟达企业解 2022-07-27 14:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

机器人有助于为制造业、物流业、医疗保健业和服务业等行业创造新效率并提升人们的生活质量, NVIDIA Isaac 凭借改进的机器人开发、模拟和部署功能,可加速这一进程。

对于机器人领域的开发者而言,“Isaac 就是 Omniverse 平台里面,一个完全在 GPU 上实现,很好地将机器人相关的一些深度学习、强化学习、SLAM、图像处理等等的算法,融合在一个 GEMs 的高性能软件包中的炫酷仿真引擎。” 这是知乎大咖稚辉(知乎坐拥 130 多万粉丝的知名 KOL、AI 工程师)对于 Isaac 的评价。本期文章我们将分享稚辉 Isaac 仿真平台搭建以及 ROS 试用教程。

Isaac 仿真平台搭建以及 ROS 试用教程

最近在搞一个机器人项目嘛,所以借着机会了解了一下之前 NVIDIA大力推广的 Omniverse 平台,Omniverse 是 NVIDIA 推出的一个元宇宙模拟平台,而 Isaac 是其中专门用于机器人环境模拟的一个引擎,试了一下还挺有意思的。

其实最早 Omniverse 设计的初衷是提供一个能让工程师们协作创作的虚拟工具,毕竟号称元宇宙引擎嘛,在数字世界里做基建必然是一个需要大量不同场景的工程师们配合实现的工作,后来该项目逐渐演变成了一个更加宏大的全行业框架。

发布会上提到会通过一种 USD(Universal Scene Description,这个缩写我直呼内行)的基础数据格式来打通各种不同的软件之间的配合。USD 不仅仅只是导入和导出的一种格式而已, USD 之于 Omniverse 就像 HTML(一种标记语言,可以将网络上的文档格式统一)之于网站。

而 Isaac 就是 Omniverse 平台里面,一个完全在 GPU 上实现,很好地将机器人相关的一些深度学习、强化学习、SLAM、图像处理等等的算法,融合在一个 GEMs 的高性能软件包中的炫酷仿真引擎。之前做机器人仿真的时候,最常用的是 VREP(现在叫 CoppeliaSim 了)、ROS 里面的 Gazebo、WeBot 等,这些仿真器用到的主要物理引擎都是开源的 Bullet 和 ODE。

与上面提到的这些仿真器相比,Isaac 的优势在于:

  • 超逼真的光照渲染效果:一个字,以假乱真。NVIDIA 做啥起家的大家都知道了,RTX ON 之后这渲染效果相比于前面提到的开源引擎有质的飞跃,直接来到照片级的逼真度。

  • 性能的提升:实时的光照渲染和物理引擎的算力需求都是很高的,Isaac 针对 NVIDIA 硬件(GPU)进行了优化,可以生成高效的平台优化的交叉编译应用程序。

  • 生态支持度好:Isaac 集成了其中许多 CUDA 加速的开源库,例如 NPP、OpenCV、ROS、PCL (wip)、Eigen 等。

  • 自带常用的算法库:Isaac SDK 附带了一系列高性能算法,这些算法被称为 GEM,此外除了机器人控制类的算法,Issac 还为主业打游戏副业炼丹的同学们准备了深度神经网络模块的集成,例如立体声深度估计、目标检测、 Tracking 算法等等。

当然了对我这种颜值狗来说,渲染效果美丽 + Modern UI 的软件界面就足够让我对其他软件 Say No 了。下图展示了 Isaac 的生态系统:

97535b22-0d69-11ed-ba43-dac502259ad0.png

那么接下来本文简单介绍一下 Issac 的安装流程以及使用记录。

准备的环境

使用的是我自己的台式机,硬件配置如下:

项目

概述

OS

Ubuntu 20.04 LTS

kernel

5.13.0-35-generic

CPU

英特尔 i7-12700F

MEM

64GB

GPU

GeForce RTX 3080

Driver Ver

470.103.01

CUDA Ver

11.4

按照 NVIDIA 官方 Omniverse 安装指南(链接如下):

https://docs.omniverse.nvidia.com/prod_install-guide/prod_install-guide/workstation.html

首先,下载 Omniverse 的启动器程序(需要注册一下,链接如下):https://www.nvidia.com/en-us/omniverse/

97a693d2-0d69-11ed-ba43-dac502259ad0.png

操作系统可以选择 Windows 或 Linux,这里我用的是 Ubuntu 所以选 Linux 版本,可以得到名为 omniverse-launcher-linux.AppImage 的文件,下载好之后需要授予它执行权限,并将其放在主页目录下,命令:


chmod+xomniverse-launcher-linux.AppImage./omniverse-launcher-linux.AppImage

运行此启动器程序将启动 Omniverse 窗口,但需要 NVIDIA 帐户登录才能使用,没有的话注册一下就行个人使用是免费的。

首次启动时,系统会提示是否要安装名为 “Cache” 的软件,这个是用于提供一种软件缓存机制,用于管理网络通信加载内容的,建议安装它。

97e6ade6-0d69-11ed-ba43-dac502259ad0.png

启动器的软件界面

顺便说一下,Omniverse会开启一个后台服务,你可以从浏览器访问 http://localhost:3080 来打开后台管理页面查看每个服务的操作状态。

9824d832-0d69-11ed-ba43-dac502259ad0.png

然后需要在启动器软件中安装 Nucleus 服务:

9846c9d8-0d69-11ed-ba43-dac502259ad0.png

Nucleus 就是个数据服务器,用于连接其他软件,同时在当多个人进行项目时,通过连接到此服务器进行协作开发。软件中也有很多有意思的 Tutorial 可以自己尝试学习:

986a269e-0d69-11ed-ba43-dac502259ad0.png

安装完成后用之前注册的账号登录即可,登录后将看到一个文件管理器,可以在其中管理项目内容。

98b0e19c-0d69-11ed-ba43-dac502259ad0.png

接下来,我们添加机器人模拟器环境 Isaac Sim。Isaac Sim 是一个机器人仿真工具包,在 Omniverse 上运行,Isaac Sim 具有构建虚拟机器人世界和实验的基本功能,还能通过渲染能力提供进行数据集合成的工具和工作流程。Isaac Sim 通过 ROS/ROS2 支持导航和操作应用程序。

Isaac 的架构图如下:

98d3ce64-0d69-11ed-ba43-dac502259ad0.png

由于渲染能力过猛,Isaac 对于硬件的配置要求有一丢丢高,推荐的配置为- RTX2070 及以上的显卡,内存至少 32GB,NVIDIA 的驱动程序版本需要 470.57.02 或更高版本。

参考以下安装指南安装 Isaac Sim:

https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/install_basic.html#isaac-sim-app-install-basic

从 EXCHANGE 选项卡中选择并安装:

98f97916-0d69-11ed-ba43-dac502259ad0.png

993ae64e-0d69-11ed-ba43-dac502259ad0.png

根据教程,Isaac Sim 应该有一个按钮来下载 Isaac Sim Assets(示例数据等)后启动,但可能是网络问题我这边无法下载,所以通过手动添加方式解决,参考:

https://forums.developer.nvidia.com/t/known-issue-error-checking-isaac-sim-assets/204522

具体解决方案是从主窗口的 mount 选项卡右键单击导航器的 localhost,创建具有以下参数的文件夹:

9960e8d0-0d69-11ed-ba43-dac502259ad0.png

项目

内容

Name

Isaac

Type

Amazon S3

Host

http://d28dzv1nop4bat.cloudfront.net

Service

s3

Redirection

https://d28dzv1nop4bat.cloudfront.net

下面的命令安装:

sudoaptinstall./code_1.51.1-1605051630_amd64.debsudoaptinstall-yapt-transport-httpssudoaptupdate

后我们安装一下 VS Code 来代替自带的编辑器,在官网下载 deb 安装包

https://code.visualstudio.com/Download

此外,从 Isaac Sim 打开 VSCode 时的配置文件(如 setting.json)使用的是 .vscode,该文件位于 Isaac Sim 的安装根目录~/.local/share/ov/pkg/isaac_simxxx 中。

安装 ROS 和 ROS2

在 Ubuntu 上安装要与配合的 ROS 和 ROS2,只需按照官方安装指南进行安装即可:https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/install_ros.html

然后,在 Isaac Sim 端启用 ROS Bridge 扩展,在窗口状态量菜单中 Window->Extensions 中搜索 “ROS”:

9982137a-0d69-11ed-ba43-dac502259ad0.png

启用 “ROS Bridge” 和 “ROS UI” :

99a8ac38-0d69-11ed-ba43-dac502259ad0.png

如果使用 ROS2,那就启用 ROS2 Bridge 而不是 ROS Bridge。

现在 ROS 就可以和 Isaac Sim 通信啦,接下来我们编写一个简单的程序进行测试。

Python代码测试

Isaac Sim 可以从官方自带的一些 python 脚本独立启动,启动脚本位于 Omniverse 中的 Isaac Sim 目录中,例如,启动作为示例提供的名为 “franka” 的制造机器人演示的命令如下所示:


cd~/.local/share/ov/pkg/isaac_sim-2021.2.1./python.shstandalone_examples/api/omni.isaac.franka/follow_target.py

99de15bc-0d69-11ed-ba43-dac502259ad0.png

打开的时间可能比较久需要有点耐心...

当然还有其他很多别的脚本可以供参考,接下来我们将自己编写 Python 脚本实现以下内容:

1、在场景中放置对象

2、在场景中放置一个机器人并用键盘控制运动

放置对象

我们可以使用 omni.isaac.core 对象模块放置对象,包含以下函数:

  • DynamicCuboid

  • DynamicCapsule

  • DynamicCone

  • DynamicCylinder

  • DynamicSphere

  • VisualCuboid

  • VisualCapsule

  • VisualCone

  • VisualCylinder

  • VisualSphere

  • FixedCuboid

这些函数允许我们在场景中放置立方体、胶囊、圆锥体、圆柱体和球体,Dynamic 开头的对象受到物理引擎的作用,比如重力,当把它们放置在空中时,它会直接掉落。Visual 开头的对象则只会用于外观,不会受到力的作用,也不会进行碰撞检测,因此其他对象可以直接穿过它。例如以下代码:


from omni.isaac.kit import SimulationAppimport numpy as np
simulation_app = SimulationApp({"headless": False})
from omni.isaac.core import Worldfrom omni.isaac.core.objects import DynamicCuboid, DynamicCapsule, DynamicConefrom omni.isaac.core.objects import DynamicCylinder, DynamicSphere, FixedCuboid
my_world = World(stage_units_in_meters=0.01)
d_cube = my_world.scene.add(    DynamicCuboid(        prim_path="/dynamic_cube",        name="dynamic_cube",        position=np.array([0, 0, 0.5]) * 100,        size=np.array([0.1, 0.1, 0.1]) * 100,        color=np.array([255, 255, 255]),    ))
d_cap = my_world.scene.add(    DynamicCapsule(        prim_path="/dynamic_capsule",        name="dynamic_capsule",        position=np.array([0.5, 0, 0.5]) * 100,        radius=0.05 * 100,        height=0.05 * 100,        color=np.array([255, 0, 0]),    ))
d_cone = my_world.scene.add(    DynamicCone(        prim_path="/dynamic_cone",        name="dynamic_cone",        position=np.array([-0.5, 0, 0.5]) * 100,        radius=0.05 * 100,        height=0.05 * 100,        color=np.array([0, 0, 255]),    ))
d_cyl = my_world.scene.add(    DynamicCylinder(        prim_path="/dynamic_cylinder",        name="dynamic_cylinder",        position=np.array([0, 0.5, 0.5]) * 100,        radius=0.05 * 100,        height=0.05 * 100,        color=np.array([0, 255, 0]),    ))
d_sph = my_world.scene.add(    DynamicSphere(        prim_path="/dynamic_sphere",        name="dynamic_sphere",        position=np.array([0.5, 0.5, 0.5]) * 100,        radius=0.05 * 100,        color=np.array([255, 0, 255]),    ))
f_cube = my_world.scene.add(    FixedCuboid(        prim_path="/fixed_cube",        name="fixed_cube",        position=np.array([-0.5, 0.5, 0.5]) * 100,        size=np.array([0.1, 0.1, 0.1]) * 100,        color=np.array([255, 255, 255]),    ))
my_world.scene.add_default_ground_plane()
my_world.reset()
while simulation_app.is_running():    my_world.step(render=True)
simulation_app.close()

效果是这样的:

9a273936-0d69-11ed-ba43-dac502259ad0.png

稍微修改一下,加入一些互动,比如用键盘控制一个小车:


from omni.isaac.kit import SimulationAppimport numpy as npimport carbimport omni.appwindow
simulation_app = SimulationApp({"headless": False})
from omni.isaac.jetbot import Jetbotfrom omni.isaac.jetbot.controllers import DifferentialController
from omni.isaac.core import World
my_world = World(stage_units_in_meters=0.01)
my_jetbot = my_world.scene.add(    Jetbot(        prim_path="/World/Jetbot",        name="my_jetbot",        position=np.array([0, 0.0, 2.0])    ) ) 
my_controller = DifferentialController(name="simple_control")
my_world.scene.add_default_ground_plane()
command_ = [0.0, 0.0]def sub_keyboard_event(event, *args, **kwargs):    """Handle keyboard events    w,s,a,d as arrow keys for jetbot movement
    Args:        event (int): keyboard event type    """    global command_    if(        event.type == carb.input.KeyboardEventType.KEY_PRESS        or event.type == carb.input.KeyboardEventType.KEY_REPEAT    ):        if event.input == carb.input.KeyboardInput.W:            command_ = [20, 0.0]        if event.input == carb.input.KeyboardInput.S:            command_ = [-20, 0.0]        if event.input == carb.input.KeyboardInput.A:            command_ = [0.0, np.pi / 5]        if event.input == carb.input.KeyboardInput.D:            command_ = [0.0, -np.pi / 5]    if(event.type == carb.input.KeyboardEventType.KEY_RELEASE):        command_ = [0.0, 0.0]
    return True
appwindow_ = omni.appwindow.get_default_app_window()input_ = carb.input.acquire_input_interface()keyboard_ = appwindow_.get_keyboard()sub_keyboard_ = input_.subscribe_to_keyboard_events(keyboard_,sub_keyboard_event)
my_world.reset()
while simulation_app.is_running():    my_world.step(render=True)    if my_world.is_playing():        my_jetbot.apply_wheel_actions(my_controller.forward(command=command_))
simulation_app.close()

效果如下,用键盘的 WASD 可以控制小车运动:

9a55c896-0d69-11ed-ba43-dac502259ad0.png

更多的 API 可以参考官方的文档,后续再补充更多内容。

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真
    +关注

    关注

    53

    文章

    4412

    浏览量

    137715
  • ROS
    ROS
    +关注

    关注

    1

    文章

    291

    浏览量

    18506
  • 深度学习
    +关注

    关注

    73

    文章

    5591

    浏览量

    123957

原文标题:Isaac “家族” 揭秘 | 知乎大咖深度解读系列(1)

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NVIDIA Isaac Lab推动机器人技术突破

    Isaac Lab 是 Isaac Gym 的替代版本,该框架已将 GPU 原生机器人仿真扩展至大规模多模态学习的全新领域。Isaac Lab 整合了 GPU 并行的物理真实的
    的头像 发表于 10-21 11:20 947次阅读

    NVIDIA Isaac Lab多GPU多节点训练指南

    NVIDIA Isaac Lab 是一个适用于机器人学习的开源统一框架,基于 NVIDIA Isaac Sim 开发,其模块化高保真仿真适用于各种训练环境,可提供各种物理 AI 功能和由 GPU 驱动的物理
    的头像 发表于 09-23 17:15 2030次阅读
    NVIDIA <b class='flag-5'>Isaac</b> Lab多GPU多节点训练指南

    NVIDIA Isaac Sim仿真平台助力他山科技实现触觉传感技术突破

    触觉感知作为机器人与环境交互的核心能力之一,正成为突破人机协作精度瓶颈的关键。他山科技基于 NVIDIA Isaac Sim 仿真平台,融合其业界领先的触觉传感器产品,构建了一套高精度、高频率的触觉
    的头像 发表于 09-06 15:30 1544次阅读

    NVIDIA Jetson + Isaac SDK 在人形机器人领域的方案详解

    NVIDIA Jetson + Isaac SDK 在人形机器人领域的 方案详解 ,涵盖芯片型号、软件平台、开发工具链、应用场景与典型客户等。 一、方案概述:Jetson + Isaac SDK
    的头像 发表于 07-30 16:05 3168次阅读

    翼辉信息飞行仿真平台DEEP UAV Simulator介绍

    翼辉信息面向无人机领域推出飞行仿真平台 DEEP UAV Simulator,旨在为无人机的研发、测试和训练过程提供安全、高效且成本可控的虚拟环境。该平台通过高精度的环境仿真、真实的物理引擎
    的头像 发表于 07-30 09:22 1425次阅读

    NVIDIA助力构建人形机器人全身遥操作仿真平台

    清华大学与银河通用机器人联合研发,推出了专为人形机器人全身仿真遥操作设计的平台 OpenWBT_Isaac。该平台依托 NVIDIA Isaac
    的头像 发表于 07-28 15:01 1380次阅读

    NVIDIA Isaac Sim和Isaac Lab现已推出早期开发者预览版

    NVIDIA 发布了机器人仿真参考应用 Isaac Sim 和机器人学习框架 Isaac Lab 的开发者预览版。开发者现在可以通过 GitHub 访问早期版本,抢先体验先进功能,用于在基于物理的
    的头像 发表于 07-04 14:23 1514次阅读

    正式上线:MotoSim智能电机仿真平台

    MotorSim/智能电机仿真平台峰岹科技——全球领先的电机驱动控制芯片及控制系统提供商,近日宣布推出智能电机仿真平台MotorSim。这款堪称分钟级、高精准的电机专业仿真工具,主要面向电机设计工
    的头像 发表于 07-03 15:15 1128次阅读
    正式上线:MotoSim智能电机<b class='flag-5'>仿真平台</b>

    NVIDIA Isaac Sim 4.5.0与lsaac Lab 2.0的安装教程

    Isaac Sim 和 Isaac Lab 目前开放下载的版本是 Isaac Sim 4.5.0 以及 Isaac Lab 2.0,本篇文章
    的头像 发表于 06-19 15:00 2148次阅读
    NVIDIA <b class='flag-5'>Isaac</b> Sim 4.5.0与lsaac Lab 2.0的安装教程

    NVIDIA Isaac Sim与NVIDIA Isaac Lab的更新

    在 COMPUTEX 2025 上,NVIDIA 宣布了机器人仿真参考应用 NVIDIA Isaac Sim 和机器人学习框架 NVIDIA Isaac Lab 的更新,以加速各种形态机器人的开发。
    的头像 发表于 05-28 10:06 1782次阅读

    NVIDIA Isaac 是英伟达推出的综合性机器人开发平台

    NVIDIA Isaac 是英伟达推出的综合性机器人开发平台,旨在通过 GPU 加速、物理仿真和生成式 AI 技术,加速自主移动机器人(AMR)、机械臂及人形机器人的开发与部署。以下从核心组件、技术
    的头像 发表于 04-02 18:03 1989次阅读

    芯来科技携手芯芒科技发布RISC-V CPU系统仿真平台

    专业RISC-V处理器IP及解决方案公司芯来科技与杭州芯芒科技深入合作,共同研发推出芯来全系列RISC-V CPU系统仿真平台。帮助下游SoC和产品开发团队基于该仿真平台快速构建从芯片核心架构、整
    的头像 发表于 03-19 14:36 1403次阅读

    名单公布!【书籍评测活动NO.58】ROS 2智能机器人开发实践

    一代的Gazebo机器人仿真平台 ,绝大部分功能和源码可以在单独的计算机和Gazebo仿真平台上运行。 同时,本书介绍 实物机器人的搭建方法,并且在实物机器人上实现相应的功能 。 配套源码都加入了中文
    发表于 03-03 14:18

    简述NVIDIA Isaac的重要更新

    在 2025 CES,NVIDIA 宣布了对NVIDIA Isaac的重要更新。NVIDIA Isaac 是一个由加速库、应用框架和 AI 模型组成的平台,可加速 AI 机器人的开发。
    的头像 发表于 01-17 09:57 1777次阅读
    简述NVIDIA <b class='flag-5'>Isaac</b>的重要更新

    软通动力发布天枢iSSMeta2024数字孪生仿真平台

    。近日,软通动力正式发布天枢iSSMeta2024数字孪生仿真平台,为智能制造和工业革新带来了实用“利器”。
    的头像 发表于 12-26 17:06 1527次阅读