Isaac Sim 机器人仿真器介绍、安装与 Docker [1]

news2025/1/4 19:30:41

前言与参考

此文书写于: January 6, 2023, 更新于 January 6, 2023 ;可能会随着时间的变化 此教程会有过时概念哦

Isaac Sim 相关参考链接:

  1. 官方文档地址
  2. 官方docker image 镜像地址
  3. 官方讨论 论坛链接,建议没啥事就可以逛逛,看问题和回答也是件很有意思的事

本篇主要是根据参考1,相当部分文字直接翻译而来


Test computer and System:

  • Desktop setting: i9-12900KF, GPU 3090, CUDA 11.3
  • System setting: Ubuntu 20.04, ROS noetic (Python 3.8)

Introduction 介绍

Isaac Sim是什么勒?是一个针对于机器人的仿真器;之前我有写过一系列的CARLA仿真器教程,而这里为什么要新开仿真器呢?主要就是CARLA的定位是针对于室外无人驾驶的,而Isaac Sim更多针对于室内的机器人系列,包括AGV, 车上带个机械臂,其实更靠近 CoppeliaSim VREP 的使用方向。

官方截图

既然介绍到了仿真器,那一口气都说一下好了 【我和小伙伴已知的】:

Some simulators for robotics or autonomous driving scenarios

  • CARLA focus on autonomous driving 无人驾驶场景;http://carla.org/
  • CoppeliaSim focuses on robotics 机器人场景;https://www.coppeliarobotics.com/ 【usually on Robotic Arms 机械臂常用】
  • Isaac Sim focuses on robotics 机器人场景;https://developer.nvidia.com/isaac-sim
  • Issac Gym is the same as the above one but has more RL setting here; 同上,RL环境更多;https://developer.nvidia.com/isaac-gym
  • RaiSim focuses on robotics 机器人场景, official introduction: a cross-platform multi-body physics engine for robotics and AI;https://raisim.com/

Isaac Sim背靠NVIDIA 英伟达!所以对比与coppeliasim 它对于传感器和世界的仿真更更为真实一点【我没非常仔细对比过 说错了不怪我 纯肉眼看的感觉】,然后是对于GPU的支持,只要GPU到位 仿真收数据速度什么的都应该可以很快

官方介绍翻译:

Isaac Sim 具有构建虚拟机器人世界和实验的基本功能。它为研究人员和从业者提供了创建稳健、物理上准确的模拟和合成数据集所需的工具和工作流程。Isaac Sim 通过 ROS/ROS2 支持导航和操作应用程序。它模拟来自 RGB-D、激光雷达和 IMU 等传感器的传感器数据,用于各种计算机视觉技术,例如域随机化、地面实况标记、分割和边界框。

开发工作流程图

从图里能看出来 整个workflow,UI、Python API、ROS等 均可以通信

看官方文档 应该是熟悉一下UI 比如添加物品之类的

本机环境

Install 安装

点击Download,然后填写信息后就可以选择下载Window or Linux了,安装完成后进入Running 运行部分;前提提要 安装显卡及显卡驱动,详情点击此文字 见博客

2. Workstation Installation - Omniverse Robotics documentation

此为Ubuntu示例,WIndow内置有nvidia官方拍的视频

  1. 下载 Download the Omniverse Launcher.

  2. 安装运行 Install Omniverse Launcher

    sudo chmod +x omniverse-launcher-linux.AppImage
    ./omniverse-launcher-linux.AppImage
    
  3. 下载 Isaac Sim;如图 【全UI操作】 下载 Isaac Sim 需要 7.49G

Running 运行

如图 安装完成后会出现 isaac sim 然后点一下launch,然后再按个start;后续可以从LIBRARY处点击launch

右键随便加了一个圆锥 顺便截图有指明显存耗的情况【显示器是1080p的】

Docker及云端

Install 安装

3. Container Installation - Omniverse Robotics documentation

Docker 安装见 详情点击此进入对应博客文章

如下 需要像dockerhub一下注册账号等

docker login nvcr.io

docker pull nvcr.io/nvidia/isaac-sim:2022.2.0

然后呢 需要用 Omniverse Streaming Client 来进行窗口展示

注意如果是服务器!!大部分服务器为了安全着想 只会开几个固定端口进行链接,所以一定要确保自己以下端口打开并可以连接:

Should the host be located on the infrastructure of a third-party Cloud provider, 
it may additionally be required that the following ports be opened, and that 
firewall rules allow traffic inbound and outbound traffic:

TCP: 47995 to 48012
TCP: 49000 to 49007
TCP: 49100
UDP: 47995 to 48012
UDP: 49000 to 49007

更多可见 官方给的提示,点击此跳转官方网页

Running 运行

因为手头没有可用服务器,所以就展示一下Docker的用法,主要是--net=host后一切都好办

  1. 用image开一个container

    docker run --name isaac-sim --entrypoint bash -it --gpus all -e "ACCEPT_EULA=Y" --rm --network=host \
        -v /usr/share/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json \
        -v /usr/share/vulkan/implicit_layer.d/nvidia_layers.json:/etc/vulkan/implicit_layer.d/nvidia_layers.json \
        -v /usr/share/glvnd/egl_vendor.d/10_nvidia.json:/usr/share/glvnd/egl_vendor.d/10_nvidia.json \
        -v ~/docker/isaac-sim/cache/ov:/root/.cache/ov:rw \
        -v ~/docker/isaac-sim/cache/pip:/root/.cache/pip:rw \
        -v ~/docker/isaac-sim/cache/glcache:/root/.cache/nvidia/GLCache:rw \
        -v ~/docker/isaac-sim/cache/computecache:/root/.nv/ComputeCache:rw \
        -v ~/docker/isaac-sim/logs:/root/.nvidia-omniverse/logs:rw \
        -v ~/docker/isaac-sim/config:/root/.nvidia-omniverse/config:rw \
        -v ~/docker/isaac-sim/data:/root/.local/share/ov/data:rw \
        -v ~/docker/isaac-sim/documents:/root/Documents:rw \
        nvcr.io/nvidia/isaac-sim:2022.2.0
    

    唯一一个需要注意的点【因为官方默认的不适配我的环境 上述已经是变了的】 找到自己nvidia_icd.json 文件地址;可能地址如下:

    # 官方默认
    -v /etc/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json \
    -v /etc/vulkan/implicit_layer.d/nvidia_layers.json:/etc/vulkan/implicit_layer.d/nvidia_layers.json \
    
    # 我的环境
    -v /usr/share/vulkan/icd.d/nvidia_icd.json:/etc/vulkan/icd.d/nvidia_icd.json \
    -v /usr/share/vulkan/implicit_layer.d/nvidia_layers.json:/etc/vulkan/implicit_layer.d/nvidia_layers.json \
    
  2. 在container运行一行

    # inside container
    ./runheadless.native.sh
    

    请遵循官方的手册 等到终端打印出 再进行下面的窗口展示 【第一次一般慢一点 官方文字:It may take a few minutes for Isaac Sim to be completely loaded.】

    Isaac Sim Headless Native App is loaded.
    # 实际上我显示的是这个
    [22.315s] app ready
    
  3. 用 Omniverse Streaming Client 来进行窗口展示

    然后注意这一步 一开始可能显示的是RTX Loading 就是还在编译 ray tracing shaders,这一点官方也有提示 第一次的时候 一般需要几分钟,比如我的配置 耗时了212s去完成这个显示

    The first time loading Isaac Sim will take a while for the shaders to be cached. Subsequent runs of Isaac Sim with be quick once the shaders are cached and the cache is mounted when the container runs.

    在如右RTX ready后 随手加了create 两个mesh shape

最后在docker内 窗口好像有点没法变 这一点好像得设置一下 restart 具体见官方链接操作吧

# Default value is set to `1.0`, and can be adjusted for best results:
--/app/window/dpiScaleOverride=1.5

还有docker运行里 随手开了一个example的场景也还行:

总结

以上 为 Isaac 相关介绍啦~ 包括一系列的安装 后续可能再来一个放个小机器人 搞几个传感器 开收数据 差不多就结束了 API可以对着官方文档看就行


赠人点赞 手有余香 😆;正向回馈 才能更好开放记录 hhh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/146639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaGuide面试总结】Java基础篇·中

【JavaGuide面试总结】Java基础篇中1.重载和重写有什么区别?2.什么是可变长参数?3.为什么浮点数运算的时候会有精度丢失的风险?4.如何解决浮点数运算的精度丢失问题?5.超过 long 整型的数据应该如何表示?6.基本类型和包…

JSP——标准标签库 (JSTL)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

5G NR标准: 第19章 毫米波射频技术

第19章 毫米波射频技术 现有的 2G、3G 和 4G 移动通信 3GPP 规范适用于 6 GHz 以下的频率范围,相应的 RF 要求考虑了与 6 GHz 以下操作相关的技术方面。 NR 也在这些频率范围内运行(标识为频率范围 1),但另外还将定义为在 24.25…

【人工智能原理自学】梯度下降和反向传播:能改

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔笔记来自B站UP主Ele实验室的《小白也能听懂的人工智能原理》。 🔔本文讲解梯度下降和反向传播:能改,一起卷起来叭! 目录一、“挪…

Rollup Decentralization

1. 引言 当前的Rollup为中心化的,这并不是必须的,而是当前的选择。 2. 何为Rollup? Rollup与其它L2或侧链的主要区别在于: L1数据可用性 Rollup:只要L1的数据可用性存在,用户可重构L2状态,然…

SQL LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 SQL LIKE 操作符 LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 SQL LIKE 语法 SELECT column1, column2, ... FROM table_name WHERE column LIKE pattern; 参数说明: column1, column2, ...&…

php://filter伪协议(总结)

文章目录php://filter伪协议总结php://filter伪协议介绍php://filter伪协议使用方法php://filter过滤器分类filter字符串过滤器string.rot13string.toupperstring.tolowerstring.strip_tagsfilter转换过滤器convert.base64-encodeconvert.base64-decodeconvert.quoted-printabl…

【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声明可空类型变量 )

文章目录一、Kotlin 的空安全机制二、变量可空性1、默认变量不可赋空值2、声明可空类型变量一、Kotlin 的空安全机制 Java 中的空指针问题 : 在 Java 语言 编写的程序中 , 出现最多的崩溃就是 NullPointerException 空指针异常 , 该异常是 运行时 才爆出的 , 在 代码编写时 以…

冰冰学习笔记:C++11的新特性

欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正。 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位…

k8s入门教程

文章导读 kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。 kubernetes的本质是一组服务器集群&…

创建自己的docker镜像

dockerfile案例1导入dockerfiel以及java文件导入后第一步docker build -t javaweb:1.0 .docker build -t (名称以及对应的版本)javaweb:1.0 .(空格之后的一个点表示从当前目录开始)导入成功之后运行容器即可docker run --name web…

二十七、linux系统详解

一、Linux基础篇 1. Linux目录结构 ⑴ 基本介绍: linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。 深刻理解linux树状文件目录是非常重要的,这里我给大家说明一下。 记住一…

Markdown生成目录结构的方法

参考文章:https://www.cnblogs.com/abc-x/p/13470575.htmlmarkdown生成目录结构的方法:示例:project│ README.md│ file001.txt │└───folder1│ │ file011.txt│ │ file012.txt│ ││ └───subfolder1│ │ file111.txt│ │ fil…

【Linux多线程编程】5. 线程锁(2)——死锁、读写锁

前言 上篇文章【Linux多线程编程】4. 线程锁(1)——互斥锁 我们介绍了线程同步的其中一种方式——互斥锁,互斥锁也可以理解为独占锁,只要有一个线程拿到该锁,其他的线程想要获取只能阻塞等待。但互斥锁的使用不当也可…

【云原生】Ceph 在 k8s中应用

文章目录一、概述二、Ceph Rook 介绍三、通过Rook在k8s中部署Ceph1)下载部署包2)部署 Rook Operator3)创建 Rook Ceph 集群4)部署Rook Ceph 工具5)部署Ceph Dashboard6)检查6)通过ceph-tool工具…

VirusTotal智能搜索itw查找从github下载的恶意Android样本

1. Introduction ITW是in the wild的缩写,VirusTotal提供了itw这个搜索关键词,可以搜到从某个url(部分url)上下载到的样本。 作者写过的其他VirusTotal智能搜索用法的文章见参考1和2. 2. itw使用 比如为了查找从github下载的恶…

Day852.Thread-Per-Message模式 -Java 性能调优实战

Thread-Per-Message模式 Hi,我是阿昌,今天学习记录的是关于Thread-Per-Message模式的内容。 Thread-Per-Message 模式,简言之就是为每个任务分配一个独立的线程。 并发编程领域的问题总结为三个核心问题: 分工同步互斥 其中&…

client-go源码学习(三):Indexer、SharedInformer

本文基于Kubernetes v1.22.4版本进行源码学习,对应的client-go版本为v0.22.4 3、Informer机制 4)、Indexer Indexer中有Informer维护的指定资源对象的相对于etcd数据的一份本地缓存,可通过该缓存获取资源对象,以减少对Kubernete…

计算Java对象大小(附实际例子分析)

对象大小如何计算 对象大小包括俩部分的内容,对象头和对象内容。(图片源于网络) 对象头 此处假设是64位的JVM 对象地址,占4个字节。对象标记,占8个字节,包括锁标记,hashcode, age 等。数组…

python 如何使用 pandas 在 flask web 网页中分页显示 csv 文件数据

目录 一、实战场景 二、知识点 python 基础语法 python 文件读写 python 分页 pandas 数据处理 flask web 框架 jinja 模版 三、菜鸟实战 初始化 Flask 框架,设置路由 jinja 模版 渲染列表数据 分页请求数据 显示详情页数据示例 运行结果 运行截图 …