8#ifndef SEN_UTIL_DR_SETTABLE_DEAD_RECKONER_H
9#define SEN_UTIL_DR_SETTABLE_DEAD_RECKONER_H
75 [[nodiscard]] T&
object() noexcept;
78 [[nodiscard]] const T&
object() const noexcept;
102 const
f64 orientationThresholdCos;
114 , threshold_ {thresholds}
139 obj_.setNextSpatial(toSpatialVariant(
situation, threshold_));
169 lastTimeStamp_ = timeStamp;
171 obj_.setNextSpatial(toSpatialVariant(
situation, threshold_));
182 if (!isMoving && !isAccelerating)
194 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:112
DeadReckonerTemplateBase(DrConfig config={})
Definition dead_reckoner_base.h:136
std::variant_alternative_t< 4U, SpatialVariant > FvsSpatial
Definition dead_reckoner_base.h:114
decltype(std::declval< RvsSpatial >().orientation) RprOrientation
Definition dead_reckoner_base.h:116
decltype(std::declval< RvsSpatial >().worldLocation) RprLocation
Definition dead_reckoner_base.h:115
std::variant_alternative_t< 1U, SpatialVariant > FpsSpatial
Definition dead_reckoner_base.h:111
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:141
std::remove_const_t< std::remove_reference_t< decltype(std::declval< T >().getSpatial())> > SpatialVariant
Definition dead_reckoner_base.h:109
decltype(std::declval< RvsSpatial >().accelerationVector) RprAcceleration
Definition dead_reckoner_base.h:118
std::variant_alternative_t< 0U, SpatialVariant > StaticSpatial
Definition dead_reckoner_base.h:110
std::variant_alternative_t< 3U, SpatialVariant > RvsSpatial
Definition dead_reckoner_base.h:113
decltype(std::declval< RvsSpatial >().angularVelocity) RprAngularVelocity
Definition dead_reckoner_base.h:119
decltype(std::declval< RvsSpatial >().velocityVector) RprVelocity
Definition dead_reckoner_base.h:117
typename Parent::SpatialVariant SpatialVariant
Definition settable_dead_reckoner.h:61
bool setSpatial(const Situation &situation)
Updates the spatial property of the object when the extrapolation error exceeds the threshold....
Definition settable_dead_reckoner.h:132
typename Parent::FvsSpatial FvsSpatial
Definition settable_dead_reckoner.h:66
typename Parent::RprVelocity RprVelocity
Definition settable_dead_reckoner.h:69
typename Parent::StaticSpatial StaticSpatial
Definition settable_dead_reckoner.h:62
T & object() noexcept
Returns a mutable reference to the RPR object whose position is extrapolated.
Definition settable_dead_reckoner.h:120
typename Parent::RprAcceleration RprAcceleration
Definition settable_dead_reckoner.h:70
SettableDeadReckoner(T &object, DrThreshold thresholds={})
Definition settable_dead_reckoner.h:112
DeadReckonerTemplateBase< T > Parent
Definition settable_dead_reckoner.h:60
typename Parent::RprAngularVelocity RprAngularVelocity
Definition settable_dead_reckoner.h:71
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:165
typename Parent::FpsSpatial FpsSpatial
Definition settable_dead_reckoner.h:63
~SettableDeadReckoner() override=default
typename Parent::RvsSpatial RvsSpatial
Definition settable_dead_reckoner.h:65
typename Parent::RprOrientation RprOrientation
Definition settable_dead_reckoner.h:68
typename Parent::RprLocation RprLocation
Definition settable_dead_reckoner.h:67
typename Parent::RpsSpatial RpsSpatial
Definition settable_dead_reckoner.h:64
ReferenceSystem referenceSystem
Definition settable_dead_reckoner.h:42
Location worldLocation
Position in ECEF.
Definition algorithms.h:156
Velocity velocityVector
Velocity vector with respect to ECEF or body reference system (depending on the reference system of t...
Definition algorithms.h:163
AngleRadians orientationThreshold
Definition settable_dead_reckoner.h:41
Orientation orientation
Orientation of the body reference system (x forward, y right, z down) with respect to ECEF.
Definition algorithms.h:159
Acceleration accelerationVector
Acceleration vector with respect to ECEF or body reference system (depending on the reference system ...
Definition algorithms.h:170
LengthMeters distanceThreshold
Definition settable_dead_reckoner.h:40
bool isFrozen
When true, no extrapolation is performed because the entity is frozen.
Definition algorithms.h:150
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:122
bool isRotating(const AngularVelocity &omega)
Returns true when angular velocity acceleration is not null.
Situation toSituation(const GeodeticSituation &value) noexcept
Converts a situation from geodetic to ECEF.
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:212
@ drRVB
Definition algorithms.h:218
@ drFPB
Definition algorithms.h:216
@ drRVW
Definition algorithms.h:214
@ drFVB
Definition algorithms.h:219
@ drRPW
Definition algorithms.h:213
@ drRPB
Definition algorithms.h:217
@ drStatic
Definition algorithms.h:211
@ drFVW
Definition algorithms.h:215
How far the extrapolation may drift from the data before the Spatial is written: a distance per axis,...
Definition settable_dead_reckoner.h:39
GeodeticSituation structure with the following parameters:
Definition algorithms.h:180
Situation structure with the following parameters:
Definition algorithms.h:148
uint32_t u32
Definition numbers.h:25
float64_t f64
Definition numbers.h:29
Definition iterator_adapters.h:16