Isaac Sim教程04 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中添加材质的步骤

难度级别

初级中级高级

预计耗时

25 mins

学习前提

对象类型状态
Ubuntu22.04操作系统软件已确认
Isaac Sim软件已配置
Isaac Sim基本概念知识已了解
Isaac Sim基本使用知识已了解

添加物理环境

在仿真中,物体通常受到各种物理力,时间也在不断地流逝,为了尝试实现这样的仿真效果,请完成以下步骤:

通常来说,世界需要一般的物理模拟属性,例如重力和物理时间的步进,依次点击Create->Physics->Physics scene来添加物理环境
在这里插入图片描述

随后,在Property->Physics里修改这个物理环境的基本属性,因为这是简单的测试,所以不需要GPU的强大能力,取消选中Enable GPU Dynamics,并将Broadphase Type改为MBP

multi box pruning (MBP)是一种Broadphase(广相位)的算法,具体细节可参考Nvidia physX 中的说明。

“Broadphase”(广相位)是物理引擎中的一个阶段,它用于加速物体之间的碰撞检测。 Broadphase的目标是减少需要进行详细碰撞检测的物体数量,从而提高碰撞检测的效率。这对于处理大量物体的仿真非常重要,因为详细碰撞检测是计算密集型的操作。

在Broadphase之后,只有被Broadphase算法认为可能发生碰撞的物体对才会进行详细的碰撞检测。这包括精确的形状相交检测,如球体、多边形、网格等。由于Broadphase已经大大减少了需要检测的物体对的数量,这一步通常较为高效。

更详细地说,在物理引擎中,碰撞检测通常分为广相位(Broad Phase)和窄相位(Narrow Phase)两个阶段,这有助于有效地处理大量物体之间的碰撞。以下是对这两个阶段的详细解释:

  1. 广相位(Broad Phase):
    在广相位中,物理引擎会确定哪些物体可能会发生碰撞,并将这些潜在碰撞对象存储在一个列表中,通常被称为碰撞对(collision pair)。这一阶段的目标是减少需要在窄相位进行详细碰撞检测的物体数量,从而提高碰撞检测的效率。广相位的任务是识别可能碰撞的物体,而不是确认它们是否确实碰撞。

    举例来说,如果你想模拟整个世界的人口,就需要检查每个代表人的对象是否与其他人发生碰撞。但显然,伦敦的人不可能与大连的人发生碰撞,因此没有必要在广相位中检查这两个城市的所有人之间的碰撞。广相位会尝试将世界分成离散的区域,其中我们知道这些区域不会重叠,因此区域内的物体也不会发生碰撞。这样可以大大减少需要进行详细碰撞检测的对象数量,从而提高性能。

  2. 窄相位(Narrow Phase):
    在窄相位中,引擎会迭代广相位中识别的潜在碰撞对列表,并对每对物体进行详细的碰撞检测,以确定它们是否确实发生了碰撞。如果两个物体在窄相位中被确认为发生碰撞,那么引擎将执行碰撞解决过程,即使物体之间的碰撞也会得到处理。

总而言之,广相位负责快速识别可能碰撞的物体,将它们存储在一个列表中,而窄相位则负责对这些潜在碰撞对进行详细的碰撞检测和解决。通过这种两阶段的碰撞检测方法,可以显著减少需要检测的对象数量,从而提高物理引擎的性能和效率。

对于广相位更深入的理解可参考Newcastle University相关研究

在这里插入图片描述

添加地面

和其他仿真软件一样,Isaac Sim也需要添加地面,这是因为即使有了重力等物理环境,物体在开始仿真前也被摆放好了位置,如果没有地面,那么物体可能会处在一直坠落的状态。

依次点击Create->Physics->Ground Plane来添加一个地面
在这里插入图片描述

可以看到地面被添加了,通过鼠标中间缩放,发现地面只有一部分,这是因为超出范围的地面不需要渲染,以此减少性能开销,但即使是在不可视的地面,依然会有碰撞属性,物体在坠落到地面时不会再继续向下坠落。
在这里插入图片描述

添加物体

按照Isaac Sim基本使用中的办法,添加一个普通的立方体,并将它的位置设置在[0,0,0.5],这是因为默认的物体中心将在[0,0,0]出现,默认立方体的边长是1m,内嵌在了地面中,这显然和地面冲突了。
在这里插入图片描述

添加光照

每个Stage都带有默认的环境光照(defaultLight),否则看不见东西。
此时我们来尝试添加另一个光照,来感受光照对于环境和物体的影响。
依次选择Create->Light->Sphere Light来添加一个球状光源
在这里插入图片描述

因为默认环境光照比较强,会导致新的光照看着似乎没有生效,因此在Stage中将defaultLight设为不可视
在这里插入图片描述

随后将这个新添加的球状光照的颜色改为红色使得它更加显眼,Radius改为1使得它不再是添加时默认的非常大的半径,同时将这个球光源的Z轴位置设置为5,便于观察。
在这里插入图片描述

在这里插入图片描述

添加更多物体

随意地从Create->Shape里找一些物体,将他们悬空放置
在这里插入图片描述

随后点击Isaac Sim左侧的Play来使仿真开始步进
在这里插入图片描述

令人疑惑的是,这些物体并没有按预料中的方式下坠,这是因为虽然设置了物理环境,但并没有设置物体自身的物理属性,接下来在Propetry中为物体添加刚体和碰撞器

添加刚体和碰撞器

Stage中选中物体,并在Property中添加Physics里的Rigid Body with Colliders Preset
在这里插入图片描述

  • 刚体 Rigid Body
    刚体可以具有质量、惯性、速度、角速度等属性,这些属性决定了物体如何响应外力和碰撞。
    刚体可以是动态的(可以受到外力和碰撞的影响)或静态的(不会移动)。
    在游戏引擎中,如Unity或Unreal Engine或者其他仿真器,将刚体属性添加到对象,可以使其具备物理性质。

  • 碰撞器 Collider
    碰撞器是用于定义物体的碰撞形状和边界的组件,通常与刚体一起使用。
    碰撞器没有质量、速度等物理属性,它们仅用于检测物体之间的碰撞。
    碰撞器可以是各种形状,如盒状碰撞器、球形碰撞器、网格碰撞器等,以适应不同形状的物体。
    当两个具有碰撞器的物体发生碰撞时,游戏引擎会检测碰撞并触发相应的事件,例如碰撞检测、碰撞响应等。

在添加完后会发现物体多了这些属性,以Cube为例,它有各种各样的Property,包括GeometryVisualPhysics等,在Physics中可以发现刚才新添加的Rigid BodyCollider
在这里插入图片描述

检查碰撞体情况

依次选中GUI界面中的眼睛->Show By Type->Physics->Colliders->All来启用碰撞体可见模式。
在这里插入图片描述
在这里插入图片描述

开始仿真

此时再次点击Isaac Sim左边的Play按钮,将会观察到悬空的物体在时间开始流动时不断下坠,直到撞击地面

在这里插入图片描述

添加物理材质

对于特定的仿真,比如箱子在斜坡上滑动,需要涉及到摩擦力等问题,物理材质在其中起到了重要的作用。
依次点击Create->Physics->Physics Material来创建一个物理材质
在这里插入图片描述

在添加物理材质时会提示不同材质的选项,这也是Isaac Sim的强大之处,"rigid body material""deformable body material""PBD Particle Material"是可选的三种类型。

  • Rigid Body Material(刚体材质)

    • 刚体材质用于模拟刚性物体,这些物体不会发生形变,其形状在运动过程中保持不变。
    • 刚体通常用于模拟硬物体,如石头、金属、木头等。
    • 物体之间的碰撞会产生弹性反应,而且刚体通常不会发生变形。
  • Deformable Body Material(可变形材质)

    • 可变形材质用于模拟具有弹性的物体,它们可以发生形变,如橡胶、布料、软泥等。
    • 这些物体在受到外部力或碰撞时可以发生形状的变化,通常会遵循弹性和塑性行为。
    • 通常需要更复杂的物理模型来模拟可变形物体的行为,如有限元分析。
  • PBD Particle Material(基于粒子的动力学材质)

    • PBD(Position-Based Dynamics)是一种用于模拟可变形和弹性物体的方法,通常用于模拟细粒度的物体,如液体、布料等。
    • PBD通过在模拟中使用一组粒子来表示物体,并应用基于位置的动力学来模拟其行为,可以处理大变形和复杂物体。
    • PBD通常比传统的有限元分析更高效,但也可能缺少精确性。

在这里插入图片描述
因为这里只是普通的刚体,因此在PhysicsMaterial的资产中选择Rigid Body Material,随后在Property里的Physics里修改摩擦力的选项

在这里插入图片描述

随后为Cube添加这个摩擦力的属性。在这里插入图片描述

添加外观材质

除了物理材质,物体也可以添加用于外观展示的材质
依次选中Create->Material->OmniPBR来添加一个OmniPBR材质,可以理解为普通的外观材质。

  • Omni PBR材质
    Omni PBR材质是一种基于物理的渲染(Physically-Based Rendering,PBR)材质,用于实现更逼真的图形渲染效果。PBR是一种图形渲染技术,旨在模拟光线如何与物体表面交互以产生更真实的视觉效果。这种技术考虑了光的物理特性,包括漫反射、镜面反射、折射等,以在虚拟环境中模拟材质的外观和光照交互。
    在这里插入图片描述

OmniPBR材质的Property里有海量的可调选项,这也是Isaac Sim的强大之处,此处就以简单地修改颜色为例。
选中OmniPBR->Property->Albedo->Albedo color修改为你喜欢的颜色,随后将Stage中这个材质拖动到场景物体上即可赋予视觉的颜色。

在这里插入图片描述
在这里插入图片描述
另一种更准确的方式是在对应PrimProperty->Material on selected model中选择刚才添加的OmniPBR

在这里插入图片描述

现在,你已经学会了如何创造一个更加真实的世界,带有物理环境、物体、地面、光照、刚体与碰撞、物理材质、外观材质等内容。

USD文件的保存与使用

保存USD文件

localhost/Library下新建文件夹isaac_learning用于存放Isaac练习的相关文件
在这里插入图片描述
在GUI界面的File->Save保存USD文件

在这里插入图片描述

对于使用了多个外部素材的USD文件,建议将它所涉及的素材全部打包到一个文件夹内
通过右键USD文件并选中Collect Asset来收集相关素材并打包。
在这里插入图片描述

使用USD文件

在Nvidia Isaac Sim中使用USD文件作为参考的步骤如下图所示:

  • 选择菜单栏中的 File
  • 在下拉菜单中选择 Add Reference 选项
    添加参考图片
    一旦加载完成,引用的USD文件将以与文件名相同的Prim名称加载到舞台上。这意味着整个USD文件的内容,包括PhysicsScene、defaultLight和GroundPlane等内容,都会被加载到新的舞台上。

注意: 这可能导致混淆,特别是当您需要加载多个USD参考,每个参考包含自己的PhysicsScenes和defaultLights。由于这些内容是通过Add Reference加载的,您不能直接在新的Stage上删除它们。同时,在原始USD文件中删除PhysicsScene、defaultLight和GroundPlane等内容也不是一个理想的解决方案,因为这可能会导致在创建USD文件时更加复杂。

为了更好地管理加载的USD文件和避免加载原始世界的环境内容,您可以按照以下步骤修改原始USD文件:

  1. 创建一个名为 my_robot 的新 Xform,用于容纳机器人的相关组件。
  2. 将机器人的所有组件从原始USD文件拖动到 my_robot 这个 Xform 下。
  3. my_robot 设置为新的defaultPrim。这样,当您在其他舞台上将机器人作为参考导入时,只会导入机器人的主体,而不会包含原始世界的环境内容。这一步确保了您只加载了所需的机器人部分,而不会混淆或加载多余的内容。

在这里插入图片描述

练习

练习目标

制作出一个两轮机器人,由一个Cube拉伸得到身体,两个Cylinder作为左右轮,并保存作为USD文件
在这里插入图片描述

练习参考

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EI论文复现:考虑源荷不确定性的含风电-电力系统低碳调度程序代码!

本程序参考论文《考虑源荷不确定性的含风电-电力系统低碳调度》,程序中考虑了源荷的不确定性,引入模糊机会约束规划来求解不确定性模型,对做相关研究方向的小伙伴非常有帮助,程序算例丰富、注释清晰、干货满满,下面对文…

JAVA刷题之数组的总结和思路分享

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

Amazon Code Whisperer 的正式使用,全新 AI 代码工具等你发现!(内附详细安装步骤图解)

文章作者:稚始稚终 关于 Code Whisperer Code Whisperer,亚马逊推出的实时 AI 编程助手,是一项基于机器学习的服务,它可以分析开发者在集成开发环境(IDE)中的注释和代码,并根据其内容生成多种代…

【LeetCode:2646. 最小化旅行的价格总和 | DFS + DP】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【开发问题解决方法记录】04.dian 权限表单优化

权限表单优化方向: 父级权限从晶点权限表获取做成列表下拉选中 权限名称和编码一行两列 页面id从 select * from APEX_APPLICATION_PAGES where APPLICATION_ID304; 中获取 【遇到的问题1】 DG可以获取到页面信息,但是表和应用程序无法获取到 【问…

机器学习-逻辑回归

一、引言 逻辑回归(Logistic Regression)是一种广泛应用于分类问题的监督学习算法。尽管名字中含有“回归”二字,但这并不意味着它用于解决回归问题。相反,逻辑回归专注于解决二元或多元分类问题,如邮件是垃圾邮件还是…

TSMaster添加注释

当我们在回放报文的时候,会遇到一些需要添加注释,有以下几种办法进行注释 报文运行时手动注释 在图形窗口回放报文,正在抓取报文或者进行报文回放。工具栏选择添加实时注释,这种办法需要手速快,而且时间对的不是很准…

App内存优化

一、内存优化介绍 1.背景介绍 内存是大问题但缺乏关注压实骆驼的最后一个稻草(堆栈溢出) 2.内存问题 内存抖动:锯齿状、GC导致卡顿内存泄露:可用内存减少、频繁GC内存溢出:OOM,程序异常 二、优化工具选…

jvs智能bi新增:数据集添加sql自定义节点、添加websocket任务进度动态展示等等

智能bi更新功能 新增: 1.数据集添加sql自定义输入节点,支持mysql Oracle数据源; 用户可以从这些数据源中获取数据,并通过SQL语句对数据进行自定义处理和分析。可以帮助用户更加灵活地处理和分析数据,满足各种个性化的需求。 2.…

识别低效io引起的free buffer waits

产生事发时间段的awr报告 Top 5 wait events 这里重点关注: 1.free buffer waits 2.enq_HW-contention 3.enq:tx-row lock contention enq:HW-contention属于水位线的争用,已经透过alter table allocate extent,提前分配空间,这里不做讨论 …

spring boot+sharding jdbc实现读写分离

shigen日更文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 在shigen之前的文章中,写到了Springboot mybatis plus实现读写分离,没有sharding-jdbc的…

怎么修改按SHIFT键关闭Caps Lock功能?

win11 Step 1> 设置-> 时间和语言Step 2> 输入Step 3> 高级键盘设置Step 4> 语言栏选项 -> 高级设置-> 按CAPS LOCK键 Step 1> 设置-> 时间和语言 Step 2> 输入 Step 3> 高级键盘设置 Step 4> 语言栏选项 -> 高级设置-> 按CAPS LOCK…

同调群的维度 和 同调群的秩

同调群的维度是指同调群中非零元素的最小阶数。与线性代数中对向量空间的维度的理解类似。对同调群,k维同调群的维度是k。 同调群的秩是指同调群中的自由部分的维度。同调群通常包含自由部分和挠部分。同调群的秩是指同调群中自由部分的维度。对同调群,…

python+django教师下乡支教岗位分配管理系统pycharm毕业设计项目推荐

本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行,将系统所使用到的表以及数据存储到MySQL数据库中,方便对数据进行操作本课题基于WEB的开发平台 1.运行环境:python3.7/python3.8。 2.IDE环境:pycharmmysql5.7; …

多线程(初阶八:计时器Timer)

目录 一、标准库中的计时器 1、计时器的概念 2、计时器的简单介绍 二、模拟实现一个计时器 1、思路 (1)计数器中要存放任务的数据结构 (2)存放优先级队列中的类型:自定义任务类MyTimerTask (3&…

用python找到音乐数据的位置,并实现音乐下载

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 需求分析: 有什么需求要实现? 这些需求可以用什么技术实现? 找到音乐数据的位置, 分析 不同音乐的链接有何规律?https://lx-sycdn.kuwo.cn/b784688662c82db8…

RocketMq环境搭建

目录 MQ作用 RocketMQ背景 MQ对比 RocketMQ环境搭建 搭建dashboard可视化界面 MQ作用 异步解耦削峰 RocketMQ背景 ​ RocketMQ是阿里巴巴开源的一个消息中间件,在阿里内部历经了双十一等很多高并发场景的考验,能够处理亿万级别的消息。2016年开源…

Win10无法删除文件需要管理员权限的解决方法

在Win10电脑中,用户想要删除不需要的文件,却收到了需要管理员权限才能删除,导致用户自己无法将文件删除掉。下面小编给大家带来Win10系统删除文件需要权限的解决方法,解决后用户在Win10电脑上就能删除任意文件了。 Win10无法删除文…

TCP协议实现一对一聊天

服务端代码: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner;/*** 发送消息线程*/ class Send e…

香港优才计划申请获批后,才发现原来香港年薪100w并不难!

香港优才计划申请获批后,才发现原来香港年薪100w并不难! 在香港工作的话,给我个人的感觉就是工作和生活是分开的,无论是同事还是上司。比如员工在休假的时候从来不会突然来个电话让你忙个工作或者加个班,也不会八卦你的…