手把手教你使用NVIDIA Isaac Sim进行机器人仿真①

首先,为什么要用Isaac Sim进行仿真?俗话说一图胜千言,那视频得胜万言了,我们直接上NVIDIA官方视频:

https://images.nvidia.cn/cn/youtube-replicates/VW-dOMBFj7o.mp4

最直接的感受就是照片级的仿真画面,以及与AI算法的集成,硬件加速、基于开源的USD格式……

行了,视频已经胜万言了,话不多说。让我们一起来一步一步做出类似视频里的效果吧。

首先简单说一下开发环境。Isaac Sim是基于NVIDIA Omniverse 平台的一个工具,因此需要首先安装Omniverse,Isaac Sim及Omniverse对硬件有一定要求,特别是显卡,具体可以参考官网:

1. Isaac Sim Requirements — Omniverse Robotics documentation

此次教程中的开发环境:

硬件:

  • CPU:Intel Core i7

  • GPU:RTX 3080 

  • RAM:32GB

  • Storage:SSD

软件

  • Ubuntu 20.04

  • NVIDIA Omniverse 1.6.10

  • Isaac Sim 2022.1.1

  • Blender 3.4.0

步骤:

官网下载Omniverse Launcher并安装:

2. Basic Isaac Sim Installation — Omniverse Robotics documentation

安装好之后,启动Omniverse Launcher。

为便于大家快速找到重点,教程中的图片用蓝色线、框对关键信息进行了标记。

在EXCHANGE栏可以找到Isaac sim。可以找到版本信息以及安装或启动按钮,安装之后在LIBRARY栏也可以快速找到并启动Isaac sim:

 启动之后,会有各种模式的选项,我们现在选择默认选项即可:

这就是启动之后的界面啦:

今天的教程我们使用的素材是经典的开源模型:NEOR mini,通过下面的GitHub就可以下载,只需下载车身和一个车轮即可:

neor_mini/mini_sim18_ws/src/neor_mini/meshes at Melodic · COONEO/neor_mini · GitHub

因为Isaac sim目前并不支持直接导入STL格式的文件,因此我们需要先进行格式转换,这里就要用到另一款强大的开源软件Blender:

启动Blender,删掉默认的立方:

首先我们看看Blender支持导入的格式,这里可以看到其支持USD格式导入:

并且也支持导出USD格式,所以我们也可以直接导出USD格式,大家可以试试。今天我们介绍导出为另一种格式。

首先导入车身STL文件:

然后导出为.obj格式。

同样的,导入并导出车轮的相应文件。

回到Isaac sim,我们首先建立一个Ground plane, 其拥有碰撞属性。

接下来导入已转换好格式的车身文件:

这里我们可以看到Isaac sim目前支持导入的格式:

导入NEOR mini车身:

接着导入车轮:

车轮导入后需要将其移动到合适的位置,下边框选的参数可以作为参考,第一个车轮调试好之后,其它的车轮就比较简单了,首先选中第一个车轮,复制一个:

然后移动到合适的位置,只需调整X轴的参数即可:

接着再次选中第一个车轮,再复制一个:

然后移动到合适的位置,这里主要的区别是车轮进行了翻转:

复制刚刚调整好的车轮:

向前移动, 与前边的车轮对齐就可以了:

在调整的时候需要注意这里有两种坐标模式:全局和局部。黄颜色小点时为局部坐标系,在这一坐标系下调整位置会比较方便。

到这里,小车的几何形状就呈现出来啦。

接下来我们给其赋予物理属性。如下图,选中车身和全部车轮,右键,依次选择Add > Physics > Rigid Body with Colliders Preset。

然后我们把小车移动到地面之上,顺便看看整体效果:

NVIDIA Isaac Sim进行机器人仿真

接着我们选择左边栏的播放键,看看会有什么现象:

NVIDIA Isaac Sim机器人仿真

可以看到小车已经具有重力和碰撞的物理属性。那怎么让小车跑起来呢?我们先来把个部件的名称规范一下,双击各部件名字就可以修改名称。

然后我们依次选中车身和左后轮,右键,如下图所示依次选择Create > Physics > Joints > Revolute Joint。

软件会配置一些参数,但需要进行确认和调整旋转方向:

同样的方式将车身与另外三个车轮进行Revolute Joint的添加:

参考相应参数:

 上面只是添加了物理上的关联,接下来我们还需要添加驱动才能让小车动起来,选中四个Revolute Joint,右键,依次选择Add > Physics > Angular Drive。

接下来我们需要对两侧的两组车轮分别进行速度和阻尼的设置:

至此,小车就可以跑起来啦

NVIDIA Isaac Sim机器人仿真 添加驱动

既然Isaac sim的特点之一就是照片级的仿真以及实时渲染,那我们就来对小车的外观进行一下美化,我们直接上材质。在视窗下方的选项中可以找到材质栏,里边已经有NVIDIA内置的一些材质,我们可以在左边的列表中选择金属,选择一个拖动到车身上就可以看到效果啦:

在左边列表选择塑料材质, 选择其中一个拖动到车轮上:

这就是整体效果啦

来试试其它材质,并且加入场景:

NVIDIA Isaac Sim机器人仿真 效果①

这个效果比较接近NEOR mini的真车效果:

NVIDIA Isaac Sim机器人仿真 效果②

让NEOR mini在里面逛逛吧:

NVIDIA Isaac Sim机器人仿真 运行效果①

NVIDIA Isaac Sim机器人仿真 运行效果②

本期的分享就到这里啦,模型的创建/导入有多种方式,今天主要对其中一种方式进行了分享,不足之处,敬请提出意见和建议。欢迎大家一起交流机器人研发的经验与心得。

创作不易,如果喜欢这篇内容,请您也转发给您的朋友,一起分享和交流创造的乐趣,也激励我们为大家创作更多的机器人研发攻略,让我们一起learning by doing! 

猜你喜欢

转载自blog.csdn.net/COONEO/article/details/128268492