Helios++
Helios software for LiDAR simulations
SimplePhysicsPlatform Class Reference

Class representing a simple phyiscs platform. More...

#include <SimplePhysicsPlatform.h>

Inheritance diagram for SimplePhysicsPlatform:
Collaboration diagram for SimplePhysicsPlatform:

Public Member Functions

 SimplePhysicsPlatform ()=default
 Simple physics platform default constructor.
 
std::shared_ptr< Platformclone () override
 
void _clone (std::shared_ptr< Platform > p) override
 
void prepareSimulation (int simFrequency_hz) override
 
void prepareLeg (int const simFrequency_hz) override
 
void doPhysicsStep (int simFrequency_hz)
 Phyisics step for simple phyisics platform simulation. More...
 
void doSimStep (int simFrequency_hz) override
 
virtual void doControlStep (int simFrequency_hz)
 Control step for simple phyisics platform simulation. More...
 
void configureStepMagnitude (int const simFrequency_hz)
 Configure the step magnitude for current moverPerSec and given simulation frequency. More...
 
void checkSpeedLimit ()
 
- 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 () const override
 
- Public Member Functions inherited from Platform
 Platform ()=default
 Default platform constructor.
 
std::shared_ptr< PlatformSettingsretrieveCurrentSettings ()
 Retrieve current platform settings and build a new PlatformSettings object with them. 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 setDestination (glm::dvec3 dest)
 Set platform destination 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 () const
 Obtain platform absolute mount attitude. More...
 
glm::dvec3 getAbsoluteMountPosition () const
 Obtain platform absolute mount position. More...
 
Rotation getAttitude () const
 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 () const
 Obtain platform position. More...
 
glm::dvec3 getVectorToTarget () const
 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 () const
 Check if platform support stop and turn mode (true) or not (false) More...
 
virtual bool isInterpolated () const
 Check if platform is simulated (false) or interpolated (true) More...
 
- Public Member Functions inherited from Asset
std::string getLocationString ()
 Obtain asset location string. More...
 
virtual bool isEgg () const
 Check whether the asset is an EggAsset or not. More...
 

Public Attributes

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
 Device mount attitude relative to the platform. More...
 
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

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.
 
double movePerSec_m_stepMagnitude = 0.0
 How many meter does the platform move in each simulation step.
 
bool engineLimitReached = false
 Flag to store if the engine max thrust was reached in a given leg. The value is reset en each leg.
 
bool userSpeedLimitReached = false
 Flag to store if the user-provided movePerSec_m speed was achieved for a given leg.
 

Detailed Description

Class representing a simple phyiscs platform.

Member Function Documentation

◆ configureStepMagnitude()

void SimplePhysicsPlatform::configureStepMagnitude ( int const  simFrequency_hz)

Configure the step magnitude for current moverPerSec and given simulation frequency.

Let \(v\) be the amount of movement in \(\mathrm{m}/\mathrm{s}\) (meters per second). Then, the step magnitude \(s\) can be defined for a given simulation frequency \(F\) in hertz:

\[ s = \frac{v}{F} \]

◆ doControlStep()

void SimplePhysicsPlatform::doControlStep ( int  simFrequency_hz)
virtual

Control step for simple phyisics platform simulation.

Parameters
simFrequency_hzSimulation frequency

Reimplemented in HelicopterPlatform, and GroundVehiclePlatform.

◆ doPhysicsStep()

void SimplePhysicsPlatform::doPhysicsStep ( int  simFrequency_hz)

Phyisics step for simple phyisics platform simulation.

Parameters
simFrequency_hzSimulation frequency

◆ doSimStep()

void SimplePhysicsPlatform::doSimStep ( int  simFrequency_hz)
overridevirtual
See also
Platform::doSimStep

Reimplemented from MovingPlatform.

◆ prepareLeg()

void SimplePhysicsPlatform::prepareLeg ( int const  simFrequency_hz)
overridevirtual
See also
Platform::prepareLeg

Reimplemented from Platform.

◆ prepareSimulation()

void SimplePhysicsPlatform::prepareSimulation ( int  simFrequency_hz)
overridevirtual
See also
Platform::prepareSimulation

Reimplemented from Platform.


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