IsaacSim Unity3D - 使用IsaacSim创建Unity项目

使用IsaacSim创建Unity项目

本节介绍如何使用IsaacSim创建自己的Unity项目。假定您具有Unity编辑器的基本知识。如果您不熟悉Unity,请先阅读Unity学习资源和教程。

创建一个新项目

IsaacSim Unity3D具有自定义项目设置和程序包依赖性。创建具有艾萨克一个新项目最简单的方法是将复制AssetsPackagesProjectSettings文件夹从样本项目:

bob@desktop:~/isaac_sim_unity3d$ mkdir projects/test
bob@desktop:~/isaac_sim_unity3d$ cp -r projects/sample/Assets projects/sample/Packages projects/sample/ProjectSettings projects/test/

接下来,打开新项目:

bob@desktop:~/isaac_sim_unity3d$ ~/Unity/Hub/Editor/2018.3.11f1/Editor/Unity -projectPath projects/test -logfile

注意

2018.3.11f1如果您安装了其他版本的Unity,则上述命令中的目录可能会有所不同。

等待项目加载(大约需要10分钟)。完成后,您应该在编辑器中看到一个空的场景:

IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第1张图片
Unity中的新项目

创建一个新场景

首先,您需要创建一个新场景:

  1. 用鼠标右键单击项目选项卡。
  2. 选择“ 创建”>“场景”
  3. 将场景重命名为“测试”。
  4. 打开场景。
IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第2张图片
新场景
  1. 创建一个空的GameObject并将其命名为“ world”。
  2. 添加一个平面作为地面,并添加几个立方体作为墙。
  3. 将“ Map Camera”预制件添加到场景中。
  4. 将地图另存为“ /tmp/test.png”。
  5. 卸下“地图相机”。
IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第3张图片
添加了地图的新场景

添加随机障碍

接下来,您可以向场景添加随机障碍:

  1. 创建一个新的空GameObject并将其命名为“随机场景”。
  2. 使用检查器中的“ 添加组件 ”来添加“随机性”和“随机化器组”脚本。
  3. 将“ Randomness”组件拖到“ Randomizer Group”脚本的“ Randomness”字段中。
IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第4张图片
带有随机障碍的统一场景
  1. 添加一个名为“ random box”的空子GameObject。
  2. 添加一个对撞机并将其放置在右上角的空白处。
  3. 使用“ 添加组件”按钮添加“对撞机资产扳手”脚本和“变换随机化器”脚本。
  4. 修改以下设置:
  1. 转到项目> NVIDIA IsaacSim for Unity3D(示例)>仓库>道具>组
  2. 将“ CardboardBoxProps”拖到“ Collider Asset Spawner”的“ Asset Group”中。
  3. 将“变换随机化器”组件拖到“对撞机资产生成器”的“变换随机化器”字段中。
  4. 将“对撞机资产扳手”的“最大计数”更改为6,将“变换随机化器”的“旋转-均匀范围-Y”更改为180。
  1. 转到“随机场景” GameObject,然后按“ 随机化”按钮。您应该看到从“ CardboardBoxProps”组中抽出的6个纸箱,它们是在箱子中随机产生的。
  2. 再次按随机化以重新生成框。
IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第5张图片
带有场景的Unity场景
  1. 复制“随机框” GameObject。
  2. 将游戏对象重命名为“随机垃圾桶”。
  3. 将BoxCollider移动到左下角的空白处。
  4. 将“对撞机资产扳手”的“资产组”更改为“无”。
  5. 转到。Project > NVIDIA IsaacSim for Unity3D (Samples) > Warehouse > Props
  6. 将“ TrashCan01”拖到“ Collider Asset Spawner”的“ Prefab”中。
  7. 转到“随机场景” GameObject,然后按“ 随机化”按钮>您应该看到随机放置了6个垃圾桶。
IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第6张图片
带有随机垃圾桶的统一场景

您也可以在场景中放置自己的模型。确保模型附有对撞机并且最小高度为0.7m,以便卡特上的模拟激光雷达可以看到它们。

如下所示更改主相机的位置和旋转角度,以鸟瞰场景。如果按立即播放,您应该在游戏视图中看到一个静态场景。按停止

IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第7张图片
游戏视图中的静态Unity场景

添加Carter和Isaac应用程序

现在您可以将机器人添加到场景中了:

  1. 转到。Project > NVIDIA IsaacSim for Unity3D (Samples) > Robots
  2. 将“ Carter_Wheeled”预制件拖到场景中。现在,您应该在场景中心看到Carter。
IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第8张图片
卡特的统一场景
  1. 转到“ 控制台”选项卡,然后启用“错误暂停”。

注意

如果按立即播放,您将看到游戏立即暂停,并显示错误消息“唤醒前访问IsaacNative单身人士”,因为您尚未添加用于加载Isaac SDK C API并运行NavSim应用程序的“ isaac.alice”预制件。

  1. 停止游戏,然后转到。Project > NVIDIA IsaacSim for Unity3D (Core) > Prefabs
  2. 将“ isaac.alice”预制件添加到场景中。
  3. 在现场添加“ isaac.minisight”预制件,以可视化全球和本地计划。

现在,当您按Play时,模拟应该开始而没有错误。

IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第9张图片
卡特玩的统一场景

打开一个终端,转到Isaac SDK文件夹,然后使用我们之前为该场景保存的地图运行导航应用程序:

bob@desktop:~/isaac$ bazel run apps/navsim:navsim_navigate -- --more /tmp/test.json,packages/navsim/robots/carter.json

在Chrome浏览器中打开Isaac Sight,网址为http://localhost:3000/

IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第10张图片
以撒的视线显示自定义Unity场景

您应该看到Carter正确定位并接收Lidar和RGBD摄像机数据。但是,由于目标行为设置为“姿势”,但是没有从Simulation中发布目标姿势,因此它保持静止。

在Sight中,转到,将“ desired_behavior”从“ pose”更改为“ random”,然后按Submit。您应该看到目标姿势以红色显示在“地图视图”中,卡特沿计划路径移动。Application Configuration > goals.goal_behavior

IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第11张图片
在以撒的视线中设定卡特姿势
IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第12张图片
卡特路径的统一场景

故障排除

我在Sample包中双击Unity场景以打开该场景,然后弹出此消息:

IsaacSim Unity3D - 使用IsaacSim创建Unity项目_第13张图片
Unity“即将打开另一个项目!” 信息

选择取消。而是将场景图标拖到层次结构中并删除上一个场景。

我按Play键,Unity编辑器崩溃

在“ Unity编辑器控制台”选项卡中,单击 “播放”之前检查是否有任何错误。启用错误暂停,如果Unity捕获任何错误,这将暂停游戏。最后,如果您使用-logFile标志启动Unity Editor,则Unity将日志输出到终端。检查终端日志中是否有任何错误:一个常见的原因是Unity中运行的Isaac SDK应用程序由于缺少配置文件而崩溃。

我按Play并收到很多类似于“无法调用IsaacIsaacCreateApp”的错误

Unity无法加载isaac sdk c api lib。您需要//packages/navsim/apps:navsim-pkg 从Isaac SDK 部署到中。例如,您将使用此命令部署到示例项目:[your project]/Assets/StreamingAssets

bob@desktop:~/isaac$ ./engine/build/deploy.sh -p //packages/navsim/apps:navsim-pkg -d x86_64 -h localhost --deploy_path ~/isaac_sim_unity3d/projects/sample/Assets/StreamingAssets

我在Unity中添加了一个IsaacComponent,但是我没有从模拟器接收数据

检查Unity中IsaacComponent中的Isaac频道名称是否与接收方Isaac应用程序上的频道名称匹配。另外,有时特殊字符/x13会被Unity编辑器插入通道名称字符串中。/x13*.unity场景文件或*.prefab文本编辑器/ IDE中的文件中搜索并删除的任何实例。

你可能感兴趣的:(IsaacSim Unity3D - 使用IsaacSim创建Unity项目)