模拟器功能
本节概述了重要的IsaacSim Unity3D功能并描述了如何使用它们。
传感器
IsaacSim Unity3D支持相机,激光雷达和IMU传感器数据的仿真:
相机
IsaacSim Unity3D可以生成彩色和深度相机图像,也可以对其进行标记。
核心软件包在“预制件”>“传感器”目录中包含“彩色摄像机”和“分段摄像机”预制件 。
如果启用“ 捕获深度”选项,则预制件还将生成深度图像。
使用Width和Height变量指定输出图像的大小(以像素为单位)。
您可以在“ 相机”组件中指定相机****的视野(垂直)。
-
- 如果您想在游戏视图中查看相机图像而不是发布它
- 到Isaac,请禁用“ 捕获”选项。您可能还需要将“游戏”视图的显示切换为“相机”组件的“目标显示”。
-
- 由于OpenGL框架从下到上排列数据,因此“ 垂直翻转”选项必须为
- 已启用将数据发布到Isaac。如果要在“游戏”视图中查看摄像机图像,请禁用此选项。
RGB(D)相机
该UnityCamera.cs
脚本发布RGB图像(24位)和可选的深度图像(32位浮动)。
分割相机
该SegmentationCamera.cs
脚本发布标签图像(8位)和实例图像(16位)。
要生成以上图像,请将BasicClassLabelManager预制添加到“ medium_warehouse”场景中,并启用Carter> robot> SegmentationCamera。在这种情况下,地板由网格图块组成,因此每个图块具有不同的实例值但具有相同的标签值。
标签管理器和标签设置器
要生成分割图像,请将BasicClassLabelManager预制添加到场景中。
如果将LabelSetter.cs
组件附加到GameObject,则将标签和实例值分配给该GameObject及其子代的所有渲染器。标签值是根据ClassLabelManager脚本的“ 类标签规则”分配的,该规则标签是用于与LabelSetter脚本中的“ 标签名称”相匹配的正则表达式。发布SegmentationCameraProto消息后,ClassLabelManager脚本中的“ 类标签 ”将转换为标签列表。每个渲染器的实例值都会增加。
上图显示了ClassLabelManager脚本和两个带有LabelSetter脚本的游戏对象。该ClassLabelRules脚本分配标记值“1”与LabelSetter脚本 标签名称的“地板”,“0” LabelSetter脚本与标签名称的“墙”,“2”到所有其他LabelSetter用脚本标签名称的一个或多个字符(例如,带有“ shelves_back”对象)。
Flatscan激光雷达
RaycastFlatscanLidar脚本使用Unity Physics.Raycast()_方法实现了模拟的一维激光雷达。此外,使用Isaac中的FlatscanNoiser小代码在管道中添加范围。由于Raycast()方法基于Collider类,因此必须在GameObject上配置一个网格或其他碰撞器,以使它对激光雷达可见。
国际货币联盟
惯性测量单元(IMU)模拟是通过IsaacSDK中的ImuSim 小码执行的。要启用IMU仿真,请添加带有刚体组件的“ imu”游戏对象,并通过固定关节将其附加到机器人刚体上。RigidBodiesSink脚本发布“ imu”游戏对象的刚体状态,Isaac中的ImuSim小代码使用它来模拟IMU数据。
模拟线性加速度和角速度的原始IMU输出
执行器
IsaacSim Unity3D支持使用Unity Wheel Colliders进行差速器基座的仿真。UnityDifferentialBaseSimulation脚本接收DiffBase命令,根据命令计算所需的车轮转速,并使用简单的比例控制器将扭矩施加到车轮上。该脚本还从Rigidbody.velocity 属性检索机器人的当前速度,并根据当前帧和上一帧的速度计算加速度。然后,它发布DiffBase状态。
监控
姿势和碰撞脚本发布从Unity Simulation到Isaac的真实状态。
姿势
IsaacPose和RigidBodiesSink帮助程序脚本从Unity发布地面真实的姿势和运动状态。
IsaacPose脚本发布包含其GameObject姿势的PoseTreeEdge原型消息。可以使用PoseMessageInjector小 码将其添加到接收Isaac应用程序的姿势树中。
RigidBodiesSink脚本在同一参考框架中发布GameObjects列表的刚体状态(姿势,速度和加速度)。如果游戏对象具有刚体分量, 则使用Rigidbody.velocity –否则,根据帧之间的位置变化来估算速度。
碰撞
当刚体进入碰撞时,将CollisionMonitor脚本附加到刚体上以发布CollisionProto消息。