8#ifndef SEN_UTIL_DR_SETTABLE_DEAD_RECKONER_H
9#define SEN_UTIL_DR_SETTABLE_DEAD_RECKONER_H
73 [[nodiscard]] T&
object() noexcept;
76 [[nodiscard]] const T&
object() const noexcept;
100 const
f64 orientationThresholdCos;
112 , threshold_ {thresholds}
137 obj_.setNextSpatial(toSpatialVariant(
situation, threshold_));
152 obj_.setNextSpatial(toSpatialVariant({
situation.isFrozen,
168 lastTimeStamp_ = timeStamp;
170 obj_.setNextSpatial(toSpatialVariant(
situation, threshold_));
181 if (!isMoving && !isAccelerating)
193 if (isMoving && !isAccelerating)
A point in time.
Definition timestamp.h:26
virtual Situation situation(sen::TimeStamp timeStamp)
Returns the extrapolated/smoothed situation of the object at the timestamp introduced as argument,...
std::variant_alternative_t< 2U, SpatialVariant > RpsSpatial
Definition dead_reckoner_base.h:110
DeadReckonerTemplateBase(DrConfig config={})
Definition dead_reckoner_base.h:134
std::variant_alternative_t< 4U, SpatialVariant > FvsSpatial
Definition dead_reckoner_base.h:112
decltype(std::declval< RvsSpatial >().orientation) RprOrientation
Definition dead_reckoner_base.h:114
decltype(std::declval< RvsSpatial >().worldLocation) RprLocation
Definition dead_reckoner_base.h:113
std::variant_alternative_t< 1U, SpatialVariant > FpsSpatial
Definition dead_reckoner_base.h:109
static Situation extrapolate(const SpatialVariant &spatial, sen::TimeStamp time, sen::TimeStamp lastTimeStamp)
Returns the extrapolated situation of the RPR Entity given its Spatial field and two timestamps that ...
Definition dead_reckoner_base.h:139
std::remove_const_t< std::remove_reference_t< decltype(std::declval< T >().getSpatial())> > SpatialVariant
Definition dead_reckoner_base.h:107
decltype(std::declval< RvsSpatial >().accelerationVector) RprAcceleration
Definition dead_reckoner_base.h:116
std::variant_alternative_t< 0U, SpatialVariant > StaticSpatial
Definition dead_reckoner_base.h:108
std::variant_alternative_t< 3U, SpatialVariant > RvsSpatial
Definition dead_reckoner_base.h:111
decltype(std::declval< RvsSpatial >().angularVelocity) RprAngularVelocity
Definition dead_reckoner_base.h:117
decltype(std::declval< RvsSpatial >().velocityVector) RprVelocity
Definition dead_reckoner_base.h:115
typename Parent::SpatialVariant SpatialVariant
Definition settable_dead_reckoner.h:59
typename Parent::FvsSpatial FvsSpatial
Definition settable_dead_reckoner.h:64
typename Parent::RprVelocity RprVelocity
Definition settable_dead_reckoner.h:67
typename Parent::StaticSpatial StaticSpatial
Definition settable_dead_reckoner.h:60
T & object() noexcept
Returns a mutable reference to the RPR object whose position is extrapolated.
Definition settable_dead_reckoner.h:118
typename Parent::RprAcceleration RprAcceleration
Definition settable_dead_reckoner.h:68
SettableDeadReckoner(T &object, DrThreshold thresholds={})
Definition settable_dead_reckoner.h:110
DeadReckonerTemplateBase< T > Parent
Definition settable_dead_reckoner.h:58
typename Parent::RprAngularVelocity RprAngularVelocity
Definition settable_dead_reckoner.h:69
void setFrozen(sen::TimeStamp timeStamp, bool value)
Directly sets the frozen state of the object's spatial to true/false. The timestamp is needed to cohe...
Definition settable_dead_reckoner.h:164
typename Parent::FpsSpatial FpsSpatial
Definition settable_dead_reckoner.h:61
~SettableDeadReckoner() override=default
typename Parent::RvsSpatial RvsSpatial
Definition settable_dead_reckoner.h:63
void setSpatial(const Situation &situation)
Updates the spatial property of the object if the update period is exceeded or if the extrapolation e...
Definition settable_dead_reckoner.h:130
typename Parent::RprOrientation RprOrientation
Definition settable_dead_reckoner.h:66
typename Parent::RprLocation RprLocation
Definition settable_dead_reckoner.h:65
typename Parent::RpsSpatial RpsSpatial
Definition settable_dead_reckoner.h:62
ReferenceSystem referenceSystem
Definition settable_dead_reckoner.h:41
Location worldLocation
Position in ECEF.
Definition algorithms.h:151
Velocity velocityVector
Velocity vector with respect to ECEF or body reference system (depending on the reference system of t...
Definition algorithms.h:158
AngleRadians orientationThreshold
Definition settable_dead_reckoner.h:40
Orientation orientation
Orientation of the body reference system (x forward, y right, z down) with respect to ECEF.
Definition algorithms.h:154
Acceleration accelerationVector
Acceleration vector with respect to ECEF or body reference system (depending on the reference system ...
Definition algorithms.h:165
LengthMeters distanceThreshold
Definition settable_dead_reckoner.h:39
bool isFrozen
When true, no extrapolation is performed because the entity is frozen.
Definition algorithms.h:145
Location toEcef(const GeodeticWorldLocation &latLonAlt) noexcept
Translates from Geodetic (LatLonAlt) to ECEF WorldLocation coordinates.
bool maxRotationExceeded(const Orientation &newOrientation, const Orientation &extrapolatedOrientation, f64 threshold)
Returns true when the rotation threshold has been exceeded.
Orientation nedToEcef(const Orientation &value, const GeodeticWorldLocation &latLonAlt) noexcept
Translates the Orientation in euler angles from NED to ECEF using quaternions.
T toRpr(const Location &value)
Translates a Location struct to a RPR WorldLocation given as template argument.
Definition dead_reckoner_impl.h:110
bool isRotating(const AngularVelocity &omega)
Returns true when angular velocity acceleration is not null.
bool isMoving(const Velocity &velocity)
Returns true when entity velocity is not null.
bool maxDistanceExceeded(const Location &newPosition, const Location &extrapolatedPosition, f64 threshold)
Returns true when the distance threshold has been exceeded.
bool isAccelerating(const Acceleration &acceleration)
Returns true when entity acceleration is not null.
ReferenceSystem
Enumeration of the reference system: world-centered or body-centered.
Definition settable_dead_reckoner.h:30
@ world
Definition settable_dead_reckoner.h:31
@ body
Definition settable_dead_reckoner.h:32
@ drFPW
Definition algorithms.h:204
@ drRVB
Definition algorithms.h:210
@ drFPB
Definition algorithms.h:208
@ drRVW
Definition algorithms.h:206
@ drFVB
Definition algorithms.h:211
@ drRPW
Definition algorithms.h:205
@ drRPB
Definition algorithms.h:209
@ drStatic
Definition algorithms.h:203
@ drFVW
Definition algorithms.h:207
Threshold configuration structure with the position error threshold (maximum distance between extrapo...
Definition settable_dead_reckoner.h:38
GeodeticSituation structure with the following parameters:
Definition algorithms.h:173
Situation structure with the following parameters:
Definition algorithms.h:143
uint32_t u32
Definition numbers.h:25
float64_t f64
Definition numbers.h:29
Definition iterator_adapters.h:16