Helios++
Helios software for LiDAR simulations
GroundVehiclePlatform Class Reference

Class representing a ground vehicle platform. More...

#include <GroundVehiclePlatform.h>

Inheritance diagram for GroundVehiclePlatform:
Collaboration diagram for GroundVehiclePlatform:

Public Member Functions

 GroundVehiclePlatform ()
 Default constructor for ground vehicle platform.
 
std::shared_ptr< Platformclone () override
 
void _clone (std::shared_ptr< Platform > p) override
 
void doControlStep (int simFrequency_hz) override
 
void setDestination (glm::dvec3 dest) override
 
- Public Member Functions inherited from SimplePhysicsPlatform
 SimplePhysicsPlatform ()=default
 Simple physics platform default constructor.
 
std::shared_ptr< Platformclone () override
 
void _clone (std::shared_ptr< Platform > p) override
 
void doPhysicsStep (int simFrequency_hz)
 Phyisics step for simple phyisics platform simulation. More...
 
void doSimStep (int simFrequency_hz) override
 
- Public Member Functions inherited from MovingPlatform
 MovingPlatform ()=default
 Moving platform default constructor.
 
void applySettings (std::shared_ptr< PlatformSettings > settings, bool manual) override
 
void initLegManual () override
 
void initLegManualIterative ()
 Method to assist manual leg initialization for moving platform when it fails. More...
 
bool waypointReached () override
 
glm::dvec3 getVelocity () override
 
void setVelocity (glm::dvec3 v)
 Set velocity vector for moving platform. More...
 
bool canMove () override
 
- Public Member Functions inherited from Platform
 Platform ()=default
 Default platform constructor.
 
virtual void prepareSimulation (int simFrequency_hz)
 Prepare the platform to deal with simulation. More...
 
virtual void updateStaticCache ()
 Cache update which only needs to be performed after static modifications. Updating static cache also updates dynamic cache. More...
 
void updateDynamicCache ()
 Cache update which must be performed between simulation steps and after static modifications. Updating static cache also updates dynamic cache but updating dynamic cache does not update static cache. More...
 
virtual void initLeg ()
 Function to initialize leg when working in default mode.
 
virtual void setAttitude (Rotation attitude)
 Set platform attitude. More...
 
virtual void setOrigin (glm::dvec3 origin)
 Set platform origin way point. More...
 
virtual void setAfterDestination (glm::dvec3 next)
 Set platform after destination way point. More...
 
void setPosition (glm::dvec3 pos)
 Set platform position. More...
 
void setOffset (glm::dvec3 pos)
 Set platform position. More...
 
Rotation getAbsoluteMountAttitude ()
 Obtain platform absolute mount attitude. More...
 
glm::dvec3 getAbsoluteMountPosition ()
 Obtain platform absolute mount position. More...
 
Rotation getAttitude ()
 Obtain platform attitude. More...
 
virtual Rotation getDirectionalAttitude ()
 Obtain the directional attitude. While the attitude represents the platform orientation, the directional attitude represents the movement direction. More...
 
virtual glm::dvec3 getCurrentDirection ()
 Obtain platform current direction.
 
glm::dvec3 getPosition ()
 Obtain platform position. More...
 
glm::dvec3 getVectorToTarget ()
 Obtain platform vector to target (cache) More...
 
virtual void getRollPitchYaw (double &roll, double &pitch, double &yaw)
 Obtain platform roll, pitch and yaw angles. Notice not all platforms track those angles. More...
 
virtual void setHeadingRad (double rad)
 Set the heading angle in radians. This angle can be understood as yaw in most cases. More...
 
virtual double getHeadingRad ()
 Obtain platform heading angle in radians, which can be understood as yaw in most cases. More...
 
virtual bool canStopAndTurn ()
 Check if platform support stop and turn mode (true) or not (false) More...
 
- Public Member Functions inherited from Asset
std::string getLocationString ()
 Obtain asset location string. More...
 

Private Attributes

double mEngineForceMax = 0.2
 Max force for vehicle engine.
 
double mEngineForceCurrent = 0
 Current force of vehicle engine.
 
double mEngineForceTarget = 0
 Target force for vehicle engine.
 
double mComplexTurnThreshold_rad = M_PI / 5
 Turning threshold in radians.
 
int mTurnMode = 0
 Turn mode specification. More...
 
glm::dvec3 mTempWaypoint
 Temporary way point to assist ground vehicle movement.
 

Additional Inherited Members

- Public Attributes inherited from SimplePhysicsPlatform
double mCfg_drag = 1
 Drag magnitude.
 
- Public Attributes inherited from Platform
glm::dvec3 cfg_device_relativeMountPosition = glm::dvec3(0, 0, 0)
 Device mount position relative to the platform.
 
Rotation cfg_device_relativeMountAttitude = Rotation(glm::dvec3(0, 1, 0), 0)
 Device mount attitude relative to the platform.
 
double lastCheckZ = 0
 Not used at the moment. Might be removed in the future.
 
glm::dvec3 lastGroundCheck = glm::dvec3(0, 0, 0)
 Not used at the moment. Might be removed in the future.
 
std::shared_ptr< Scenescene = nullptr
 Scene where the platform belongs to.
 
std::shared_ptr< NoiseSource< double > > positionXNoiseSource = nullptr
 Noise source for x component of platform position.
 
std::shared_ptr< NoiseSource< double > > positionYNoiseSource = nullptr
 Noise source for y component of platform position.
 
std::shared_ptr< NoiseSource< double > > positionZNoiseSource = nullptr
 Noise source for z component of platform position.
 
std::shared_ptr< NoiseSource< double > > attitudeXNoiseSource = nullptr
 Noise source for x component of platform attitude.
 
std::shared_ptr< NoiseSource< double > > attitudeYNoiseSource = nullptr
 Noise source for y component of platform attitude.
 
std::shared_ptr< NoiseSource< double > > attitudeZNoiseSource = nullptr
 Noise source for z component of platform attitude.
 
double dmax = std::numeric_limits<double>::max()
 Not used at the moment. Might be removed in the future.
 
glm::dvec3 prevWrittenPos = glm::dvec3(dmax, dmax, dmax)
 Not used at the moment. Might be removed in the future.
 
double cfg_settings_movePerSec_m = 0
 How meters per seconds the platform moves. NOTICE this behavior must be overridden by platforms implementing its own physics model.
 
glm::dvec3 originWaypoint = glm::dvec3(0, 0, 0)
 Origin waypoint.
 
glm::dvec3 targetWaypoint = glm::dvec3(0, 0, 0)
 Target waypoint (destination)
 
glm::dvec3 nextWaypoint = glm::dvec3(0, 0, 0)
 Waypoint after target. For the last target, waypoint after target is equal to the target itself.
 
bool onGround = false
 Flag to specify if the platform must be placed on ground (true) or not (false)
 
bool stopAndTurn = false
 Flag to specify if platform must work in stop and turn mode (true) or not (false). Not all platforms support this mode, so it will only be used when possible.
 
bool smoothTurn = false
 Flag to specify if platform must work in smooth turn mode (true) or not (false). Not all platforms support this mode, so it will only be used when possible.
 
bool slowdownEnabled = true
 Flag to specify if slowdown stage must be enabled (true) or not (false). Not all platforms have a slowdown stage, so this flag will only be applied when it is necessary.
 
glm::dvec3 position = glm::dvec3(0, 0, 0)
 Platform 3D position.
 
Rotation attitude = Rotation(Directions::up, 0)
 Platform 3D attitude.
 
bool mSetOrientationOnLegInit = false
 Not used at the moment. Might be removed in the future.
 
bool writeNextTrajectory = true
 Flag to specify if next trajectory needs to be written (true) or not (false)
 
glm::dvec3 cached_absoluteMountPosition = glm::dvec3(0, 0, 0)
 Cached absolute mount position.
 
Rotation cached_absoluteMountAttitude = Rotation(glm::dvec3(0, 1, 0), 0)
 Cached absolute mount attitude.
 
glm::dvec3 cached_dir_current = glm::dvec3(0, 0, 0)
 Current director vector over XY plane.
 
glm::dvec3 cached_dir_current_xy = glm::dvec3(0, 0, 0)
 Current director vector over XY plane (z is always 0)
 
glm::dvec3 cached_vectorToTarget = glm::dvec3(0, 0, 0)
 Distance vector from current position to target.
 
glm::dvec3 cached_vectorToTarget_xy = glm::dvec3(0, 0, 0)
 Distance vector from current position to target over XY plane (z is always 0)
 
double cached_distanceToTarget_xy = 0
 Distance on XY plane between current position and target.
 
glm::dvec3 cached_originToTargetDir_xy = glm::dvec3(0, 0, 0)
 Director vector from origin to target over the XY plane (z is always 0).
 
glm::dvec3 cached_targetToNextDir_xy = glm::dvec3(0, 0, 0)
 Director vector from target to after target waypoint over the XY plane (z is always 0).
 
double cached_endTargetAngle_xy
 Angle between director vector from origin to target and director vector from target to waypoint after target.
 
double cached_currentAngle_xy
 Angle between current director vector and director vector from target to waypoint after target.
 
double cached_originToTargetAngle_xy
 Angle in \([0, 2\pi)\) which identifies director vector from origin waypoint to target waypoint.
 
double cached_targetToNextAngle_xy
 Angle in \([0, 2\pi)\) which identifies director vector from target waypoint to waypoint after target.
 
- Public Attributes inherited from Asset
std::string id = ""
 Asset identifier.
 
std::string name = "Unnamed Asset"
 Asset name.
 
std::string sourceFilePath = ""
 Path to asset file.
 
- Protected Attributes inherited from SimplePhysicsPlatform
glm::dvec3 mEngineForce = glm::dvec3(0, 0, 0)
 Engine force vector.
 
glm::dvec3 mCfg_g_accel = glm::dvec3(0, 0, -9.81)
 Gravity acceleration vector.
 

Detailed Description

Class representing a ground vehicle platform.

Member Function Documentation

◆ doControlStep()

void GroundVehiclePlatform::doControlStep ( int  simFrequency_hz)
overridevirtual
See also
SimplePhyisicsPlatform::doControlStep

Reimplemented from SimplePhysicsPlatform.

◆ setDestination()

void GroundVehiclePlatform::setDestination ( glm::dvec3  dest)
overridevirtual
See also
Platform::setDestination
Parameters
dest

Reimplemented from Platform.

Member Data Documentation

◆ mTurnMode

int GroundVehiclePlatform::mTurnMode = 0
private

Turn mode specification.

  • 0 for normal forward driving and wide angle curves
  • 1 for first stage of two-step turn for narrow angle curves
  • 2 for second stage of two-step turn for narrow angle curves

The documentation for this class was generated from the following files: