diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiAT128E2X.prefab b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiAT128E2X.prefab index dbf1b4a3f..b7a669ff8 100644 --- a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiAT128E2X.prefab +++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiAT128E2X.prefab @@ -240,7 +240,7 @@ MonoBehaviour: - topic: lidar/pointcloud_ex publish: 1 fieldsPreset: 2 - fields: 01000000030000000c0000000b0000000a00000009000000080000000e000000 + fields: 01000000030000000c0000000b000000090000000a000000080000000e000000 radarScanPublishers: [] --- !u!114 &9115279251508973176 MonoBehaviour: @@ -302,7 +302,7 @@ MonoBehaviour: 00000000: type: {class: HesaiAT128LidarConfiguration, ns: RGLUnityPlugin, asm: AWSIM} data: - _laserArray: + laserArray: centerOfMeasurementLinearOffsetMm: {x: -17.1, y: 24, z: 41.65} focalDistanceMm: 0 lasers: diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar128E4X.prefab b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar128E4X.prefab index 4dedd677f..de28da31b 100644 --- a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar128E4X.prefab +++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar128E4X.prefab @@ -143,7 +143,7 @@ MonoBehaviour: - topic: lidar/pointcloud_ex publish: 1 fieldsPreset: 2 - fields: 01000000030000000c0000000b0000000a00000009000000080000000e000000 + fields: 01000000030000000c0000000b000000090000000a000000080000000e000000 radarScanPublishers: [] --- !u!114 &2398431948632788025 MonoBehaviour: @@ -203,9 +203,9 @@ MonoBehaviour: references: version: 1 00000000: - type: {class: HesaiPandar128E4XLidarConfiguration, ns: RGLUnityPlugin, asm: AWSIM} + type: {class: LaserBasedRangeLidarConfiguration, ns: RGLUnityPlugin, asm: AWSIM} data: - _laserArray: + laserArray: centerOfMeasurementLinearOffsetMm: {x: 0, y: 88.33, z: 0} focalDistanceMm: 0 lasers: @@ -1118,7 +1118,6 @@ MonoBehaviour: distanceNoiseStDevBase: 0.02 distanceNoiseStDevRisePerMeter: 0 distanceNoiseMean: 0 - highResolutionModeEnabled: 0 --- !u!1 &8835314765314878244 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar128E4XHighRes.prefab b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar128E4XHighRes.prefab new file mode 100644 index 000000000..791975f8a --- /dev/null +++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar128E4XHighRes.prefab @@ -0,0 +1,1665 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2290079389202912719 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5431249843974468697} + - component: {fileID: 9064179989084832579} + - component: {fileID: 8288554010698567931} + m_Layer: 0 + m_Name: HesaiPandar128E4X + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5431249843974468697 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2290079389202912719} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6234784434860781162} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &9064179989084832579 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2290079389202912719} + m_Mesh: {fileID: -1745125228592760480, guid: db5ae54dc05ca8a41985ee57de07cf4a, type: 3} +--- !u!23 &8288554010698567931 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2290079389202912719} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 251d3b0818caa824d8b6300aae1b1ac5, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4172142874537177343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6234784434860781162} + - component: {fileID: 8798411946078147196} + - component: {fileID: 2398431948632788025} + - component: {fileID: 3512952426893214564} + m_Layer: 0 + m_Name: HesaiPandar128E4XHighRes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6234784434860781162 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4172142874537177343} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1075361399847604337} + - {fileID: 5431249843974468697} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8798411946078147196 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4172142874537177343} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 87ba9656cbd67467f8119d8666b098aa, type: 3} + m_Name: + m_EditorClassIdentifier: + frameId: world + qos: + reliabilityPolicy: 2 + durabilityPolicy: 2 + historyPolicy: 1 + historyDepth: 5 + pointCloud2Publishers: + - topic: lidar/pointcloud + publish: 1 + fieldsPreset: 0 + fields: 0100000002040000020000000b00000001040000 + - topic: lidar/pointcloud_ex + publish: 1 + fieldsPreset: 2 + fields: 01000000030000000c0000000b000000090000000a000000080000000e000000 + radarScanPublishers: [] +--- !u!114 &2398431948632788025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4172142874537177343} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6b09121ab5f04a5dae5e27fd15e97c53, type: 3} + m_Name: + m_EditorClassIdentifier: + pointShape: 1 + pointSize: 0.05 + colors: + - {r: 1, g: 0, b: 0, a: 1} + - {r: 1, g: 0.5, b: 0, a: 1} + - {r: 1, g: 0.92156863, b: 0.015686275, a: 1} + - {r: 0, g: 1, b: 0, a: 1} + - {r: 0, g: 0, b: 1, a: 1} + - {r: 0.5, g: 0, b: 1, a: 1} + autoComputeColoringHeights: 0 + minColoringHeight: 0 + maxColoringHeight: 20 +--- !u!114 &3512952426893214564 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4172142874537177343} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62277ad5b6d1cfd2984db58dc79535a4, type: 3} + m_Name: + m_EditorClassIdentifier: + AutomaticCaptureHz: 10 + modelPreset: 12 + returnMode: 16777220 + applyDistanceGaussianNoise: 1 + applyAngularGaussianNoise: 1 + applyVelocityDistortion: 0 + simulateBeamDivergence: 0 + doValidateConfigurationOnStartup: 1 + configuration: + id: 0 + outputRestriction: + applyRestriction: 0 + rectangularRestrictionMasks: [] + enablePeriodicRestriction: 0 + restrictionPeriod: 1 + restrictionDutyRate: 0.5 + enableRestrictionRandomizer: 0 + minRandomPerdiod: 0 + maxRandomPerdiod: 1 + references: + version: 1 + 00000000: + type: {class: HesaiPandar128E4XHighResLidarConfiguration, ns: RGLUnityPlugin, asm: AWSIM} + data: + laserArray: + centerOfMeasurementLinearOffsetMm: {x: 0, y: 88.33, z: 0} + focalDistanceMm: 0 + lasers: + - horizontalAngularOffsetDeg: 0.148 + verticalAngularOffsetDeg: -9.836 + verticalLinearOffsetMm: 0 + ringId: 5 + timeOffset: 0.021185 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 0.147 + verticalAngularOffsetDeg: -9.171 + verticalLinearOffsetMm: 0 + ringId: 6 + timeOffset: 0.014896 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 0.146 + verticalAngularOffsetDeg: -8.496 + verticalLinearOffsetMm: 0 + ringId: 7 + timeOffset: 0.008607 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.146 + verticalAngularOffsetDeg: -7.812 + verticalLinearOffsetMm: 0 + ringId: 8 + timeOffset: 0.002318 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.339 + verticalAngularOffsetDeg: -6.064 + verticalLinearOffsetMm: 0 + ringId: 13 + timeOffset: 0.021185 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.34 + verticalAngularOffsetDeg: -5.71 + verticalLinearOffsetMm: 0 + ringId: 14 + timeOffset: 0.014896 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.341 + verticalAngularOffsetDeg: -5.355 + verticalLinearOffsetMm: 0 + ringId: 15 + timeOffset: 0.008607 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.342 + verticalAngularOffsetDeg: -4.998 + verticalLinearOffsetMm: 0 + ringId: 16 + timeOffset: 0.002318 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.107 + verticalAngularOffsetDeg: -3.194 + verticalLinearOffsetMm: 0 + ringId: 21 + timeOffset: 0.021185 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.106 + verticalAngularOffsetDeg: -2.829 + verticalLinearOffsetMm: 0 + ringId: 22 + timeOffset: 0.014896 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.105 + verticalAngularOffsetDeg: -2.463 + verticalLinearOffsetMm: 0 + ringId: 23 + timeOffset: 0.008607 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.105 + verticalAngularOffsetDeg: -2.095 + verticalLinearOffsetMm: 0 + ringId: 24 + timeOffset: 0.002318 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: -3.118 + verticalAngularOffsetDeg: -1.974 + verticalLinearOffsetMm: 0 + ringId: 25 + timeOffset: 0 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.315 + verticalAngularOffsetDeg: -1.854 + verticalLinearOffsetMm: 0 + ringId: 26 + timeOffset: 0.018867 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.529 + verticalAngularOffsetDeg: -1.729 + verticalLinearOffsetMm: 0 + ringId: 27 + timeOffset: 0.012578 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.121 + verticalAngularOffsetDeg: -1.609 + verticalLinearOffsetMm: 0 + ringId: 28 + timeOffset: 0.018867 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.316 + verticalAngularOffsetDeg: -1.487 + verticalLinearOffsetMm: 0 + ringId: 29 + timeOffset: 0 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.532 + verticalAngularOffsetDeg: -1.362 + verticalLinearOffsetMm: 0 + ringId: 30 + timeOffset: 0.006289 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.124 + verticalAngularOffsetDeg: -1.242 + verticalLinearOffsetMm: 0 + ringId: 31 + timeOffset: 0.016549 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.317 + verticalAngularOffsetDeg: -1.12 + verticalLinearOffsetMm: 0 + ringId: 32 + timeOffset: 0.01026 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.536 + verticalAngularOffsetDeg: -0.995 + verticalLinearOffsetMm: 0 + ringId: 33 + timeOffset: 0.016549 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -3.127 + verticalAngularOffsetDeg: -0.875 + verticalLinearOffsetMm: 0 + ringId: 34 + timeOffset: 0.01026 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 1.317 + verticalAngularOffsetDeg: -0.75 + verticalLinearOffsetMm: 0 + ringId: 35 + timeOffset: 0.012578 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 4.539 + verticalAngularOffsetDeg: -0.625 + verticalLinearOffsetMm: 0 + ringId: 36 + timeOffset: 0.003971 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -3.13 + verticalAngularOffsetDeg: -0.5 + verticalLinearOffsetMm: 0 + ringId: 37 + timeOffset: 0.003971 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 1.318 + verticalAngularOffsetDeg: -0.375 + verticalLinearOffsetMm: 0 + ringId: 38 + timeOffset: 0.006289 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 4.542 + verticalAngularOffsetDeg: -0.25 + verticalLinearOffsetMm: 0 + ringId: 39 + timeOffset: 0.022838 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -3.133 + verticalAngularOffsetDeg: -0.125 + verticalLinearOffsetMm: 0 + ringId: 40 + timeOffset: 0.022838 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.103 + verticalAngularOffsetDeg: 0 + verticalLinearOffsetMm: 0 + ringId: 41 + timeOffset: 0.016549 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.935 + verticalAngularOffsetDeg: 0.125 + verticalLinearOffsetMm: 0 + ringId: 42 + timeOffset: 0.018867 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.517 + verticalAngularOffsetDeg: 0.25 + verticalLinearOffsetMm: 0 + ringId: 43 + timeOffset: 0 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.103 + verticalAngularOffsetDeg: 0.375 + verticalLinearOffsetMm: 0 + ringId: 44 + timeOffset: 0.01026 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.937 + verticalAngularOffsetDeg: 0.5 + verticalLinearOffsetMm: 0 + ringId: 45 + timeOffset: 0.012578 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.519 + verticalAngularOffsetDeg: 0.626 + verticalLinearOffsetMm: 0 + ringId: 46 + timeOffset: 0.018867 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.103 + verticalAngularOffsetDeg: 0.751 + verticalLinearOffsetMm: 0 + ringId: 47 + timeOffset: 0.003971 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.939 + verticalAngularOffsetDeg: 0.876 + verticalLinearOffsetMm: 0 + ringId: 48 + timeOffset: 0.006289 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.52 + verticalAngularOffsetDeg: 1.001 + verticalLinearOffsetMm: 0 + ringId: 49 + timeOffset: 0.012578 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.103 + verticalAngularOffsetDeg: 1.126 + verticalLinearOffsetMm: 0 + ringId: 50 + timeOffset: 0.022838 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.941 + verticalAngularOffsetDeg: 1.251 + verticalLinearOffsetMm: 0 + ringId: 51 + timeOffset: 0.016549 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.521 + verticalAngularOffsetDeg: 1.377 + verticalLinearOffsetMm: 0 + ringId: 52 + timeOffset: 0.006289 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.102 + verticalAngularOffsetDeg: 1.502 + verticalLinearOffsetMm: 0 + ringId: 53 + timeOffset: 0 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.943 + verticalAngularOffsetDeg: 1.627 + verticalLinearOffsetMm: 0 + ringId: 54 + timeOffset: 0.01026 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.523 + verticalAngularOffsetDeg: 1.751 + verticalLinearOffsetMm: 0 + ringId: 55 + timeOffset: 0.016549 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.102 + verticalAngularOffsetDeg: 1.876 + verticalLinearOffsetMm: 0 + ringId: 56 + timeOffset: 0.018867 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.945 + verticalAngularOffsetDeg: 2.001 + verticalLinearOffsetMm: 0 + ringId: 57 + timeOffset: 0.003971 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.524 + verticalAngularOffsetDeg: 2.126 + verticalLinearOffsetMm: 0 + ringId: 58 + timeOffset: 0.01026 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.102 + verticalAngularOffsetDeg: 2.251 + verticalLinearOffsetMm: 0 + ringId: 59 + timeOffset: 0.012578 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.946 + verticalAngularOffsetDeg: 2.376 + verticalLinearOffsetMm: 0 + ringId: 60 + timeOffset: 0.022838 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.526 + verticalAngularOffsetDeg: 2.501 + verticalLinearOffsetMm: 0 + ringId: 61 + timeOffset: 0.003971 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.102 + verticalAngularOffsetDeg: 2.626 + verticalLinearOffsetMm: 0 + ringId: 62 + timeOffset: 0.006289 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.948 + verticalAngularOffsetDeg: 2.751 + verticalLinearOffsetMm: 0 + ringId: 63 + timeOffset: 0 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.526 + verticalAngularOffsetDeg: 2.876 + verticalLinearOffsetMm: 0 + ringId: 64 + timeOffset: 0.022838 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 1.324 + verticalAngularOffsetDeg: 3.001 + verticalLinearOffsetMm: 0 + ringId: 65 + timeOffset: 0.016549 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.57 + verticalAngularOffsetDeg: 3.126 + verticalLinearOffsetMm: 0 + ringId: 66 + timeOffset: 0.018867 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.155 + verticalAngularOffsetDeg: 3.251 + verticalLinearOffsetMm: 0 + ringId: 67 + timeOffset: 0 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.325 + verticalAngularOffsetDeg: 3.376 + verticalLinearOffsetMm: 0 + ringId: 68 + timeOffset: 0.01026 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.573 + verticalAngularOffsetDeg: 3.501 + verticalLinearOffsetMm: 0 + ringId: 69 + timeOffset: 0.012578 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.157 + verticalAngularOffsetDeg: 3.626 + verticalLinearOffsetMm: 0 + ringId: 70 + timeOffset: 0.018867 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.326 + verticalAngularOffsetDeg: 3.751 + verticalLinearOffsetMm: 0 + ringId: 71 + timeOffset: 0.003971 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.575 + verticalAngularOffsetDeg: 3.876 + verticalLinearOffsetMm: 0 + ringId: 72 + timeOffset: 0.006289 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.159 + verticalAngularOffsetDeg: 4.001 + verticalLinearOffsetMm: 0 + ringId: 73 + timeOffset: 0.012578 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.326 + verticalAngularOffsetDeg: 4.126 + verticalLinearOffsetMm: 0 + ringId: 74 + timeOffset: 0.022838 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.578 + verticalAngularOffsetDeg: 4.25 + verticalLinearOffsetMm: 0 + ringId: 75 + timeOffset: 0.016549 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.161 + verticalAngularOffsetDeg: 4.375 + verticalLinearOffsetMm: 0 + ringId: 76 + timeOffset: 0.006289 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.327 + verticalAngularOffsetDeg: 4.501 + verticalLinearOffsetMm: 0 + ringId: 77 + timeOffset: 0 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.581 + verticalAngularOffsetDeg: 4.626 + verticalLinearOffsetMm: 0 + ringId: 78 + timeOffset: 0.01026 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.163 + verticalAngularOffsetDeg: 4.751 + verticalLinearOffsetMm: 0 + ringId: 79 + timeOffset: 0.016549 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.328 + verticalAngularOffsetDeg: 4.876 + verticalLinearOffsetMm: 0 + ringId: 80 + timeOffset: 0.018867 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.583 + verticalAngularOffsetDeg: 5.001 + verticalLinearOffsetMm: 0 + ringId: 81 + timeOffset: 0.003971 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.165 + verticalAngularOffsetDeg: 5.126 + verticalLinearOffsetMm: 0 + ringId: 82 + timeOffset: 0.01026 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.329 + verticalAngularOffsetDeg: 5.252 + verticalLinearOffsetMm: 0 + ringId: 83 + timeOffset: 0.012578 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.586 + verticalAngularOffsetDeg: 5.377 + verticalLinearOffsetMm: 0 + ringId: 84 + timeOffset: 0.022838 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.167 + verticalAngularOffsetDeg: 5.502 + verticalLinearOffsetMm: 0 + ringId: 85 + timeOffset: 0.003971 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.329 + verticalAngularOffsetDeg: 5.626 + verticalLinearOffsetMm: 0 + ringId: 86 + timeOffset: 0.006289 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.588 + verticalAngularOffsetDeg: 5.752 + verticalLinearOffsetMm: 0 + ringId: 87 + timeOffset: 0 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.168 + verticalAngularOffsetDeg: 5.877 + verticalLinearOffsetMm: 0 + ringId: 88 + timeOffset: 0.022838 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 0.104 + verticalAngularOffsetDeg: 7.507 + verticalLinearOffsetMm: 0 + ringId: 93 + timeOffset: 0.021185 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.104 + verticalAngularOffsetDeg: 7.882 + verticalLinearOffsetMm: 0 + ringId: 94 + timeOffset: 0.014896 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.104 + verticalAngularOffsetDeg: 8.257 + verticalLinearOffsetMm: 0 + ringId: 95 + timeOffset: 0.008607 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.104 + verticalAngularOffsetDeg: 8.632 + verticalLinearOffsetMm: 0 + ringId: 96 + timeOffset: 0.002318 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.34 + verticalAngularOffsetDeg: 10.493 + verticalLinearOffsetMm: 0 + ringId: 101 + timeOffset: 0.021185 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.341 + verticalAngularOffsetDeg: 10.864 + verticalLinearOffsetMm: 0 + ringId: 102 + timeOffset: 0.014896 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.341 + verticalAngularOffsetDeg: 11.234 + verticalLinearOffsetMm: 0 + ringId: 103 + timeOffset: 0.008607 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.342 + verticalAngularOffsetDeg: 11.603 + verticalLinearOffsetMm: 0 + ringId: 104 + timeOffset: 0.002318 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.13 + verticalAngularOffsetDeg: 13.439 + verticalLinearOffsetMm: 0 + ringId: 109 + timeOffset: 0.021185 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.131 + verticalAngularOffsetDeg: 13.803 + verticalLinearOffsetMm: 0 + ringId: 110 + timeOffset: 0.014896 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.131 + verticalAngularOffsetDeg: 14.164 + verticalLinearOffsetMm: 0 + ringId: 111 + timeOffset: 0.008607 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.132 + verticalAngularOffsetDeg: 14.525 + verticalLinearOffsetMm: 0 + ringId: 112 + timeOffset: 0.002318 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.386 + verticalAngularOffsetDeg: 16.299 + verticalLinearOffsetMm: 0 + ringId: 117 + timeOffset: 0.021185 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 1.386 + verticalAngularOffsetDeg: 16.651 + verticalLinearOffsetMm: 0 + ringId: 118 + timeOffset: 0.014896 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 1.387 + verticalAngularOffsetDeg: 17 + verticalLinearOffsetMm: 0 + ringId: 119 + timeOffset: 0.008607 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 1.387 + verticalAngularOffsetDeg: 17.347 + verticalLinearOffsetMm: 0 + ringId: 120 + timeOffset: 0.002318 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 1.388 + verticalAngularOffsetDeg: 20.376 + verticalLinearOffsetMm: 0 + ringId: 125 + timeOffset: 0.021185 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 1.408 + verticalAngularOffsetDeg: 21.653 + verticalLinearOffsetMm: 0 + ringId: 126 + timeOffset: 0.014896 + minRange: 0.3 + maxRange: 50 + - horizontalAngularOffsetDeg: 0.196 + verticalAngularOffsetDeg: 23.044 + verticalLinearOffsetMm: 0 + ringId: 127 + timeOffset: 0.008607 + minRange: 0.3 + maxRange: 40 + - horizontalAngularOffsetDeg: 0.286 + verticalAngularOffsetDeg: 24.765 + verticalLinearOffsetMm: 0 + ringId: 128 + timeOffset: 0.002318 + minRange: 0.3 + maxRange: 30 + - horizontalAngularOffsetDeg: 0.186 + verticalAngularOffsetDeg: -14.985 + verticalLinearOffsetMm: 0 + ringId: 1 + timeOffset: 0.048963 + minRange: 0.3 + maxRange: 60 + - horizontalAngularOffsetDeg: 0.185 + verticalAngularOffsetDeg: -13.283 + verticalLinearOffsetMm: 0 + ringId: 2 + timeOffset: 0.042674 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 1.335 + verticalAngularOffsetDeg: -11.758 + verticalLinearOffsetMm: 0 + ringId: 3 + timeOffset: 0.036385 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 1.343 + verticalAngularOffsetDeg: -10.483 + verticalLinearOffsetMm: 0 + ringId: 4 + timeOffset: 0.030096 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 1.335 + verticalAngularOffsetDeg: -7.462 + verticalLinearOffsetMm: 0 + ringId: 9 + timeOffset: 0.048963 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.336 + verticalAngularOffsetDeg: -7.115 + verticalLinearOffsetMm: 0 + ringId: 10 + timeOffset: 0.042674 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.337 + verticalAngularOffsetDeg: -6.767 + verticalLinearOffsetMm: 0 + ringId: 11 + timeOffset: 0.036385 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.338 + verticalAngularOffsetDeg: -6.416 + verticalLinearOffsetMm: 0 + ringId: 12 + timeOffset: 0.030096 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.128 + verticalAngularOffsetDeg: -4.643 + verticalLinearOffsetMm: 0 + ringId: 17 + timeOffset: 0.048963 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.128 + verticalAngularOffsetDeg: -4.282 + verticalLinearOffsetMm: 0 + ringId: 18 + timeOffset: 0.042674 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.127 + verticalAngularOffsetDeg: -3.921 + verticalLinearOffsetMm: 0 + ringId: 19 + timeOffset: 0.036385 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.127 + verticalAngularOffsetDeg: -3.558 + verticalLinearOffsetMm: 0 + ringId: 20 + timeOffset: 0.030096 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: -3.118 + verticalAngularOffsetDeg: -1.974 + verticalLinearOffsetMm: 0 + ringId: 25 + timeOffset: 0.027778 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.315 + verticalAngularOffsetDeg: -1.854 + verticalLinearOffsetMm: 0 + ringId: 26 + timeOffset: 0.046645 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.529 + verticalAngularOffsetDeg: -1.729 + verticalLinearOffsetMm: 0 + ringId: 27 + timeOffset: 0.040356 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.121 + verticalAngularOffsetDeg: -1.609 + verticalLinearOffsetMm: 0 + ringId: 28 + timeOffset: 0.046645 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.316 + verticalAngularOffsetDeg: -1.487 + verticalLinearOffsetMm: 0 + ringId: 29 + timeOffset: 0.027778 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.532 + verticalAngularOffsetDeg: -1.362 + verticalLinearOffsetMm: 0 + ringId: 30 + timeOffset: 0.034067 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.124 + verticalAngularOffsetDeg: -1.242 + verticalLinearOffsetMm: 0 + ringId: 31 + timeOffset: 0.044327 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.317 + verticalAngularOffsetDeg: -1.12 + verticalLinearOffsetMm: 0 + ringId: 32 + timeOffset: 0.038038 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.536 + verticalAngularOffsetDeg: -0.995 + verticalLinearOffsetMm: 0 + ringId: 33 + timeOffset: 0.044327 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -3.127 + verticalAngularOffsetDeg: -0.875 + verticalLinearOffsetMm: 0 + ringId: 34 + timeOffset: 0.038038 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 1.317 + verticalAngularOffsetDeg: -0.75 + verticalLinearOffsetMm: 0 + ringId: 35 + timeOffset: 0.040356 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 4.539 + verticalAngularOffsetDeg: -0.625 + verticalLinearOffsetMm: 0 + ringId: 36 + timeOffset: 0.031749 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -3.13 + verticalAngularOffsetDeg: -0.5 + verticalLinearOffsetMm: 0 + ringId: 37 + timeOffset: 0.031749 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 1.318 + verticalAngularOffsetDeg: -0.375 + verticalLinearOffsetMm: 0 + ringId: 38 + timeOffset: 0.034067 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 4.542 + verticalAngularOffsetDeg: -0.25 + verticalLinearOffsetMm: 0 + ringId: 39 + timeOffset: 0.050616 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -3.133 + verticalAngularOffsetDeg: -0.125 + verticalLinearOffsetMm: 0 + ringId: 40 + timeOffset: 0.050616 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.103 + verticalAngularOffsetDeg: 0 + verticalLinearOffsetMm: 0 + ringId: 41 + timeOffset: 0.044327 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.935 + verticalAngularOffsetDeg: 0.125 + verticalLinearOffsetMm: 0 + ringId: 42 + timeOffset: 0.046645 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.517 + verticalAngularOffsetDeg: 0.25 + verticalLinearOffsetMm: 0 + ringId: 43 + timeOffset: 0.027778 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.103 + verticalAngularOffsetDeg: 0.375 + verticalLinearOffsetMm: 0 + ringId: 44 + timeOffset: 0.038038 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.937 + verticalAngularOffsetDeg: 0.5 + verticalLinearOffsetMm: 0 + ringId: 45 + timeOffset: 0.040356 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.519 + verticalAngularOffsetDeg: 0.626 + verticalLinearOffsetMm: 0 + ringId: 46 + timeOffset: 0.046645 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.103 + verticalAngularOffsetDeg: 0.751 + verticalLinearOffsetMm: 0 + ringId: 47 + timeOffset: 0.031749 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.939 + verticalAngularOffsetDeg: 0.876 + verticalLinearOffsetMm: 0 + ringId: 48 + timeOffset: 0.034067 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.52 + verticalAngularOffsetDeg: 1.001 + verticalLinearOffsetMm: 0 + ringId: 49 + timeOffset: 0.040356 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.103 + verticalAngularOffsetDeg: 1.126 + verticalLinearOffsetMm: 0 + ringId: 50 + timeOffset: 0.050616 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.941 + verticalAngularOffsetDeg: 1.251 + verticalLinearOffsetMm: 0 + ringId: 51 + timeOffset: 0.044327 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.521 + verticalAngularOffsetDeg: 1.377 + verticalLinearOffsetMm: 0 + ringId: 52 + timeOffset: 0.034067 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.102 + verticalAngularOffsetDeg: 1.502 + verticalLinearOffsetMm: 0 + ringId: 53 + timeOffset: 0.027778 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.943 + verticalAngularOffsetDeg: 1.627 + verticalLinearOffsetMm: 0 + ringId: 54 + timeOffset: 0.038038 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.523 + verticalAngularOffsetDeg: 1.751 + verticalLinearOffsetMm: 0 + ringId: 55 + timeOffset: 0.044327 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.102 + verticalAngularOffsetDeg: 1.876 + verticalLinearOffsetMm: 0 + ringId: 56 + timeOffset: 0.046645 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.945 + verticalAngularOffsetDeg: 2.001 + verticalLinearOffsetMm: 0 + ringId: 57 + timeOffset: 0.031749 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.524 + verticalAngularOffsetDeg: 2.126 + verticalLinearOffsetMm: 0 + ringId: 58 + timeOffset: 0.038038 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.102 + verticalAngularOffsetDeg: 2.251 + verticalLinearOffsetMm: 0 + ringId: 59 + timeOffset: 0.040356 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.946 + verticalAngularOffsetDeg: 2.376 + verticalLinearOffsetMm: 0 + ringId: 60 + timeOffset: 0.050616 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.526 + verticalAngularOffsetDeg: 2.501 + verticalLinearOffsetMm: 0 + ringId: 61 + timeOffset: 0.031749 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 0.102 + verticalAngularOffsetDeg: 2.626 + verticalLinearOffsetMm: 0 + ringId: 62 + timeOffset: 0.034067 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 2.948 + verticalAngularOffsetDeg: 2.751 + verticalLinearOffsetMm: 0 + ringId: 63 + timeOffset: 0.027778 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: -1.526 + verticalAngularOffsetDeg: 2.876 + verticalLinearOffsetMm: 0 + ringId: 64 + timeOffset: 0.050616 + minRange: 0.3 + maxRange: 200 + - horizontalAngularOffsetDeg: 1.324 + verticalAngularOffsetDeg: 3.001 + verticalLinearOffsetMm: 0 + ringId: 65 + timeOffset: 0.044327 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.57 + verticalAngularOffsetDeg: 3.126 + verticalLinearOffsetMm: 0 + ringId: 66 + timeOffset: 0.046645 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.155 + verticalAngularOffsetDeg: 3.251 + verticalLinearOffsetMm: 0 + ringId: 67 + timeOffset: 0.027778 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.325 + verticalAngularOffsetDeg: 3.376 + verticalLinearOffsetMm: 0 + ringId: 68 + timeOffset: 0.038038 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.573 + verticalAngularOffsetDeg: 3.501 + verticalLinearOffsetMm: 0 + ringId: 69 + timeOffset: 0.040356 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.157 + verticalAngularOffsetDeg: 3.626 + verticalLinearOffsetMm: 0 + ringId: 70 + timeOffset: 0.046645 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.326 + verticalAngularOffsetDeg: 3.751 + verticalLinearOffsetMm: 0 + ringId: 71 + timeOffset: 0.031749 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.575 + verticalAngularOffsetDeg: 3.876 + verticalLinearOffsetMm: 0 + ringId: 72 + timeOffset: 0.034067 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.159 + verticalAngularOffsetDeg: 4.001 + verticalLinearOffsetMm: 0 + ringId: 73 + timeOffset: 0.040356 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.326 + verticalAngularOffsetDeg: 4.126 + verticalLinearOffsetMm: 0 + ringId: 74 + timeOffset: 0.050616 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.578 + verticalAngularOffsetDeg: 4.25 + verticalLinearOffsetMm: 0 + ringId: 75 + timeOffset: 0.044327 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.161 + verticalAngularOffsetDeg: 4.375 + verticalLinearOffsetMm: 0 + ringId: 76 + timeOffset: 0.034067 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.327 + verticalAngularOffsetDeg: 4.501 + verticalLinearOffsetMm: 0 + ringId: 77 + timeOffset: 0.027778 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.581 + verticalAngularOffsetDeg: 4.626 + verticalLinearOffsetMm: 0 + ringId: 78 + timeOffset: 0.038038 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.163 + verticalAngularOffsetDeg: 4.751 + verticalLinearOffsetMm: 0 + ringId: 79 + timeOffset: 0.044327 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.328 + verticalAngularOffsetDeg: 4.876 + verticalLinearOffsetMm: 0 + ringId: 80 + timeOffset: 0.046645 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.583 + verticalAngularOffsetDeg: 5.001 + verticalLinearOffsetMm: 0 + ringId: 81 + timeOffset: 0.031749 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.165 + verticalAngularOffsetDeg: 5.126 + verticalLinearOffsetMm: 0 + ringId: 82 + timeOffset: 0.038038 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.329 + verticalAngularOffsetDeg: 5.252 + verticalLinearOffsetMm: 0 + ringId: 83 + timeOffset: 0.040356 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.586 + verticalAngularOffsetDeg: 5.377 + verticalLinearOffsetMm: 0 + ringId: 84 + timeOffset: 0.050616 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.167 + verticalAngularOffsetDeg: 5.502 + verticalLinearOffsetMm: 0 + ringId: 85 + timeOffset: 0.031749 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 1.329 + verticalAngularOffsetDeg: 5.626 + verticalLinearOffsetMm: 0 + ringId: 86 + timeOffset: 0.034067 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 4.588 + verticalAngularOffsetDeg: 5.752 + verticalLinearOffsetMm: 0 + ringId: 87 + timeOffset: 0.027778 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: -3.168 + verticalAngularOffsetDeg: 5.877 + verticalLinearOffsetMm: 0 + ringId: 88 + timeOffset: 0.050616 + minRange: 0.3 + maxRange: 140 + - horizontalAngularOffsetDeg: 0.102 + verticalAngularOffsetDeg: 6.002 + verticalLinearOffsetMm: 0 + ringId: 89 + timeOffset: 0.048963 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.103 + verticalAngularOffsetDeg: 6.378 + verticalLinearOffsetMm: 0 + ringId: 90 + timeOffset: 0.042674 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.103 + verticalAngularOffsetDeg: 6.754 + verticalLinearOffsetMm: 0 + ringId: 91 + timeOffset: 0.036385 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.103 + verticalAngularOffsetDeg: 7.13 + verticalLinearOffsetMm: 0 + ringId: 92 + timeOffset: 0.030096 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.337 + verticalAngularOffsetDeg: 9.003 + verticalLinearOffsetMm: 0 + ringId: 97 + timeOffset: 0.048963 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.337 + verticalAngularOffsetDeg: 9.376 + verticalLinearOffsetMm: 0 + ringId: 98 + timeOffset: 0.042674 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.338 + verticalAngularOffsetDeg: 9.749 + verticalLinearOffsetMm: 0 + ringId: 99 + timeOffset: 0.036385 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.339 + verticalAngularOffsetDeg: 10.121 + verticalLinearOffsetMm: 0 + ringId: 100 + timeOffset: 0.030096 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.108 + verticalAngularOffsetDeg: 11.975 + verticalLinearOffsetMm: 0 + ringId: 105 + timeOffset: 0.048963 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.108 + verticalAngularOffsetDeg: 12.343 + verticalLinearOffsetMm: 0 + ringId: 106 + timeOffset: 0.042674 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.109 + verticalAngularOffsetDeg: 12.709 + verticalLinearOffsetMm: 0 + ringId: 107 + timeOffset: 0.036385 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 0.109 + verticalAngularOffsetDeg: 13.075 + verticalLinearOffsetMm: 0 + ringId: 108 + timeOffset: 0.030096 + minRange: 0.3 + maxRange: 100 + - horizontalAngularOffsetDeg: 1.384 + verticalAngularOffsetDeg: 14.879 + verticalLinearOffsetMm: 0 + ringId: 113 + timeOffset: 0.048963 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 1.384 + verticalAngularOffsetDeg: 15.237 + verticalLinearOffsetMm: 0 + ringId: 114 + timeOffset: 0.042674 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 1.385 + verticalAngularOffsetDeg: 15.593 + verticalLinearOffsetMm: 0 + ringId: 115 + timeOffset: 0.036385 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 1.385 + verticalAngularOffsetDeg: 15.948 + verticalLinearOffsetMm: 0 + ringId: 116 + timeOffset: 0.030096 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 0.151 + verticalAngularOffsetDeg: 17.701 + verticalLinearOffsetMm: 0 + ringId: 121 + timeOffset: 0.048963 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 0.153 + verticalAngularOffsetDeg: 18.386 + verticalLinearOffsetMm: 0 + ringId: 122 + timeOffset: 0.042674 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 0.154 + verticalAngularOffsetDeg: 19.063 + verticalLinearOffsetMm: 0 + ringId: 123 + timeOffset: 0.036385 + minRange: 0.3 + maxRange: 80 + - horizontalAngularOffsetDeg: 0.156 + verticalAngularOffsetDeg: 19.73 + verticalLinearOffsetMm: 0 + ringId: 124 + timeOffset: 0.030096 + minRange: 0.3 + maxRange: 80 + horizontalResolution: 0.2 + minHAngle: 0 + maxHAngle: 360 + laserArrayCycleTime: 0.055556 + horizontalBeamDivergence: 0.13 + verticalBeamDivergence: 0.13 + noiseParams: + angularNoiseType: 0 + angularNoiseStDev: 0.057295784 + angularNoiseMean: 0 + distanceNoiseStDevBase: 0.02 + distanceNoiseStDevRisePerMeter: 0 + distanceNoiseMean: 0 +--- !u!1 &8835314765314878244 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1075361399847604337} + - component: {fileID: 2311453099999102518} + - component: {fileID: 3733632579269044041} + - component: {fileID: 3260224111352831260} + m_Layer: 0 + m_Name: Collider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1075361399847604337 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8835314765314878244} + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6234784434860781162} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!64 &2311453099999102518 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8835314765314878244} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 616744135489241343, guid: d36e82edd5dd8a9468da5377737481c1, type: 3} +--- !u!33 &3733632579269044041 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8835314765314878244} + m_Mesh: {fileID: 616744135489241343, guid: d36e82edd5dd8a9468da5377737481c1, type: 3} +--- !u!23 &3260224111352831260 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8835314765314878244} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar128E4XHighRes.prefab.meta b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar128E4XHighRes.prefab.meta new file mode 100644 index 000000000..fa7660939 --- /dev/null +++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar128E4XHighRes.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d7db1357a724e60fcaf927dd10adafd2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar40P.prefab b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar40P.prefab index d1a4da892..1b9d3fc78 100644 --- a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar40P.prefab +++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandar40P.prefab @@ -469,7 +469,7 @@ MonoBehaviour: - topic: lidar/pointcloud_ex publish: 1 fieldsPreset: 2 - fields: 01000000030000000c0000000b0000000a00000009000000080000000e000000 + fields: 01000000030000000c0000000b000000090000000a000000080000000e000000 radarScanPublishers: [] --- !u!114 &7675420128049466981 MonoBehaviour: @@ -531,7 +531,7 @@ MonoBehaviour: 00000000: type: {class: UniformRangeLidarConfiguration, ns: RGLUnityPlugin, asm: AWSIM} data: - _laserArray: + laserArray: centerOfMeasurementLinearOffsetMm: {x: 0, y: 47.7, z: 0} focalDistanceMm: 0 lasers: diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarQT64.prefab b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarQT64.prefab index ebe2715ef..0e88f9bf0 100644 --- a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarQT64.prefab +++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarQT64.prefab @@ -372,7 +372,7 @@ MonoBehaviour: - topic: lidar/pointcloud_ex publish: 1 fieldsPreset: 2 - fields: 01000000030000000c0000000b0000000a00000009000000080000000e000000 + fields: 01000000030000000c0000000b000000090000000a000000080000000e000000 radarScanPublishers: [] --- !u!114 &1430391258634731476 MonoBehaviour: @@ -434,7 +434,7 @@ MonoBehaviour: 00000000: type: {class: UniformRangeLidarConfiguration, ns: RGLUnityPlugin, asm: AWSIM} data: - _laserArray: + laserArray: centerOfMeasurementLinearOffsetMm: {x: 0, y: 50.4, z: 0} focalDistanceMm: 29.8 lasers: diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarXT32.prefab b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarXT32.prefab index 05c896517..e7734f400 100644 --- a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarXT32.prefab +++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarXT32.prefab @@ -302,7 +302,7 @@ MonoBehaviour: 00000000: type: {class: UniformRangeLidarConfiguration, ns: RGLUnityPlugin, asm: AWSIM} data: - _laserArray: + laserArray: centerOfMeasurementLinearOffsetMm: {x: 0, y: 46.4, z: 0} focalDistanceMm: 31.5 lasers: diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiQT128C2X.prefab b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiQT128C2X.prefab index 389423f5d..14d63474e 100644 --- a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiQT128C2X.prefab +++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiQT128C2X.prefab @@ -61,7 +61,7 @@ MonoBehaviour: - topic: lidar/pointcloud_ex publish: 1 fieldsPreset: 2 - fields: 01000000030000000c0000000b0000000a00000009000000080000000e000000 + fields: 01000000030000000c0000000b000000090000000a000000080000000e000000 radarScanPublishers: [] --- !u!114 &1429064023790827067 MonoBehaviour: @@ -123,7 +123,7 @@ MonoBehaviour: 00000000: type: {class: HesaiQT128C2XLidarConfiguration, ns: RGLUnityPlugin, asm: AWSIM} data: - _laserArray: + laserArray: centerOfMeasurementLinearOffsetMm: {x: 0, y: 58.2, z: 0} focalDistanceMm: 35.4 lasers: diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/OusterOS1-64.prefab b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/OusterOS1-64.prefab index af1d59687..81896e72d 100644 --- a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/OusterOS1-64.prefab +++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/OusterOS1-64.prefab @@ -122,7 +122,7 @@ MonoBehaviour: 00000000: type: {class: UniformRangeLidarConfiguration, ns: RGLUnityPlugin, asm: AWSIM} data: - _laserArray: + laserArray: centerOfMeasurementLinearOffsetMm: {x: 0, y: 36.18, z: 0} focalDistanceMm: 12.163 lasers: diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/VelodyneVLP16.prefab b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/VelodyneVLP16.prefab index 40ca77d5b..0b8e1328a 100644 --- a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/VelodyneVLP16.prefab +++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/VelodyneVLP16.prefab @@ -61,7 +61,7 @@ MonoBehaviour: - topic: lidar/pointcloud_ex publish: 1 fieldsPreset: 2 - fields: 01000000030000000c0000000b0000000a00000009000000080000000e000000 + fields: 01000000030000000c0000000b000000090000000a000000080000000e000000 radarScanPublishers: [] --- !u!114 &4572956135196922574 MonoBehaviour: @@ -123,7 +123,7 @@ MonoBehaviour: 00000000: type: {class: UniformRangeLidarConfiguration, ns: RGLUnityPlugin, asm: AWSIM} data: - _laserArray: + laserArray: centerOfMeasurementLinearOffsetMm: {x: 0, y: 37.7, z: 0} focalDistanceMm: 0 lasers: diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/VelodyneVLP32C.prefab b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/VelodyneVLP32C.prefab index f1441aa36..70dc76974 100644 --- a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/VelodyneVLP32C.prefab +++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/VelodyneVLP32C.prefab @@ -61,7 +61,7 @@ MonoBehaviour: - topic: lidar/pointcloud_ex publish: 1 fieldsPreset: 2 - fields: 01000000030000000c0000000b0000000a00000009000000080000000e000000 + fields: 01000000030000000c0000000b000000090000000a000000080000000e000000 radarScanPublishers: [] --- !u!114 &6422033487030486066 MonoBehaviour: @@ -123,7 +123,7 @@ MonoBehaviour: 00000000: type: {class: UniformRangeLidarConfiguration, ns: RGLUnityPlugin, asm: AWSIM} data: - _laserArray: + laserArray: centerOfMeasurementLinearOffsetMm: {x: 0, y: 37.34, z: 0} focalDistanceMm: 42.4 lasers: diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/VelodyneVLS128.prefab b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/VelodyneVLS128.prefab index dd5c69241..0f82d8ea6 100644 --- a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/VelodyneVLS128.prefab +++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/VelodyneVLS128.prefab @@ -531,7 +531,7 @@ MonoBehaviour: 00000000: type: {class: UniformRangeLidarConfiguration, ns: RGLUnityPlugin, asm: AWSIM} data: - _laserArray: + laserArray: centerOfMeasurementLinearOffsetMm: {x: 0, y: 66.11, z: 0} focalDistanceMm: 58.63 lasers: diff --git a/Assets/RGLUnityPlugin/Scripts/LidarModels/LaserArray.cs b/Assets/RGLUnityPlugin/Scripts/LidarModels/LaserArray.cs index e988bab0c..eb9fc18c7 100644 --- a/Assets/RGLUnityPlugin/Scripts/LidarModels/LaserArray.cs +++ b/Assets/RGLUnityPlugin/Scripts/LidarModels/LaserArray.cs @@ -35,6 +35,7 @@ public struct LaserArray : IEquatable // | // Note: It is not always lay on the axis of symmetry of the device (e.g., hybrid solid-state LIDARs) // This offset is not considered when generating laser poses. To be applied manually when setting the pose of the lidar (in RGL). + [Tooltip("Offset from the game object origin to the sensor origin.")] public Vector3 centerOfMeasurementLinearOffsetMm; // | / @@ -49,7 +50,7 @@ public struct LaserArray : IEquatable // . . // .<----->. // this distance - // Distance from the sensor center to the focal point where all laser beams intersect. + [Tooltip("Distance from the sensor center to the focal point where all laser beams intersect.")] public float focalDistanceMm; /// diff --git a/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarConfiguration.cs b/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarConfiguration.cs index e70ccf1bf..0fb32ed13 100644 --- a/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarConfiguration.cs +++ b/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarConfiguration.cs @@ -26,15 +26,10 @@ namespace RGLUnityPlugin [Serializable] public abstract class BaseLidarConfiguration { - // This is a workaround against serializing properties with custom getter/setter. - // Laser array property may be overridden to handle custom cases (change by flag). - [SerializeField, Tooltip("Geometry description of lidar array")] - protected LaserArray _laserArray; - public virtual LaserArray laserArray - { - get => _laserArray; - set => _laserArray = value; - } + [Tooltip("List of lasers constituting this LiDAR.\n" + + "Note: For some (advanced) LiDARs, it may contain duplicates of lasers if one scan consist of multiple firing sequences.\n" + + "Note2: Laser's range is considered for non-uniform range LiDARs only (if configuration has no global range setting).")] + public LaserArray laserArray; [Tooltip("The horizontal resolution of laser array firings (in degrees)")] [Min(0)] public float horizontalResolution; @@ -160,7 +155,11 @@ protected bool ValidateWithModel(BaseLidarConfiguration gold) /// It allows the definition of the lidar with different ranges for each laser (channel). /// [Serializable] - public class LaserBasedRangeLidarConfiguration : BaseLidarConfiguration { } + public class LaserBasedRangeLidarConfiguration : BaseLidarConfiguration + { + [Tooltip("To modify LiDAR range, use LaserArray/Lasers")] + public EmptyStruct rangeModificationTooltip; + } /// /// Lidar configuration for uniformly distributed rays along the horizontal axis with a uniform range for all the rays. @@ -195,7 +194,7 @@ gold is UniformRangeLidarConfiguration goldTyped && /// It contains properties and ray-generating methods specific to this lidar. /// [Serializable] - public class HesaiAT128LidarConfiguration : BaseLidarConfiguration + public class HesaiAT128LidarConfiguration : LaserBasedRangeLidarConfiguration { public override Vector2[] GetRayRanges() { @@ -234,7 +233,7 @@ public override bool ValidateWithModel(LidarModel model) /// It contains properties and ray-generating methods specific to this lidar. /// [Serializable] - public class HesaiQT128C2XLidarConfiguration : BaseLidarConfiguration + public class HesaiQT128C2XLidarConfiguration : LaserBasedRangeLidarConfiguration { private static int hesaiQT128LasersBankLength = 32; @@ -276,43 +275,17 @@ public override bool ValidateWithModel(LidarModel model) } /// - /// Lidar configuration for HesaiPandar128E4X lidar. + /// Lidar configuration for HesaiPandar128E4X lidar working in high resolution mode. /// It contains properties and ray-generating methods specific to this lidar. /// [Serializable] - public class HesaiPandar128E4XLidarConfiguration : BaseLidarConfiguration + public class HesaiPandar128E4XHighResLidarConfiguration : LaserBasedRangeLidarConfiguration { - // High resolution mode changes laser array - public override LaserArray laserArray - { - get - { - if (highResolutionModeEnabledPrev == null || highResolutionModeEnabledPrev != highResolutionModeEnabled) - { - _laserArray = highResolutionModeEnabled - ? LaserArrayLibrary.HesaiPandar128E4XHighRes - : LaserArrayLibrary.HesaiPandar128E4X; - highResolutionModeEnabledPrev = highResolutionModeEnabled; - } - return _laserArray; - } - set => _laserArray = value; - } - - public bool highResolutionModeEnabled; - private bool? highResolutionModeEnabledPrev = null; - - // In standard mode, rays are generated uniformly. - // In high resolution mode, first half of the rays are generated on standard horizontal angle + // In high resolution mode, first half of the rays are generated on standard horizontal resolution // Second half of the rays are shifted by half of the horizontal resolution // Some lasers fire on both horizontal states. This is taken into account in the order of the lasers in `laserArray.lasers`. public override Matrix4x4[] GetRayPoses() { - if (!highResolutionModeEnabled) - { - return base.GetRayPoses(); - } - Matrix4x4[] rayPoses = new Matrix4x4[PointCloudSize]; Matrix4x4[] laserPoses = laserArray.GetLaserPoses(); for (int hStep = 0; hStep < HorizontalSteps; hStep++) @@ -335,16 +308,11 @@ public override Matrix4x4[] GetRayPoses() public override bool ValidateWithModel(LidarModel model) { - var gold = LidarConfigurationLibrary.ByModel[model]() as HesaiPandar128E4XLidarConfiguration; + var gold = LidarConfigurationLibrary.ByModel[model]() as HesaiPandar128E4XHighResLidarConfiguration; if (gold == null) { return false; } - - // Set the same high resolution mode flag to the gold config - // Laser array changes for standard and high resolution mode - gold.highResolutionModeEnabled = highResolutionModeEnabled; - return base.ValidateWithModel(gold); } } diff --git a/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarConfigurationLibrary.cs b/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarConfigurationLibrary.cs index 5ed120595..8f6248758 100644 --- a/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarConfigurationLibrary.cs +++ b/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarConfigurationLibrary.cs @@ -176,18 +176,29 @@ public static class LidarConfigurationLibrary verticalBeamDivergence = 0.13f, // Not specified in manual }}, - {LidarModel.HesaiPandar128E4X, () => new HesaiPandar128E4XLidarConfiguration() + {LidarModel.HesaiPandar128E4X, () => new LaserBasedRangeLidarConfiguration() { laserArray = LaserArrayLibrary.HesaiPandar128E4X, - horizontalResolution = 0.2f, // resolution for standard mode - // if high resolution enabled, high-res channels will have half of this resolution - laserArrayCycleTime = 0.055556f, // time for standard mode + horizontalResolution = 0.2f, + laserArrayCycleTime = 0.055556f, + minHAngle = 0.0f, + maxHAngle = 360.0f, + noiseParams = LidarNoiseParams.TypicalNoiseParams, + horizontalBeamDivergence = 0.13f, // Not specified in manual + verticalBeamDivergence = 0.13f, // Not specified in manual + }}, + + {LidarModel.HesaiPandar128E4XHighRes, () => new HesaiPandar128E4XHighResLidarConfiguration() + { + laserArray = LaserArrayLibrary.HesaiPandar128E4XHighRes, + horizontalResolution = 0.2f, // same as for standard mode but + // high-res channels will have half of this resolution + laserArrayCycleTime = 0.055556f, minHAngle = 0.0f, maxHAngle = 360.0f, noiseParams = LidarNoiseParams.TypicalNoiseParams, horizontalBeamDivergence = 0.13f, // Not specified in manual verticalBeamDivergence = 0.13f, // Not specified in manual - highResolutionModeEnabled = false, }}, }; } diff --git a/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarModels.cs b/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarModels.cs index 9ee70b1a3..9b6437532 100644 --- a/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarModels.cs +++ b/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarModels.cs @@ -27,6 +27,7 @@ public enum LidarModel HesaiAT128E2X, HesaiPandarXT32, HesaiQT128C2X, - HesaiPandar128E4X + HesaiPandar128E4X, + HesaiPandar128E4XHighRes } } \ No newline at end of file diff --git a/Assets/RGLUnityPlugin/Scripts/LidarUdpPublisher.cs b/Assets/RGLUnityPlugin/Scripts/LidarUdpPublisher.cs index d07abab2b..cfcfa4f4a 100644 --- a/Assets/RGLUnityPlugin/Scripts/LidarUdpPublisher.cs +++ b/Assets/RGLUnityPlugin/Scripts/LidarUdpPublisher.cs @@ -66,6 +66,7 @@ public class LidarUdpPublisher : MonoBehaviour { LidarModel.HesaiPandarQT, RGLLidarModel.RGL_HESAI_PANDAR_QT64 }, { LidarModel.HesaiQT128C2X, RGLLidarModel.RGL_HESAI_QT128C2X }, { LidarModel.HesaiPandar128E4X, RGLLidarModel.RGL_HESAI_PANDAR_128E4X }, + { LidarModel.HesaiPandar128E4XHighRes, RGLLidarModel.RGL_HESAI_PANDAR_128E4X }, { LidarModel.HesaiPandarXT32, RGLLidarModel.RGL_HESAI_PANDAR_XT32 } }; @@ -90,6 +91,9 @@ public class LidarUdpPublisher : MonoBehaviour { LidarModel.HesaiPandar128E4X, new List() { RGLReturnMode.SingleReturnFirst, RGLReturnMode.SingleReturnStrongest, RGLReturnMode.SingleReturnLast, RGLReturnMode.DualReturnLastStrongest, RGLReturnMode.DualReturnFirstLast, RGLReturnMode.DualReturnFirstStrongest } }, + { LidarModel.HesaiPandar128E4XHighRes, new List() // same as for HesaiPandar128E4X + { RGLReturnMode.SingleReturnFirst, RGLReturnMode.SingleReturnStrongest, RGLReturnMode.SingleReturnLast, + RGLReturnMode.DualReturnLastStrongest, RGLReturnMode.DualReturnFirstLast, RGLReturnMode.DualReturnFirstStrongest } }, { LidarModel.HesaiPandarXT32, new List() { RGLReturnMode.SingleReturnStrongest, RGLReturnMode.SingleReturnLast, RGLReturnMode.DualReturnLastStrongest } }, }; @@ -107,7 +111,8 @@ private bool IsHesai(LidarModel model) model == LidarModel.HesaiPandarQT || model == LidarModel.HesaiPandarXT32 || model == LidarModel.HesaiQT128C2X || - model == LidarModel.HesaiPandar128E4X; + model == LidarModel.HesaiPandar128E4X || + model == LidarModel.HesaiPandar128E4XHighRes; } // To be called when adding this component @@ -305,13 +310,9 @@ private RGLUdpOptions GetUdpOptions(LidarModel currentLidarModel) udpOptions += enableHesaiUpCloseBlockageDetection ? (UInt32)RGLUdpOptions.RGL_UDP_UP_CLOSE_BLOCKAGE_DETECTION : 0; udpOptions += enableHesaiPandarDriverCompatibilityForQt ? (UInt32)RGLUdpOptions.RGL_UDP_FIT_QT64_TO_HESAI_PANDAR_DRIVER : 0; - // Check if high resolution mode is enabled (available only on Hesai Pandar128E4X) - if (currentLidarModel == LidarModel.HesaiPandar128E4X) + if (currentLidarModel == LidarModel.HesaiPandar128E4XHighRes) { - if (((HesaiPandar128E4XLidarConfiguration)lidarSensor.configuration).highResolutionModeEnabled) - { - udpOptions += (UInt32)RGLUdpOptions.RGL_UDP_HIGH_RESOLUTION_MODE; - } + udpOptions += (UInt32)RGLUdpOptions.RGL_UDP_HIGH_RESOLUTION_MODE; } return (RGLUdpOptions)udpOptions; diff --git a/Assets/RGLUnityPlugin/Scripts/Utilities/InspectorUtilities.cs b/Assets/RGLUnityPlugin/Scripts/Utilities/InspectorUtilities.cs new file mode 100644 index 000000000..5efef7380 --- /dev/null +++ b/Assets/RGLUnityPlugin/Scripts/Utilities/InspectorUtilities.cs @@ -0,0 +1,27 @@ +// Copyright 2022 Robotec.ai. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System; + +namespace RGLUnityPlugin +{ + /// + /// An empty struct that can be used as ToolTip attachment object. + /// Useful when you want to provide instructions in the Inspector. + /// + [Serializable] + public struct EmptyStruct + { + } +} diff --git a/Assets/RGLUnityPlugin/Scripts/Utilities/InspectorUtilities.cs.meta b/Assets/RGLUnityPlugin/Scripts/Utilities/InspectorUtilities.cs.meta new file mode 100644 index 000000000..7c6775247 --- /dev/null +++ b/Assets/RGLUnityPlugin/Scripts/Utilities/InspectorUtilities.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 99d5d0bd7bc44b7798d1e75e58294311 +timeCreated: 1734353532 \ No newline at end of file diff --git a/docs/Components/Sensors/LiDARSensor/LiDARSensor/index.md b/docs/Components/Sensors/LiDARSensor/LiDARSensor/index.md index 3eb548ade..77b724bfb 100644 --- a/docs/Components/Sensors/LiDARSensor/LiDARSensor/index.md +++ b/docs/Components/Sensors/LiDARSensor/LiDARSensor/index.md @@ -39,18 +39,19 @@ Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/* The table of available prefabs can be found below: -| LiDAR | Path | Appearance | -| :-------------------- | :----------------------- | :------------------------------------------------ | -| *HESAI Pandar40P* | `HesaiPandar40P.prefab` | | -| *HESAI PandarQT64* | `HesaiPandarQT64.prefab` | | -| *HESAI PandarXT32* | `HesaiPandarXT32.prefab` | | -| *HESAI QT128C2X* | `HesaiQT128C2X.prefab` | | -| *HESAI Pandar128E4X* | `HesaiPandar128E4X.prefab` | | -| *HESAI AT128 E2X* | `HesaiAT128E2X.prefab` | | -| *Ouster OS1-64* | `OusterOS1-64.prefab` | | -| *Velodyne VLP-16* | `VelodyneVLP16.prefab` | | -| *Velodyne VLC-32C* | `VelodyneVLP32C.prefab` | | -| *Velodyne VLS-128-AP* | `VelodyneVLS128.prefab` | | +| LiDAR | Path | Appearance | +| :-------------------- | :----------------------- | :------------------------------------------------ | +| *HESAI Pandar40P* | `HesaiPandar40P.prefab` | | +| *HESAI PandarQT64* | `HesaiPandarQT64.prefab` | | +| *HESAI PandarXT32* | `HesaiPandarXT32.prefab` | | +| *HESAI QT128C2X* | `HesaiQT128C2X.prefab` | | +| *HESAI Pandar128E4X* | `HesaiPandar128E4X.prefab` | | +| *HESAI Pandar128E4XHighRes* | `HesaiPandar128E4XHighRes.prefab` | | +| *HESAI AT128 E2X* | `HesaiAT128E2X.prefab` | | +| *Ouster OS1-64* | `OusterOS1-64.prefab` | | +| *Velodyne VLP-16* | `VelodyneVLP16.prefab` | | +| *Velodyne VLC-32C* | `VelodyneVLP32C.prefab` | | +| *Velodyne VLS-128-AP* | `VelodyneVLS128.prefab` | | ### Link in the default Scene ![link](link.png) @@ -137,11 +138,12 @@ horizontal and vertical beam divergence values (as they would be set to 0). Note - `Enable Restriction Randomizer` - enable/disable random periodic mode (default: `false`) - `Min Random Period` - lower bound of time period in seconds used in random mode - `Max Random Period` - upper bound of time period in seconds used in random mode - - *Additional options (available for some Lidar Model Preset)* - - `Min Range` - minimum range of the sensor (if not avaiable, the range is different for each laser in `Laser Array`) - - `Max Range` - maximum range of the sensor (if not avaiable, the range is different for each laser in `Laser Array`) - - `High Resolution Mode Enabled` - whether to activate high resolution mode (available for `Hesai Pandar 128E4X` LiDAR model) + - Uniform range LiDARs + - `Min Range` - minimum range of the sensor + - `Max Range` - maximum range of the sensor + - Non-uniform range LiDARs + - `Range Modification Tooltip` - empty object to inform how to modify range via Tooltip #### Output Data `LidarSensor` provides public methods to extend this pipeline with additional `RGL` nodes.