美文网首页
IsaacSim Unity3D - 与Isaac SDK通讯

IsaacSim Unity3D - 与Isaac SDK通讯

作者: YottaYuan | 来源:发表于2020-03-20 20:49 被阅读0次

IsaacSim Unity3D - 与Isaac SDK通讯

IsaacSim Unity3D Core使用Isaac SDK C API和C#绑定在Unity内部创建一个Isaac应用程序,并在Isaac应用程序和Unity脚本组件之间传递消息。

Unity和Isaac之间的通信概述

对于一个典型的用例(如上图所示),Unity场景会创建一个navsim.app.json带有TcpPublisher节点的Isaac应用程序()。在Unity场景中,在每一帧上,附加到Unity相机的CameraSimulator C#脚本(1)都会将RGB图像渲染到屏幕外缓冲区,使用该图像缓冲区创建Isaac ColorCameraProto消息,并将该消息发布到消息分类帐Isaac TcpPublisher节点(2)的地址。在Unity外部运行的单独的Isaac应用程序可以订阅(3)到TcpPublisher,接收模拟的RGB图像,然后对其进行后续计算(4)。

Isaac在Unity中的应用

IsaacApplication脚本采用Isaac应用程序JSON文件名。当start()方法是在此脚本后执行统一开始运行,该脚本创建从指定的应用程序JSON文件的艾萨克应用程序并启动它。在Unity停止运行之前,将停止并销毁Isaac应用程序。

要将IsaacApplication脚本和必要的C / C#API绑定添加到场景,请将Core包> Prefabs> isaac.alice预制件附加到场景。

信息获取时间

自游戏开始以来,团结时间以秒为单位进行度量,并且每帧都提前一次。因此,由IsaacComponent发布的每个Isaac消息在Unity的同一帧中都具有相同的acqtime

自应用程序开始以来,Isaac的应用时间以纳秒为单位。由于在Unity模拟之后启动了在Unity中运行的Isaac应用程序,因此Unity时钟和Isaac时钟之间存在偏移。该偏移量在每个Unity帧的开始处进行一次测量,并用该帧中发布/接收的每个Isaac消息进行补偿。

另外,navsim.app.json在Unity(1)中运行的Isaac应用程序()和接收模拟数据(3)的Isaac导航应用程序也具有不同的时钟。将 Isaac :: Alice :: TimeSynchronizer组件添加到两个应用程序的TcpPublisher和TcpSubscriber节点中,以补偿此偏移量。

讯息转换

Isaac SDK消息基于Cap'n Proto,而C#并没有很好地支持它们。为了绕过此限制,Isaac SDK还支持JSON和Capnp原型之间的转换。IsaacComponent C#脚本以JSON&缓冲区格式生成消息,其中大多数高级数据被格式化为JSON对象,大型数据块(例如图像和张量)存储在字节缓冲区中。在navsim.app.json通过TCP发布之前,在Unity()中运行的Isaac应用程序会将这些JSON消息转换为相应的Capnp原型消息。

邮件路由

下图概述了消息如何连接IsaacSim Unity3D和不同的Isaac应用程序组件:

Unity3D消息传递工作流程

Unity中每个发布或接收Isaac消息的IsaacComponent脚本都必须在Unity中的Isaac应用程序中指定消息通道。消息通道通过节点名称,组件名称和通道标签指定。在上图中,Isaac应用程序(navsim.app.json)具有一个“ navsim”节点,其节点类型为TcpPublisher(2)。Unity中的CameraSimulator脚本(1)配置为使用通道navsim/output/color,其中“ color”是通道标签。TcpPublisher(2)将带有相应标签的所有消息发布到同一通道(navsim/output)。

座标

Isaac SDK使用右手坐标系(x:forward,y:left,z:up),而Unity使用左手坐标系(x:forward,y:up,z:left)。因此,在从Unity发布消息之前,旋转和位置都将在Unity脚本中转换为右手坐标。同样,当在Unity中接收消息时,从以撒收到的姿势将转换为左手坐标。坐标系的这种差异也适用于Isaac和Unity相机镜框。

以撒坐标与Unity坐标

:以撒坐标– :统一坐标

艾萨克相机框和Unity相机框

:以撒相机坐标– :Unity相机坐标

相关文章

网友评论

      本文标题:IsaacSim Unity3D - 与Isaac SDK通讯

      本文链接:https://www.haomeiwen.com/subject/sznzehtx.html