首先,为什么要用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!