AGX Dynamics 2.42.1.1
Loading...
Searching...
No Matches
LidarModelLivox.h
Go to the documentation of this file.
1/*
2Copyright 2007-2025. Algoryx Simulation AB.
3
4All AGX source code, intellectual property, documentation, sample code,
5tutorials, scene files and technical white papers, are copyrighted, proprietary
6and confidential material of Algoryx Simulation AB. You may not download, read,
7store, distribute, publish, copy or otherwise disseminate, use or expose this
8material unless having a written signed agreement with Algoryx Simulation AB, or having been
9advised so by Algoryx Simulation AB for a time limited evaluation, or having purchased a
10valid commercial license from Algoryx Simulation AB.
11
12Algoryx Simulation AB disclaims all responsibilities for loss or damage caused
13from using this software, unless otherwise stated in written agreements with
14Algoryx Simulation AB.
15*/
16
17#pragma once
18
19#include <filesystem>
23
24namespace agxSensor
25{
30 inline std::string agxRayPatternPath(const std::string& fileName)
31 {
32 return AGX_ENVIRONMENT().getFilePath().find("MaterialLibrary/LidarRayPatterns/" + fileName);
33 }
34
45 {
46 public:
48 {
49 static constexpr agx::Real frequency = 10.0;
50 static constexpr std::size_t frameSize = 24000;
51 static constexpr std::size_t downsample = 1;
52 static constexpr agx::Real32 rangeMin = 0.1f;
53 static constexpr agx::Real32 rangeMax = 190.0f;
54 static constexpr agx::Real beamDivergence = 0.155f;
55 static constexpr agx::Real beamExitRadius = 0.005f;
56
58 {
59 return agxSensor::RayFileDefinition {agxRayPatternPath("avia.bin"), false, true, true, ','};
60 }
61 };
62
67 LidarModelLivoxAvia(size_t downSample = 1);
68
74 LidarModelLivoxAvia(agxSensor::RayFileDefinition rayFileDefinition, size_t downSample = AviaDefaults::downsample);
75
77
78 protected:
79 virtual ~LidarModelLivoxAvia() = default;
80 };
81
92 {
93 public:
95 {
96 static constexpr agx::Real frequency = 10.0;
97 static constexpr std::size_t frameSize = 45300;
98 static constexpr std::size_t downsample = 1;
99 static constexpr agx::Real32 rangeMin = 0.1f;
100 static constexpr agx::Real32 rangeMax = 150.0f;
101 static constexpr agx::Real beamDivergence = 0.155f;
102 static constexpr agx::Real beamExitRadius = 0.005f;
103
105 {
106 return agxSensor::RayFileDefinition {agxRayPatternPath("hap.bin"), false, true, true, ','};
107 }
108 };
109
114 LidarModelLivoxHap(size_t downSample = 1);
115
121 LidarModelLivoxHap(agxSensor::RayFileDefinition rayFileDefinition, size_t downSample = HapDefaults::downsample);
122
124
125 protected:
126 virtual ~LidarModelLivoxHap() = default;
127 };
128
139 {
140 public:
142 {
143 static constexpr agx::Real frequency = 10.0;
144 static constexpr std::size_t frameSize = 24000;
145 static constexpr std::size_t downsample = 1;
146 static constexpr agx::Real32 rangeMin = 0.1f;
147 static constexpr agx::Real32 rangeMax = 200.0f;
148 static constexpr agx::Real beamDivergence = 0.155f;
149 static constexpr agx::Real beamExitRadius = 0.005f;
150
152 {
153 return agxSensor::RayFileDefinition {agxRayPatternPath("horizon.bin"), false, true, true, ','};
154 }
155 };
156
161 LidarModelLivoxHorizon(size_t downSample = HorizonDefaults::downsample);
162
169 agxSensor::RayFileDefinition rayFileDefinition, size_t downSample = HorizonDefaults::downsample);
170
172
173 protected:
174 virtual ~LidarModelLivoxHorizon() = default;
175 };
176
187 {
188 public:
190 {
191 static constexpr agx::Real frequency = 10.0;
192 static constexpr std::size_t frameSize = 10000;
193 static constexpr std::size_t downsample = 1;
194 static constexpr agx::Real32 rangeMin = 0.1f;
195 static constexpr agx::Real32 rangeMax = 90.0f;
196 static constexpr agx::Real beamDivergence = 0.155f;
197 static constexpr agx::Real beamExitRadius = 0.005f;
198
200 {
201 return agxSensor::RayFileDefinition {agxRayPatternPath("mid40.bin"), false, true, true, ','};
202 }
203 };
204
209 LidarModelLivoxMid40(size_t downSample = Mid40Defaults::downsample);
210
217 agxSensor::RayFileDefinition rayFileDefinition, size_t downSample = Mid40Defaults::downsample);
218
220
221 protected:
222 virtual ~LidarModelLivoxMid40() = default;
223 };
224
235 {
236 public:
238 {
239 static constexpr agx::Real frequency = 10.0;
240 static constexpr std::size_t frameSize = 10000;
241 static constexpr std::size_t downsample = 1;
242 static constexpr agx::Real32 rangeMin = 0.05f;
243 static constexpr agx::Real32 rangeMax = 90.0f;
244 static constexpr agx::Real beamDivergence = 0.155f;
245 static constexpr agx::Real beamExitRadius = 0.005f;
246
248 {
249 return agxSensor::RayFileDefinition {agxRayPatternPath("mid70.bin"), false, true, true, ','};
250 }
251 };
252
257 LidarModelLivoxMid70(size_t downSample = Mid70Defaults::downsample);
258
265 agxSensor::RayFileDefinition rayFileDefinition, size_t downSample = Mid70Defaults::downsample);
266
268
269 protected:
270 virtual ~LidarModelLivoxMid70() = default;
271 };
272
283 {
284 public:
286 {
287 static constexpr agx::Real frequency = 10.0;
288 static constexpr std::size_t frameSize = 20000;
289 static constexpr std::size_t downsample = 1;
290 static constexpr agx::Real32 rangeMin = 0.1f;
291 static constexpr agx::Real32 rangeMax = 40.0f;
292 static constexpr agx::Real beamDivergence = 0.155f;
293 static constexpr agx::Real beamExitRadius = 0.005f;
294
296 {
297 return agxSensor::RayFileDefinition {agxRayPatternPath("mid360.bin"), false, true, true, ','};
298 }
299 };
300
305 LidarModelLivoxMid360(size_t downSample = Mid360Defaults::downsample);
306
313 agxSensor::RayFileDefinition rayFileDefinition, size_t downSample = Mid360Defaults::downsample);
314
316
317 protected:
318 virtual ~LidarModelLivoxMid360() = default;
319 };
320
331 {
332 public:
334 {
335 static constexpr agx::Real frequency = 10.0;
336 static constexpr std::size_t frameSize = 24000;
337 static constexpr std::size_t downsample = 1;
338 static constexpr agx::Real32 rangeMin = 0.1f;
339 static constexpr agx::Real32 rangeMax = 320.0f;
340 static constexpr agx::Real beamDivergence = 0.07f;
341 static constexpr agx::Real beamExitRadius = 0.005f;
342
344 {
345 return agxSensor::RayFileDefinition {agxRayPatternPath("tele.bin"), false, true, true, ','};
346 }
347 };
348
353 LidarModelLivoxTele(size_t downSample = TeleDefaults::downsample);
354
360 LidarModelLivoxTele(agxSensor::RayFileDefinition rayFileDefinition, size_t downSample = TeleDefaults::downsample);
361
363
364 protected:
365 virtual ~LidarModelLivoxTele() = default;
366 };
367}
#define AGXSTREAM_DECLARE_SERIALIZABLE(T)
Use this in a Serializable class to add the required methods Important: Use full namespace in the dec...
Definition: Serializable.h:207
#define AGX_ENVIRONMENT()
Macro for easier access to the Environment singleton.
#define AGXSENSOR_EXPORT
Livox Avia is a mid-range 70 by 77 degree fov lidar with non-repeating pattern.
virtual ~LidarModelLivoxAvia()=default
LidarModelLivoxAvia(agxSensor::RayFileDefinition rayFileDefinition, size_t downSample=AviaDefaults::downsample)
Livox Avia lidar - Constructor with custom rayFileDefinition.
LidarModelLivoxAvia(size_t downSample=1)
Livox Avia lidar - Constructor using the default Livox ray definition file.
Livox HAP is a mid-range 120 by 25 degree fov lidar with non-repeating pattern for automotive applica...
LidarModelLivoxHap(size_t downSample=1)
Livox Hap lidar - Constructor using the default Livox ray definition file.
LidarModelLivoxHap(agxSensor::RayFileDefinition rayFileDefinition, size_t downSample=HapDefaults::downsample)
Livox Hap lidar - Constructor with custom rayFileDefinition.
virtual ~LidarModelLivoxHap()=default
Livox Horizon is a mid-to-long-range 82 by 25 degree fov lidar with non-repeating pattern.
virtual ~LidarModelLivoxHorizon()=default
LidarModelLivoxHorizon(size_t downSample=HorizonDefaults::downsample)
Livox Horizon lidar - Constructor using the default Livox ray definition file.
LidarModelLivoxHorizon(agxSensor::RayFileDefinition rayFileDefinition, size_t downSample=HorizonDefaults::downsample)
Livox Horizon lidar - Constructor with custom rayFileDefinition.
Livox Mid360 is a short range 360 by 59 degree fov lidar with non-repeating pattern.
LidarModelLivoxMid360(agxSensor::RayFileDefinition rayFileDefinition, size_t downSample=Mid360Defaults::downsample)
Livox Mid360 lidar - Constructor with custom rayFileDefinition.
LidarModelLivoxMid360(size_t downSample=Mid360Defaults::downsample)
Livox Mid360 lidar - Constructor using the default Livox ray definition file.
virtual ~LidarModelLivoxMid360()=default
Livox Mid40 is a short-to-mid-range circular 38 degree fov lidar with non-repeating pattern.
LidarModelLivoxMid40(size_t downSample=Mid40Defaults::downsample)
Livox Mid40 lidar - Constructor using the default Livox ray definition file.
LidarModelLivoxMid40(agxSensor::RayFileDefinition rayFileDefinition, size_t downSample=Mid40Defaults::downsample)
Livox Mid40 lidar - Constructor with custom rayFileDefinition.
virtual ~LidarModelLivoxMid40()=default
Livox Mid70 is a short-to-mid-range circular 70 degree fov lidar with non-repeating pattern.
virtual ~LidarModelLivoxMid70()=default
LidarModelLivoxMid70(agxSensor::RayFileDefinition rayFileDefinition, size_t downSample=Mid70Defaults::downsample)
Livox Mid70 lidar - Constructor with custom rayFileDefinition.
LidarModelLivoxMid70(size_t downSample=Mid70Defaults::downsample)
Livox Mid70 lidar - Constructor using the default Livox ray definition file.
Livox Tele is a long range 14 by 16 degree fov lidar with non-repeating pattern.
LidarModelLivoxTele(size_t downSample=TeleDefaults::downsample)
Livox Tele lidar - Constructor using the default Livox ray definition file.
virtual ~LidarModelLivoxTele()=default
LidarModelLivoxTele(agxSensor::RayFileDefinition rayFileDefinition, size_t downSample=TeleDefaults::downsample)
Livox Tele lidar - Constructor with custom rayFileDefinition.
Model of lidar where the ray pattern is read directly from a file.
The agxSensor namespace contains components to model real-time sensors connected to the physics of AG...
std::string agxRayPatternPath(const std::string &fileName)
Simulation implementation of a selection of Livox lidars.
double Real
Definition: Real.h:41
float Real32
Definition: Real.h:43
static agxSensor::RayFileDefinition rayDefinitionFile()
static agxSensor::RayFileDefinition rayDefinitionFile()
static agxSensor::RayFileDefinition rayDefinitionFile()
static agxSensor::RayFileDefinition rayDefinitionFile()
static agxSensor::RayFileDefinition rayDefinitionFile()
static agxSensor::RayFileDefinition rayDefinitionFile()
static agxSensor::RayFileDefinition rayDefinitionFile()