Sen API
Sen Libraries
Loading...
Searching...
No Matches
sen::util::DeadReckoner< T > Class Template Reference

Enables the user to predict an object’s position and movement at any future time applying dead reckoning. It adheres to the algorithms specified in IEEE 1278_1:2012, Annex E. More...

#include <dead_reckoner.h>

Inheritance diagram for sen::util::DeadReckoner< T >:

Public Types

using Parent = DeadReckonerTemplateBase<T>
using SpatialVariant = typename Parent::SpatialVariant
using StaticSpatial = typename Parent::StaticSpatial
using FpsSpatial = typename Parent::FpsSpatial
using RpsSpatial = typename Parent::RpsSpatial
using RvsSpatial = typename Parent::RvsSpatial
using FvsSpatial = typename Parent::FvsSpatial
using RprLocation = typename Parent::RprLocation
using RprOrientation = typename Parent::RprOrientation
using RprVelocity = typename Parent::RprVelocity
using RprAcceleration = typename Parent::RprAcceleration
using RprAngularVelocity = typename Parent::RprAngularVelocity
using SituationProcessor = std::function<Situation(sen::TimeStamp)>
using GeodeticSituationProcessor = std::function<GeodeticSituation(sen::TimeStamp)>

Public Member Functions

 DeadReckoner (const T &object, DrConfig config={})
 Constructor for the DeadReckoner where an object inheriting from rpr::BaseEntity is inputted as a reference. This is the easiest version of the API to instantiate a DeadReckoner.
 ~DeadReckoner () override=default
Situation situation (sen::TimeStamp timeStamp) override
 Returns the extrapolated/smoothed situation of the object at the timestamp introduced as argument, expressed in the following coordinates:
GeodeticSituation geodeticSituation (sen::TimeStamp timeStamp) override
 Returns the extrapolated/smoothed situation of the object at the timestamp introduced as argument, expressed in the following coordinates:
T & getObject () noexcept
 Provides direct mutable access to the internal object managed by this instance of the DeadReckoner.
void updateSituation (const Situation &value)
 Updates the last known real time Situation. A valid timestamp is needed inside the Situation provided as argument.
void updateGeodeticSituation (const GeodeticSituation &value)
 Updates the last known real time GeodeticSituation. A valid timestamp is needed inside the GeodeticSituation provided as argument.
const DrConfig & getConfig () const noexcept
void setConfig (const DrConfig &config)

Static Public Member Functions

static Situation toSituation (const SpatialVariant &spatial, sen::TimeStamp timeStamp={})
 Translates a SpatialVariant to a Situation struct.
static GeodeticSituation toGeodeticSituation (const SpatialVariant &spatial, sen::TimeStamp timeStamp={})
 Translates a SpatialVariant to a GeodeticSituation struct.

Protected Member Functions

const Situation & getSmoothSituation () const noexcept
void smooth (const Situation &update)
const Situation & smoothIfEnabled (const Situation &update)
 Smooths the update when configured to and returns what to publish. With smoothing off the walk is skipped and the returned reference is the argument itself.
void invalidateCache ()
bool isSituationCached (sen::TimeStamp timeStamp) const noexcept
void setCachedSituation (const Situation &situation)
const Situation & getCachedSituation () const noexcept
bool isGeodeticSituationCached (sen::TimeStamp timeStamp) const noexcept
void setCachedGeodeticSituation (const GeodeticSituation &situation)
const GeodeticSituation & getCachedGeodeticSituation () const noexcept

Static Protected Member Functions

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 define a time delta for the extrapolation.

Detailed Description

template<typename T>
class sen::util::DeadReckoner< T >

Enables the user to predict an object’s position and movement at any future time applying dead reckoning. It adheres to the algorithms specified in IEEE 1278_1:2012, Annex E.

Template Parameters
Trpr::BaseEntityInterface or a subclass of it

Member Typedef Documentation

◆ Parent

template<typename T>
using sen::util::DeadReckoner< T >::Parent = DeadReckonerTemplateBase<T>

◆ SpatialVariant

template<typename T>
using sen::util::DeadReckoner< T >::SpatialVariant = typename Parent::SpatialVariant

◆ StaticSpatial

template<typename T>
using sen::util::DeadReckoner< T >::StaticSpatial = typename Parent::StaticSpatial

◆ FpsSpatial

template<typename T>
using sen::util::DeadReckoner< T >::FpsSpatial = typename Parent::FpsSpatial

◆ RpsSpatial

template<typename T>
using sen::util::DeadReckoner< T >::RpsSpatial = typename Parent::RpsSpatial

◆ RvsSpatial

template<typename T>
using sen::util::DeadReckoner< T >::RvsSpatial = typename Parent::RvsSpatial

◆ FvsSpatial

template<typename T>
using sen::util::DeadReckoner< T >::FvsSpatial = typename Parent::FvsSpatial

◆ RprLocation

template<typename T>
using sen::util::DeadReckoner< T >::RprLocation = typename Parent::RprLocation

◆ RprOrientation

template<typename T>
using sen::util::DeadReckoner< T >::RprOrientation = typename Parent::RprOrientation

◆ RprVelocity

template<typename T>
using sen::util::DeadReckoner< T >::RprVelocity = typename Parent::RprVelocity

◆ RprAcceleration

template<typename T>
using sen::util::DeadReckoner< T >::RprAcceleration = typename Parent::RprAcceleration

◆ RprAngularVelocity

template<typename T>
using sen::util::DeadReckoner< T >::RprAngularVelocity = typename Parent::RprAngularVelocity

◆ SituationProcessor

template<typename T>
using sen::util::DeadReckoner< T >::SituationProcessor = std::function<Situation(sen::TimeStamp)>

◆ GeodeticSituationProcessor

template<typename T>
using sen::util::DeadReckoner< T >::GeodeticSituationProcessor = std::function<GeodeticSituation(sen::TimeStamp)>

Constructor & Destructor Documentation

◆ DeadReckoner()

template<typename T>
sen::util::DeadReckoner< T >::DeadReckoner ( const T & object,
DrConfig config = {} )
inlineexplicit

Constructor for the DeadReckoner where an object inheriting from rpr::BaseEntity is inputted as a reference. This is the easiest version of the API to instantiate a DeadReckoner.

◆ ~DeadReckoner()

template<typename T>
sen::util::DeadReckoner< T >::~DeadReckoner ( )
overridedefault

Member Function Documentation

◆ situation()

template<typename T>
Situation sen::util::DeadReckoner< T >::situation ( sen::TimeStamp timeStamp)
inlinenodiscardoverridevirtual

Returns the extrapolated/smoothed situation of the object at the timestamp introduced as argument, expressed in the following coordinates:

  • World position: ECEF coordinates
  • Orientation: Euler angles of the body reference system (x forward, y right, z down) with respect to ECEF
  • Velocity: In world coordinates for world-centered DR algorithms and in body coordinates for body-centered algorithms
  • Acceleration: In world coordinates for world-centered DR algorithms and in body coordinates for body-centered algorithms
  • AngularVelocity: In body coordinates.
  • AngularAcceleration: In body coordinates.

Reimplemented from sen::util::DeadReckonerBase.

◆ geodeticSituation()

template<typename T>
GeodeticSituation sen::util::DeadReckoner< T >::geodeticSituation ( sen::TimeStamp timeStamp)
inlinenodiscardoverridevirtual

Returns the extrapolated/smoothed situation of the object at the timestamp introduced as argument, expressed in the following coordinates:

  • World position: Geodetic Latitude, Longitude and Altitude
  • Orientation: Euler angles of the body reference system (x forward, y right, z down) with respect to NED
  • Velocity: In NED coordinates for world-referenced algorithms, in body coordinates for body-referenced algorithms.
  • Acceleration: In NED coordinates for world-referenced algorithms, in body coordinates for body-referenced algorithms.
  • AngularVelocity: In body coordinates.
  • AngularAcceleration: In body coordinates.

Reimplemented from sen::util::DeadReckonerBase.

◆ getObject()

template<typename T>
T & sen::util::DeadReckoner< T >::getObject ( )
inlinenodiscardnoexcept

Provides direct mutable access to the internal object managed by this instance of the DeadReckoner.

◆ toSituation()

template<typename T>
Situation sen::util::DeadReckoner< T >::toSituation ( const SpatialVariant & spatial,
sen::TimeStamp timeStamp = {} )
inlinestaticnodiscard

Translates a SpatialVariant to a Situation struct.

◆ toGeodeticSituation()

template<typename T>
GeodeticSituation sen::util::DeadReckoner< T >::toGeodeticSituation ( const SpatialVariant & spatial,
sen::TimeStamp timeStamp = {} )
inlinestaticnodiscard

Translates a SpatialVariant to a GeodeticSituation struct.

◆ extrapolate()

template<typename T>
Situation sen::util::DeadReckonerTemplateBase< T >::extrapolate ( const SpatialVariant & spatial,
sen::TimeStamp time,
sen::TimeStamp lastTimeStamp )
inlinestaticnodiscardprotectedinherited

Returns the extrapolated situation of the RPR Entity given its Spatial field and two timestamps that define a time delta for the extrapolation.

◆ updateSituation()

void sen::util::DeadReckonerBase::updateSituation ( const Situation & value)
inherited

Updates the last known real time Situation. A valid timestamp is needed inside the Situation provided as argument.

◆ updateGeodeticSituation()

void sen::util::DeadReckonerBase::updateGeodeticSituation ( const GeodeticSituation & value)
inherited

Updates the last known real time GeodeticSituation. A valid timestamp is needed inside the GeodeticSituation provided as argument.

◆ getConfig()

const DrConfig & sen::util::DeadReckonerBase::getConfig ( ) const
nodiscardnoexceptinherited

◆ setConfig()

void sen::util::DeadReckonerBase::setConfig ( const DrConfig & config)
inherited

◆ getSmoothSituation()

const Situation & sen::util::DeadReckonerBase::getSmoothSituation ( ) const
nodiscardprotectednoexceptinherited

◆ smooth()

void sen::util::DeadReckonerBase::smooth ( const Situation & update)
protectedinherited

◆ smoothIfEnabled()

const Situation & sen::util::DeadReckonerBase::smoothIfEnabled ( const Situation & update)
nodiscardprotectedinherited

Smooths the update when configured to and returns what to publish. With smoothing off the walk is skipped and the returned reference is the argument itself.

◆ invalidateCache()

void sen::util::DeadReckonerBase::invalidateCache ( )
inlineprotectedinherited

◆ isSituationCached()

bool sen::util::DeadReckonerBase::isSituationCached ( sen::TimeStamp timeStamp) const
inlinenodiscardprotectednoexceptinherited

◆ setCachedSituation()

void sen::util::DeadReckonerBase::setCachedSituation ( const Situation & situation)
inlineprotectedinherited

◆ getCachedSituation()

const Situation & sen::util::DeadReckonerBase::getCachedSituation ( ) const
inlinenodiscardprotectednoexceptinherited

◆ isGeodeticSituationCached()

bool sen::util::DeadReckonerBase::isGeodeticSituationCached ( sen::TimeStamp timeStamp) const
inlinenodiscardprotectednoexceptinherited

◆ setCachedGeodeticSituation()

void sen::util::DeadReckonerBase::setCachedGeodeticSituation ( const GeodeticSituation & situation)
inlineprotectedinherited

◆ getCachedGeodeticSituation()

const GeodeticSituation & sen::util::DeadReckonerBase::getCachedGeodeticSituation ( ) const
inlinenodiscardprotectednoexceptinherited

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