diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32.meta b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32.meta
new file mode 100755
index 000000000..e97c6f696
--- /dev/null
+++ b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5fbcd711da95055478de5095f528c991
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Materials.meta b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Materials.meta
new file mode 100755
index 000000000..7948906c5
--- /dev/null
+++ b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Materials.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b4e9925bf765520478b4a7d29bcc7439
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Materials/XT32.mat b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Materials/XT32.mat
new file mode 100755
index 000000000..714f310c4
--- /dev/null
+++ b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Materials/XT32.mat
@@ -0,0 +1,274 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: XT32
+ m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3}
+ m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _MASKMAP _NORMALMAP _NORMALMAP_TANGENT_SPACE
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 2225
+ stringTagMap: {}
+ disabledShaderPasses:
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _AnisotropyMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseColorMap:
+ m_Texture: {fileID: 2800000, guid: d3fbd7b0301a44547aa86c127983cecb, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BentNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BentNormalMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _CoatMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissiveColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _HeightMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _IridescenceMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _IridescenceThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: d3fbd7b0301a44547aa86c127983cecb, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MaskMap:
+ m_Texture: {fileID: 2800000, guid: ba26479e52f0f924ba29bbe8ff075d37, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMap:
+ m_Texture: {fileID: 2800000, guid: 910b3402cc01213429e3ac50a2f29475, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecularColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SubsurfaceMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TangentMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TangentMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TransmittanceColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AORemapMax: 1
+ - _AORemapMin: 0
+ - _ATDistance: 1
+ - _AddPrecomputedVelocity: 0
+ - _AlbedoAffectEmissive: 0
+ - _AlphaCutoff: 0.5
+ - _AlphaCutoffEnable: 0
+ - _AlphaCutoffPostpass: 0.5
+ - _AlphaCutoffPrepass: 0.5
+ - _AlphaCutoffShadow: 0.5
+ - _AlphaDstBlend: 0
+ - _AlphaSrcBlend: 1
+ - _AlphaToMask: 0
+ - _AlphaToMaskInspectorValue: 0
+ - _Anisotropy: 0
+ - _BlendMode: 0
+ - _BumpScale: 1
+ - _CoatMask: 0
+ - _CullMode: 2
+ - _CullModeForward: 2
+ - _Cutoff: 0.5
+ - _DepthOffsetEnable: 0
+ - _DetailAlbedoScale: 1
+ - _DetailNormalMapScale: 1
+ - _DetailNormalScale: 1
+ - _DetailSmoothnessScale: 1
+ - _DiffusionProfile: 0
+ - _DiffusionProfileHash: 0
+ - _DisplacementLockObjectScale: 1
+ - _DisplacementLockTilingScale: 1
+ - _DisplacementMode: 0
+ - _DoubleSidedEnable: 0
+ - _DoubleSidedGIMode: 0
+ - _DoubleSidedNormalMode: 1
+ - _DstBlend: 0
+ - _EmissiveColorMode: 1
+ - _EmissiveExposureWeight: 1
+ - _EmissiveIntensity: 1
+ - _EmissiveIntensityUnit: 0
+ - _EnableBlendModePreserveSpecularLighting: 1
+ - _EnableFogOnTransparent: 1
+ - _EnableGeometricSpecularAA: 0
+ - _EnergyConservingSpecularColor: 1
+ - _GlossMapScale: 1
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _HeightAmplitude: 0.02
+ - _HeightCenter: 0.5
+ - _HeightMapParametrization: 0
+ - _HeightMax: 1
+ - _HeightMin: -1
+ - _HeightOffset: 0
+ - _HeightPoMAmplitude: 2
+ - _HeightTessAmplitude: 2
+ - _HeightTessCenter: 0.5
+ - _InvTilingScale: 1
+ - _Ior: 1.5
+ - _IridescenceMask: 1
+ - _IridescenceThickness: 1
+ - _LinkDetailsWithBase: 1
+ - _MaterialID: 1
+ - _Metallic: 0
+ - _MetallicRemapMax: 1
+ - _MetallicRemapMin: 0.38204393
+ - _Mode: 0
+ - _NormalMapSpace: 0
+ - _NormalScale: 1
+ - _OcclusionStrength: 1
+ - _OpaqueCullMode: 2
+ - _PPDLodThreshold: 5
+ - _PPDMaxSamples: 15
+ - _PPDMinSamples: 5
+ - _PPDPrimitiveLength: 1
+ - _PPDPrimitiveWidth: 1
+ - _Parallax: 0.02
+ - _RayTracing: 0
+ - _ReceivesSSR: 1
+ - _ReceivesSSRTransparent: 0
+ - _RefractionModel: 0
+ - _Smoothness: 0.5
+ - _SmoothnessRemapMax: 0.99999994
+ - _SmoothnessRemapMin: 0
+ - _SmoothnessTextureChannel: 0
+ - _SpecularAAScreenSpaceVariance: 0.1
+ - _SpecularAAThreshold: 0.2
+ - _SpecularHighlights: 1
+ - _SpecularOcclusionMode: 1
+ - _SrcBlend: 1
+ - _StencilRef: 0
+ - _StencilRefDepth: 8
+ - _StencilRefGBuffer: 10
+ - _StencilRefMV: 40
+ - _StencilWriteMask: 6
+ - _StencilWriteMaskDepth: 8
+ - _StencilWriteMaskGBuffer: 14
+ - _StencilWriteMaskMV: 40
+ - _SubsurfaceMask: 1
+ - _SupportDecals: 1
+ - _SurfaceType: 0
+ - _TexWorldScale: 1
+ - _TexWorldScaleEmissive: 1
+ - _Thickness: 1
+ - _TransmissionEnable: 1
+ - _TransparentBackfaceEnable: 0
+ - _TransparentCullMode: 2
+ - _TransparentDepthPostpassEnable: 0
+ - _TransparentDepthPrepassEnable: 0
+ - _TransparentSortPriority: 0
+ - _TransparentWritingMotionVec: 0
+ - _TransparentZWrite: 0
+ - _UVBase: 0
+ - _UVDetail: 0
+ - _UVEmissive: 0
+ - _UVSec: 0
+ - _UseEmissiveIntensity: 0
+ - _UseShadowThreshold: 0
+ - _ZTestDepthEqualForOpaque: 3
+ - _ZTestGBuffer: 4
+ - _ZTestTransparent: 4
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
+ - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0}
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0}
+ - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1}
+ - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1}
+ - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0}
+ - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
+ - _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
+ - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
+ - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1}
+ - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
+ - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}
+ - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0}
+ m_BuildTextureStacks: []
+--- !u!114 &5601333597353647813
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 12
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Materials/XT32.mat.meta b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Materials/XT32.mat.meta
new file mode 100755
index 000000000..5f825a1f5
--- /dev/null
+++ b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Materials/XT32.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 18aebc618db92ef44bf8094818cb7170
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures.meta b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures.meta
new file mode 100755
index 000000000..b7538082d
--- /dev/null
+++ b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 761f5d4a2abbc36418f05b37dbe276d8
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_BaseMap.png b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_BaseMap.png
new file mode 100755
index 000000000..6c7dcf826
Binary files /dev/null and b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_BaseMap.png differ
diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_BaseMap.png.meta b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_BaseMap.png.meta
new file mode 100755
index 000000000..eb95ddc39
--- /dev/null
+++ b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_BaseMap.png.meta
@@ -0,0 +1,98 @@
+fileFormatVersion: 2
+guid: d3fbd7b0301a44547aa86c127983cecb
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMasterTextureLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_MaskMap.png b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_MaskMap.png
new file mode 100755
index 000000000..882bcc354
Binary files /dev/null and b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_MaskMap.png differ
diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_MaskMap.png.meta b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_MaskMap.png.meta
new file mode 100755
index 000000000..05fb33920
--- /dev/null
+++ b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_MaskMap.png.meta
@@ -0,0 +1,98 @@
+fileFormatVersion: 2
+guid: ba26479e52f0f924ba29bbe8ff075d37
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMasterTextureLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_Normal.png b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_Normal.png
new file mode 100755
index 000000000..c0c066cdb
Binary files /dev/null and b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_Normal.png differ
diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_Normal.png.meta b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_Normal.png.meta
new file mode 100755
index 000000000..b13dc6c92
--- /dev/null
+++ b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/Textures/XT32_Normal.png.meta
@@ -0,0 +1,122 @@
+fileFormatVersion: 2
+guid: 910b3402cc01213429e3ac50a2f29475
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMasterTextureLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 1
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/XT32.fbx b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/XT32.fbx
new file mode 100755
index 000000000..99771c162
Binary files /dev/null and b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/XT32.fbx differ
diff --git a/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/XT32.fbx.meta b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/XT32.fbx.meta
new file mode 100755
index 000000000..1b79bee76
--- /dev/null
+++ b/Assets/AWSIM/Models/Sensors/HESAI Pandar XT32/XT32.fbx.meta
@@ -0,0 +1,110 @@
+fileFormatVersion: 2
+guid: 8ddaeb572981c05408f53dce4c3827db
+ModelImporter:
+ serializedVersion: 21202
+ internalIDToNameTable: []
+ externalObjects:
+ - first:
+ type: UnityEngine:Material
+ assembly: UnityEngine.CoreModule
+ name: XT32
+ second: {fileID: 2100000, guid: 18aebc618db92ef44bf8094818cb7170, type: 2}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarXT32.prefab b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarXT32.prefab
new file mode 100644
index 000000000..f49abea22
--- /dev/null
+++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarXT32.prefab
@@ -0,0 +1,523 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &191176992291972529
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7554324145890258761}
+ - component: {fileID: 5607735366214598668}
+ - component: {fileID: 5454220115885420465}
+ - component: {fileID: 2216704469474149026}
+ m_Layer: 0
+ m_Name: Collider
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7554324145890258761
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 191176992291972529}
+ m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5}
+ m_LocalPosition: {x: -0, y: 0, z: 0}
+ m_LocalScale: {x: 100, y: 100, z: 100}
+ m_Children: []
+ m_Father: {fileID: 5069047544505465436}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: -90, y: 90, z: 0}
+--- !u!33 &5607735366214598668
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 191176992291972529}
+ m_Mesh: {fileID: -3298800115395149385, guid: 8ddaeb572981c05408f53dce4c3827db, type: 3}
+--- !u!23 &5454220115885420465
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 191176992291972529}
+ 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: 2100000, guid: 73c176f402d2c2f4d929aa5da7585d17, 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!64 &2216704469474149026
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 191176992291972529}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 4
+ m_Convex: 0
+ m_CookingOptions: 30
+ m_Mesh: {fileID: -3298800115395149385, guid: 8ddaeb572981c05408f53dce4c3827db, type: 3}
+--- !u!1 &1265096788426545000
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2436963294805608634}
+ - component: {fileID: 6405021469464303182}
+ - component: {fileID: 6936534199252141762}
+ m_Layer: 0
+ m_Name: PandarXT32
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2436963294805608634
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1265096788426545000}
+ m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5}
+ m_LocalPosition: {x: -0, y: 0, z: 0}
+ m_LocalScale: {x: 100, y: 100, z: 100}
+ m_Children: []
+ m_Father: {fileID: 5069047544505465436}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: -90, y: 90, z: 0}
+--- !u!33 &6405021469464303182
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1265096788426545000}
+ m_Mesh: {fileID: -383949677454360693, guid: 8ddaeb572981c05408f53dce4c3827db, type: 3}
+--- !u!23 &6936534199252141762
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1265096788426545000}
+ 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: 18aebc618db92ef44bf8094818cb7170, 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 &5553799597008101606
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5069047544505465436}
+ - component: {fileID: 554514857630486862}
+ - component: {fileID: 8979344720251141608}
+ - component: {fileID: 614095381874082573}
+ m_Layer: 0
+ m_Name: HesaiPandarXT32
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &5069047544505465436
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5553799597008101606}
+ 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: 7554324145890258761}
+ - {fileID: 2436963294805608634}
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &554514857630486862
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5553799597008101606}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 87ba9656cbd67467f8119d8666b098aa, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ pcl24Topic: lidar/pointcloud
+ pcl48Topic: lidar/pointcloud_ex
+ instanceIdTopic: lidar/instance_id
+ frameID: world
+ publishPCL24: 1
+ publishPCL48: 1
+ publishInstanceId: 0
+ reliabilityPolicy: 2
+ durabilityPolicy: 2
+ historyPolicy: 1
+ historyDepth: 5
+--- !u!114 &8979344720251141608
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5553799597008101606}
+ 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 &614095381874082573
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5553799597008101606}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 62277ad5b6d1cfd2984db58dc79535a4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ AutomaticCaptureHz: 10
+ modelPreset: 9
+ applyDistanceGaussianNoise: 1
+ applyAngularGaussianNoise: 1
+ applyVelocityDistortion: 0
+ configuration:
+ rayGenerateMethod: 0
+ laserArray:
+ centerOfMeasurementLinearOffsetMm: {x: 0, y: 47.7, z: 0}
+ focalDistanceMm: 0
+ lasers:
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -15
+ verticalLinearOffsetMm: 0
+ ringId: 1
+ timeOffset: 0.00028
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -14
+ verticalLinearOffsetMm: 0
+ ringId: 2
+ timeOffset: 0.001792
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -13
+ verticalLinearOffsetMm: 0
+ ringId: 3
+ timeOffset: 0.003304
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -12
+ verticalLinearOffsetMm: 0
+ ringId: 4
+ timeOffset: 0.004816
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -11
+ verticalLinearOffsetMm: 0
+ ringId: 5
+ timeOffset: 0.006328
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -10
+ verticalLinearOffsetMm: 0
+ ringId: 6
+ timeOffset: 0.00784
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -9
+ verticalLinearOffsetMm: 0
+ ringId: 7
+ timeOffset: 0.009352
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -8
+ verticalLinearOffsetMm: 0
+ ringId: 8
+ timeOffset: 0.010864
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -7
+ verticalLinearOffsetMm: 0
+ ringId: 9
+ timeOffset: 0.012376
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -6
+ verticalLinearOffsetMm: 0
+ ringId: 10
+ timeOffset: 0.013888
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -5
+ verticalLinearOffsetMm: 0
+ ringId: 11
+ timeOffset: 0.0154
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -4
+ verticalLinearOffsetMm: 0
+ ringId: 12
+ timeOffset: 0.016912
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -3
+ verticalLinearOffsetMm: 0
+ ringId: 13
+ timeOffset: 0.018424
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -2
+ verticalLinearOffsetMm: 0
+ ringId: 14
+ timeOffset: 0.019936
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: -1
+ verticalLinearOffsetMm: 0
+ ringId: 15
+ timeOffset: 0.021448
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 0
+ verticalLinearOffsetMm: 0
+ ringId: 16
+ timeOffset: 0.02296
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 1
+ verticalLinearOffsetMm: 0
+ ringId: 17
+ timeOffset: 0.024472
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 2
+ verticalLinearOffsetMm: 0
+ ringId: 18
+ timeOffset: 0.025984
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 3
+ verticalLinearOffsetMm: 0
+ ringId: 19
+ timeOffset: 0.027496
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 4
+ verticalLinearOffsetMm: 0
+ ringId: 20
+ timeOffset: 0.029008
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 5
+ verticalLinearOffsetMm: 0
+ ringId: 21
+ timeOffset: 0.03052
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 6
+ verticalLinearOffsetMm: 0
+ ringId: 22
+ timeOffset: 0.032032
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 7
+ verticalLinearOffsetMm: 0
+ ringId: 23
+ timeOffset: 0.033544
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 8
+ verticalLinearOffsetMm: 0
+ ringId: 24
+ timeOffset: 0.035056
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 9
+ verticalLinearOffsetMm: 0
+ ringId: 25
+ timeOffset: 0.036568
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 10
+ verticalLinearOffsetMm: 0
+ ringId: 26
+ timeOffset: 0.03808
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 11
+ verticalLinearOffsetMm: 0
+ ringId: 27
+ timeOffset: 0.039592
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 12
+ verticalLinearOffsetMm: 0
+ ringId: 28
+ timeOffset: 0.041104
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 13
+ verticalLinearOffsetMm: 0
+ ringId: 29
+ timeOffset: 0.042616
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 14
+ verticalLinearOffsetMm: 0
+ ringId: 30
+ timeOffset: 0.044128
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 15
+ verticalLinearOffsetMm: 0
+ ringId: 31
+ timeOffset: 0.04564
+ minRange: 0
+ maxRange: 0
+ - horizontalAngularOffsetDeg: 0
+ verticalAngularOffsetDeg: 16
+ verticalLinearOffsetMm: 0
+ ringId: 32
+ timeOffset: 0.047152
+ minRange: 0
+ maxRange: 0
+ horizontalResolution: 0.18
+ minHAngle: 0
+ maxHAngle: 360
+ minRange: 0.05
+ maxRange: 120
+ laserArrayCycleTime: 0.05
+ noiseParams:
+ angularNoiseType: 0
+ angularNoiseStDev: 0.057295784
+ angularNoiseMean: 0
+ distanceNoiseStDevBase: 0.02
+ distanceNoiseStDevRisePerMeter: 0
+ distanceNoiseMean: 0
diff --git a/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarXT32.prefab.meta b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarXT32.prefab.meta
new file mode 100755
index 000000000..2809f1d53
--- /dev/null
+++ b/Assets/AWSIM/Prefabs/Sensors/RobotecGPULidars/HesaiPandarXT32.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 330fc85e0d463c14fad1ae1b6cd351f0
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/RGLUnityPlugin/Scripts/LidarModels/LaserArrayLibrary.cs b/Assets/RGLUnityPlugin/Scripts/LidarModels/LaserArrayLibrary.cs
index eccd4da76..b082e7563 100644
--- a/Assets/RGLUnityPlugin/Scripts/LidarModels/LaserArrayLibrary.cs
+++ b/Assets/RGLUnityPlugin/Scripts/LidarModels/LaserArrayLibrary.cs
@@ -580,5 +580,46 @@ public static class LaserArrayLibrary
new Laser {horizontalAngularOffsetDeg = 0.65f, verticalAngularOffsetDeg = 12.47f, ringId = 1, timeOffset = 0.008264f, minRange = 0.5f, maxRange = 100f},
}
};
+
+ public static LaserArray HesaiPandarXT32 => new LaserArray
+ {
+ centerOfMeasurementLinearOffsetMm = new Vector3(0.0f, 47.7f, 0.0f),
+ focalDistanceMm = 0.0f,
+ lasers = new[]
+ {
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -15.0f, ringId = 1, timeOffset = 0.00028f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -14.0f, ringId = 2, timeOffset = 0.001792f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -13.0f, ringId = 3, timeOffset = 0.003304f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -12.0f, ringId = 4, timeOffset = 0.004816f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -11.0f, ringId = 5, timeOffset = 0.006328f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -10.0f, ringId = 6, timeOffset = 0.00784f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -9.0f, ringId = 7, timeOffset = 0.009352f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -8.0f, ringId = 8, timeOffset = 0.010864f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -7.0f, ringId = 9, timeOffset = 0.012376f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -6.0f, ringId = 10, timeOffset = 0.013888f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -5.0f, ringId = 11, timeOffset = 0.0154f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -4.0f, ringId = 12, timeOffset = 0.016912f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -3.0f, ringId = 13, timeOffset = 0.018424f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -2.0f, ringId = 14, timeOffset = 0.019936f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = -1.0f, ringId = 15, timeOffset = 0.021448f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +0.0f, ringId = 16, timeOffset = 0.02296f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +1.0f, ringId = 17, timeOffset = 0.024472f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +2.0f, ringId = 18, timeOffset = 0.025984f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +3.0f, ringId = 19, timeOffset = 0.027496f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +4.0f, ringId = 20, timeOffset = 0.029008f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +5.0f, ringId = 21, timeOffset = 0.03052f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +6.0f, ringId = 22, timeOffset = 0.032032f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +7.0f, ringId = 23, timeOffset = 0.033544f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +8.0f, ringId = 24, timeOffset = 0.035056f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +9.0f, ringId = 25, timeOffset = 0.036568f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +10.0f, ringId = 26, timeOffset = 0.03808f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +11.0f, ringId = 27, timeOffset = 0.039592f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +12.0f, ringId = 28, timeOffset = 0.041104f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +13.0f, ringId = 29, timeOffset = 0.042616f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +14.0f, ringId = 30, timeOffset = 0.044128f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +15.0f, ringId = 31, timeOffset = 0.04564f},
+ new Laser {horizontalAngularOffsetDeg = 0.0f, verticalAngularOffsetDeg = +16.0f, ringId = 32, timeOffset = 0.047152f}
+ }
+ };
}
}
diff --git a/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarConfigurationLibrary.cs b/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarConfigurationLibrary.cs
index 0350908f6..63a6a8b9d 100644
--- a/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarConfigurationLibrary.cs
+++ b/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarConfigurationLibrary.cs
@@ -30,6 +30,7 @@ public static class LidarConfigurationLibrary
{LidarModel.HesaiPandar40P, HesaiPandar40P},
{LidarModel.OusterOS1_64, OusterOS1_64},
{LidarModel.HesaiAT128E2X, HesaiAT128E2X},
+ {LidarModel.HesaiPandarXT32, HesaiPandarXT32},
};
public static LidarConfiguration RangeMeter => new LidarConfiguration
@@ -148,5 +149,18 @@ public static class LidarConfigurationLibrary
noiseParams = LidarConfiguration.TypicalNoiseParams,
rayGenerateMethod = LidarConfiguration.RayGenerateMethod.HesaiAT128,
};
+
+ public static LidarConfiguration HesaiPandarXT32 => new LidarConfiguration
+ {
+ laserArray = LaserArrayLibrary.HesaiPandarXT32,
+ horizontalResolution = 0.18f,
+ laserArrayCycleTime = 0.05f,
+ minHAngle = 0.0f,
+ maxHAngle = 360.0f,
+ noiseParams = LidarConfiguration.TypicalNoiseParams,
+ rayGenerateMethod = LidarConfiguration.RayGenerateMethod.RotatingLidarEqualRange,
+ minRange = 0.05f,
+ maxRange = 120.0f,
+ };
}
}
\ No newline at end of file
diff --git a/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarModels.cs b/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarModels.cs
index 1107469b2..33466cf31 100644
--- a/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarModels.cs
+++ b/Assets/RGLUnityPlugin/Scripts/LidarModels/LidarModels.cs
@@ -25,5 +25,6 @@ public enum LidarModel
HesaiPandar40P,
OusterOS1_64,
HesaiAT128E2X,
+ HesaiPandarXT32,
}
}
\ No newline at end of file
diff --git a/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/img/LidarConfiguration.png b/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/img/LidarConfiguration.png
new file mode 100644
index 000000000..b573a65f6
Binary files /dev/null and b/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/img/LidarConfiguration.png differ
diff --git a/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/img/LidarFocalDistanceParamter.png b/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/img/LidarFocalDistanceParamter.png
new file mode 100644
index 000000000..f447b1b54
Binary files /dev/null and b/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/img/LidarFocalDistanceParamter.png differ
diff --git a/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/img/LidarLaserArray.png b/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/img/LidarLaserArray.png
new file mode 100644
index 000000000..8b50ea60b
Binary files /dev/null and b/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/img/LidarLaserArray.png differ
diff --git a/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/img/LidarOriginParameter.png b/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/img/LidarOriginParameter.png
new file mode 100644
index 000000000..68e497fc3
Binary files /dev/null and b/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/img/LidarOriginParameter.png differ
diff --git a/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/index.md b/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/index.md
index 15beb3f36..1ef90862e 100644
--- a/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/index.md
+++ b/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/index.md
@@ -4,32 +4,92 @@
!!! warning "Supported LiDARs"
Not all lidar types are supported by `RGL`. Unfortunately, in the case of `MEMs` *LiDARs*, there is a non-repetitive phenomenon - for this reason, the current implementation is not able to reproduce their work.
-## 1. Add new LiDAR model
+## 1. Add a new LiDAR model
The example shows the addition of a *LiDAR* named `NewLidarModel`.
To add a new *LiDAR* model, perform the following steps:
+1. Navigate to `Assets/RGLUnityPlugin/Scripts/LidarModels`.
+
1. Add its name to the `LidarModels.cs` at the end of the enumeration. The order of enums must not be changed to keep existing prefabs working.
![lidar_models](lidar_models.png)
-1. If the *LiDAR* has a non-uniform laser array construction (e.g. different linear / angular spacing between lasers), add an entry to the `LaserArrayLibrary`, otherwise, skip this step.
-
- !!! warning "Coordinate system"
- Keep in mind that *Unity* has a left-handed coordinate system, while most of the lidar's manuals use a right-handed coordinate system. In that case, reverse sign of the values of the angles.
+1. Now, it is time to define the laser (also called a channel) distribution of the *LiDAR*.
+
+ !!! info
+ If your *LiDAR*:
+
+ - has a uniform laser distribution
+ - has the equal range for all of the lasers
+ - fire all of the rays (beams) at the same time
+
+ You can skip this step and use our helper method to generate a simple uniform laser array definition (more information in the next step).
+
+ 1. Laser distribution is represented by `LaserArray` consists of:
+ - `centerOfMeasurementLinearOffsetMm` - 3D translation from the game object's origin to *LiDAR's* origin. Preview in 2D:
+
+
+
+ - `focalDistanceMm` - Distance from the sensor center to the focal point where all laser beams intersect.
+
+
+
+ - `lasers` - array of lasers (channels) with a number of parameters:
+
+ - `horizontalAngularOffsetDeg` - horizontal angle offset of the laser (Azimuth)
+ - `verticalAngularOffsetDeg` - vertical angle offset of the laser (Elevation)
+ - `verticalLinearOffsetMm` - vertical offset of the laser (translation from origin)
+ - `ringId` - Id of the ring (in most cases laser Id)
+ - `timeOffset` - time offset of the laser firing in milliseconds (with reference to the first laser in the array)
+ - `minRange` - minimum range of the laser (set if lasers have different ranges)
+ - `maxRange` - maximum range of the laser (set if lasers have different ranges)
- ![lidar_array](lidar_array.png)
+ 1. To define a new laser distribution create a new entry to the `LaserArrayLibrary.cs`
+ ![lidar_array](img/LidarLaserArray.png)
+ 1. Add a new public static instance of `LaserArray` with the definition.
-1. Add an entry to `LidarConfigurationLibrary`. If the *LiDAR* has a uniform laser generate a uniform one using static method `LaserArray.Uniform()` - just like the `RangeMeter`.
+ 1. Add a new item to the `ByModel` dictionary that collects *LiDAR* model enumerations with their laser array definitions.
- ![lidar_configuration](lidar_configuration.png)
+ In this example, `NewLidarModel` laser distribution consists of 5 lasers with
+
+ - elevations: 15, 10, 0, -10, -15 degrees
+ - azimuths: 1.4, -1.4, 1.4, -1.4, 1.4 degrees
+ - ring Ids: 1, 2, 3, 4, 5
+ - time offsets: 0, 0.01, 0.02, 0.03, 0.04 milliseconds
+ - an equal range that will be defined later
+
+ !!! warning "Coordinate system"
+ Keep in mind that *Unity* has a left-handed coordinate system, while most of the *LiDAR's* manuals use a right-handed coordinate system. In that case, reverse sign of the values of the angles.
+
+1. The last step is to create a *LiDAR* configuration by adding an entry to `LidarConfigurationLibrary.cs`
+
+ ![lidar_configuration](img/LidarConfiguration.png)
+
+ 1. Add a new public static instance of `LidarConfiguration` with the definition:
+
+ - `laserArray` - laser distribution array created in the previous step (it could be also generated uniformly with `LaserArray.Uniform()`)
+ - `horizontalResolution` - horizontal resolution of laser array firings in degrees (laser array will be rotated according to this resolution)
+ - `laserArrayCycleTime` - time between two consecutive firings of the whole laser array in milliseconds. Usually, it consists of firing time for all the lasers and recharge time. Skip this parameter if all of the rays are fired at the same time.
+ - `minHAngle` - minimum horizontal angle of the *LiDAR*
+ - `maxHAngle` - maximum horizontal angle of the *LiDAR*
+ - `noiseParams` - *LiDAR* noise parameters (see `LidarNoiseParams.cs` for more details)
+ - `rayGenerateMethod` - if *LiDAR* has equal range for all of the lasers choose `RotatingLidarEqualRange` and configure `minRange` and `maxRange` in the `LidarConfiguration`. Otherwise, choose `RotatingLidarDifferentLaserRanges` and define ranges in `LaserArray`.
+ - `minRange` - minimum range of the sensor (applied when `Ray Generate Method` is `Rotating Lidar Equal Range`)
+ - `maxRange` - maximum range of the sensor (applied when `Ray Generate Method` is `Rotating Lidar Equal Range`)
+
+ 1. Add a new item to the `ByModel` dictionary that collects *LiDAR* model enumerations with their *LiDAR* configurations.
1. Done. New *LiDAR* preset should be available via *Unity Inspector*.
![done](done.png)
+ Frame rate of the *LiDAR* can be set in the `Automatic Capture Hz` parameter.
+
+ *Note: In the real-world LiDARs, frame rate affects horizontal resolution. Current implementation separates these two parameters. Keep in mind to change it manually.*
+
## 2. Create new LiDAR prefab
1. Create an empty object and name it appropriately according to the *LiDAR* model.
diff --git a/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/lidar_array.png b/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/lidar_array.png
deleted file mode 100644
index 27e2a53b8..000000000
Binary files a/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/lidar_array.png and /dev/null differ
diff --git a/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/lidar_configuration.png b/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/lidar_configuration.png
deleted file mode 100644
index 11d130660..000000000
Binary files a/docs/Components/Sensors/LiDARSensor/AddNewLiDAR/lidar_configuration.png and /dev/null differ
diff --git a/docs/Components/Sensors/LiDARSensor/LiDARSensor/imgs_prefabs/pandarxt32.png b/docs/Components/Sensors/LiDARSensor/LiDARSensor/imgs_prefabs/pandarxt32.png
new file mode 100644
index 000000000..c911f3f7a
Binary files /dev/null and b/docs/Components/Sensors/LiDARSensor/LiDARSensor/imgs_prefabs/pandarxt32.png differ
diff --git a/docs/Components/Sensors/LiDARSensor/LiDARSensor/index.md b/docs/Components/Sensors/LiDARSensor/LiDARSensor/index.md
index 737516a08..c8a1812a8 100644
--- a/docs/Components/Sensors/LiDARSensor/LiDARSensor/index.md
+++ b/docs/Components/Sensors/LiDARSensor/LiDARSensor/index.md
@@ -35,15 +35,16 @@ Assets/AWSIM/Prefabs/RobotecGPULidars/*
The table of available prefabs can be found below:
-| LiDAR | Path | Appearance |
-| :-------------------- | :----------------------- | :----------------------------------------------- |
-| *HESAI Pandar40P* | `HesaiPandar40P.prefab` | |
-| *HESAI PandarQT64* | `HesaiPandarQT64.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 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)