Sen API
Sen Libraries
Loading...
Searching...
No Matches
Dead Reckoning Library
Collaboration diagram for Dead Reckoning Library:

Classes

struct  sen::util::DrConfig
 Length in meters. More...
struct  sen::util::Location
 World Location struct. More...
struct  sen::util::GeodeticWorldLocation
 World location in geodetic coordinates. More...
struct  sen::util::Orientation
 Orientation struct. More...
struct  sen::util::Velocity
 Velocity struct. More...
struct  sen::util::Acceleration
 Acceleration struct. More...
struct  sen::util::AngularVelocity
 AngularVelocity struct. More...
struct  sen::util::AngularAcceleration
 AngularAcceleration struct. More...
struct  sen::util::Situation
 Situation structure with the following parameters: More...
struct  sen::util::GeodeticSituation
 GeodeticSituation structure with the following parameters: More...
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. More...
class  sen::util::DeadReckonerBase
 Extrapolates the Situation of an entity at a certain time. The extrapolation is smoothed by default unless the user specifies otherwise. More...
class  sen::util::DeadReckonerTemplateBase< T >
 Base class for the DeadReckoner and SettableDeadReckoner classes. More...
struct  sen::util::DrThreshold
 Threshold configuration structure with the position error threshold (maximum distance between extrapolation and data) and the entity dynamics (speed and changes of direction). More...
class  sen::util::SettableDeadReckoner< T >
 Allows the user to get the extrapolated situation of an object and to set the Spatial when the error of the extrapolation exceeds a configurable threshold. More...

Enumerations

enum class  sen::util::SpatialAlgorithm {
  sen::util::SpatialAlgorithm::drStatic = 0 , sen::util::SpatialAlgorithm::drFPW = 1 , sen::util::SpatialAlgorithm::drRPW = 2 , sen::util::SpatialAlgorithm::drRVW = 3 ,
  sen::util::SpatialAlgorithm::drFVW = 4 , sen::util::SpatialAlgorithm::drFPB = 5 , sen::util::SpatialAlgorithm::drRPB = 6 , sen::util::SpatialAlgorithm::drRVB = 7 ,
  sen::util::SpatialAlgorithm::drFVB = 8
}
 Enumeration of the different Spatial algorithms. More...
enum class  sen::util::ReferenceSystem : u32 { sen::util::ReferenceSystem::world , sen::util::ReferenceSystem::body }
 Enumeration of the reference system: world-centered or body-centered. More...

Functions

Situation sen::util::drFpw (const Situation &value, sen::TimeStamp time) noexcept
 Returns the extrapolated situation using the FPW algorithm.
Situation sen::util::drFpb (const Situation &value, sen::TimeStamp time) noexcept
 Returns the extrapolated situation using the FPB algorithm. The velocity is expressed in body coordinates.
Situation sen::util::drRpw (const Situation &value, sen::TimeStamp time) noexcept
 Returns the extrapolated situation using the RPW algorithm.
Situation sen::util::drRpb (const Situation &value, sen::TimeStamp time) noexcept
 Returns the extrapolated situation using the RPB algorithm. The input situation should be expressed in body coordinates and the returned situation in world coordinates.
Situation sen::util::drRvw (const Situation &value, sen::TimeStamp time) noexcept
 Returns the extrapolated situation using the RVW algorithm.
Situation sen::util::drRvb (const Situation &value, sen::TimeStamp time) noexcept
 Returns the extrapolated situation using the RVB algorithm.
Situation sen::util::drFvw (const Situation &value, sen::TimeStamp time) noexcept
 Returns the extrapolated situation using the FVW algorithm.
Situation sen::util::drFvb (const Situation &value, sen::TimeStamp time) noexcept
 Returns the extrapolated situation using the FVB algorithm.
template<typename T>
sen::util::impl::toRpr (const Location &value)
 Translates a Location struct to a RPR WorldLocation given as template argument.
template<typename T>
sen::util::impl::toRpr (const Orientation &value)
 Translates an Orientation struct to a RPR Orientation given as template argument.
template<typename T>
sen::util::impl::toRpr (const Velocity &value)
 Translates a Velocity struct to a RPR Velocity given as template argument.
template<typename T>
sen::util::impl::toRpr (const Acceleration &value)
 Translates an Acceleration struct to a RPR Acceleration given as template argument.
template<typename T>
sen::util::impl::toRpr (const AngularVelocity &value)
 Translates an AngularVelocity struct to a RPR AngularVelocity given as template argument.
template<typename T>
Location sen::util::impl::fromRprLocation (const T &value)
 Translates to a Location struct from a RPR WorldLocation.
template<typename T>
Orientation sen::util::impl::fromRprOrientation (const T &value)
 Translates to an Orientation struct from a RPR Orientation.
template<typename T>
Velocity sen::util::impl::fromRprVelocity (const T &value)
 Translates to a Velocity struct from a RPR Velocity.
template<typename T>
Acceleration sen::util::impl::fromRprAcceleration (const T &value)
 Translates to Acceleration struct from a RPR Acceleration.
template<typename T>
AngularVelocity sen::util::impl::fromRprAngularVelocity (const T &value)
 Translates to AngularVelocity struct from a RPR AngularVelocity.
GeodeticWorldLocation sen::util::impl::toLla (const Location &worldLocation) noexcept
 Translates from ECEF Location to Geodetic (LatLonAlt) Location.
Location sen::util::impl::toEcef (const GeodeticWorldLocation &latLonAlt) noexcept
 Translates from Geodetic (LatLonAlt) to ECEF WorldLocation coordinates.
Orientation sen::util::impl::ecefToNed (const Orientation &value, const GeodeticWorldLocation &latLonAlt) noexcept
 Translates the Orientation in euler angles from ECEF to NED using quaternions.
Velocity sen::util::impl::ecefToNed (const Velocity &value, const GeodeticWorldLocation &geodeticPosition) noexcept
 Translates Velocity vectors expressed in ECEF coordinates to NED coordinates.
Acceleration sen::util::impl::ecefToNed (const Acceleration &value, const GeodeticWorldLocation &geodeticPosition) noexcept
 Translates Acceleration vectors expressed in ECEF coordinates to NED coordinates.
Orientation sen::util::impl::nedToEcef (const Orientation &value, const GeodeticWorldLocation &latLonAlt) noexcept
 Translates the Orientation in euler angles from NED to ECEF using quaternions.
Velocity sen::util::impl::nedToEcef (const Velocity &value, const GeodeticWorldLocation &location) noexcept
 Translates a Velocity vector from NED to ECEF coordinates.
Acceleration sen::util::impl::nedToEcef (const Acceleration &value, const GeodeticWorldLocation &location) noexcept
 Translates an Acceleration vector from NED to ECEF coordinates.
Velocity sen::util::impl::bodyToNed (const Velocity &value, const Orientation &orientationNed) noexcept
 Translates Velocity vectors expressed in body coordinates to NED coordinates.
AngularVelocity sen::util::impl::bodyToNed (const AngularVelocity &value, const Orientation &orientationNed) noexcept
 Translates AngularVelocity vectors expressed in body coordinates to NED coordinates.
AngularAcceleration sen::util::impl::bodyToNed (const AngularAcceleration &value, const Orientation &orientationNed) noexcept
 Translates AngularAcceleration vectors expressed in body coordinates to NED coordinates.
Acceleration sen::util::impl::bodyToNed (const Acceleration &value, const Orientation &orientationNed) noexcept
 Translates acceleration vectors expressed in body coordinates to NED coordinates.
void sen::util::impl::smoothImpl (Situation &situation, const Situation &update, const DrConfig &config)
 Updates the smoothed situation, both in position and orientation.
LengthMeters sen::util::impl::computeDistance (const Location &start, const Location &end)
 Computes the distance between two World locations.
bool sen::util::impl::isMoving (const Velocity &velocity)
 Returns true when entity velocity is not null.
bool sen::util::impl::isAccelerating (const Acceleration &acceleration)
 Returns true when entity acceleration is not null.
bool sen::util::impl::isRotating (const AngularVelocity &omega)
 Returns true when angular velocity acceleration is not null.
AngularVelocity sen::util::impl::nedToBody (const AngularVelocity &value, const Orientation &nedOrientation) noexcept
 Translates an AngularVelocity vector from NED to body coordinates.
bool sen::util::impl::maxDistanceExceeded (const Location &newPosition, const Location &extrapolatedPosition, f64 threshold)
 Returns true when the distance threshold has been exceeded.
bool sen::util::impl::maxRotationExceeded (const Orientation &newOrientation, const Orientation &extrapolatedOrientation, f64 threshold)
 Returns true when the rotation threshold has been exceeded.

Variables

constexpr std::array< SpatialAlgorithm, 4U > sen::util::bodyAlgorithms

Detailed Description


Class Documentation

◆ sen::util::DrConfig

struct sen::util::DrConfig

Length in meters.

Velocity in meters per second Acceleration in meters per second squared Angle in radians AngularVelocity in radians per second AngularAcceleration in radians per second squared Latitude in degrees Longitude in degrees Time quantity in seconds Non-dimensional damping coefficient Dead Reckoning configuration.

Class Members
bool smoothing = true If true, the position and orientation of the input data is smoothed removing noise.
LengthMeters maxDistance = 100000.0 No smoothing is performed for displacements bigger than this distance.
Duration maxDeltaTime {std::chrono::seconds(1)} No smoothing is performed for time deltas bigger than this duration.
Duration smoothingInterval {std::chrono::milliseconds(20)} Maximum time interval used to update the smoothed solution. It is used to prevent the smoothed solution from becoming unstable.
Duration positionConvergenceTime {std::chrono::milliseconds(500)} Convergence time for the smoothed position to match the updated position.
DampingCoefficient positionDamping = 1.0 Damping coefficient for the smoothed position solution.
Duration orientationConvergenceTime {std::chrono::milliseconds(50)} Convergence time for the smoothed orientation to match the updated orientation.
DampingCoefficient orientationDamping = 20.0 Damping coefficient for the smoothed orientation solution.

◆ sen::util::Location

struct sen::util::Location

World Location struct.

Class Members
LengthMeters x
LengthMeters y
LengthMeters z

◆ sen::util::GeodeticWorldLocation

struct sen::util::GeodeticWorldLocation

World location in geodetic coordinates.

Class Members
LatitudeDegrees latitude
LongitudeDegrees longitude
LengthMeters altitude

◆ sen::util::Orientation

struct sen::util::Orientation

Orientation struct.

Class Members
AngleRadians psi
AngleRadians theta
AngleRadians phi

◆ sen::util::Velocity

struct sen::util::Velocity

Velocity struct.

Class Members
VelocityMetersPerSecond x
VelocityMetersPerSecond y
VelocityMetersPerSecond z

◆ sen::util::Acceleration

struct sen::util::Acceleration

Acceleration struct.

Class Members
AccelerationMetersPerSecondSquared x
AccelerationMetersPerSecondSquared y
AccelerationMetersPerSecondSquared z

◆ sen::util::AngularVelocity

struct sen::util::AngularVelocity
Class Members
AngularVelocityRadiansPerSecond x
AngularVelocityRadiansPerSecond y
AngularVelocityRadiansPerSecond z

◆ sen::util::AngularAcceleration

struct sen::util::AngularAcceleration
Class Members
AngularAccelerationRadiansPerSecondSquared x
AngularAccelerationRadiansPerSecondSquared y
AngularAccelerationRadiansPerSecondSquared z

◆ sen::util::Situation

struct sen::util::Situation

Situation structure with the following parameters:

Class Members
bool isFrozen = false When true, no extrapolation is performed because the entity is frozen.
TimeStamp timeStamp {} TimeStamp of the instant when the situation is computed.
Location worldLocation {} Position in ECEF.
Orientation orientation {} Orientation of the body reference system (x forward, y right, z down) with respect to ECEF.
Velocity velocityVector {} Velocity vector with respect to ECEF or body reference system (depending on the reference system of the algorithm extrapolated).
AngularVelocity angularVelocity {} Angular velocity vector with respect to body reference system.
Acceleration accelerationVector {} Acceleration vector with respect to ECEF or body reference system (depending on the reference system of the algorithm extrapolated).
AngularAcceleration angularAcceleration {} Angular acceleration vector with respect to body reference system.

◆ sen::util::GeodeticSituation

struct sen::util::GeodeticSituation

GeodeticSituation structure with the following parameters:

Class Members
bool isFrozen = false When true, no extrapolation is performed because the entity is frozen.
TimeStamp timeStamp {} TimeStamp of the instant when the situation is computed.
GeodeticWorldLocation worldLocation {} World Location in Geodetic (Latitude, Longitude, Altitude).
Orientation orientation {} Orientation of the body reference system (x forward, y right, z down) with respect to NED (North - East - Down).
Velocity velocityVector {} Velocity vector with respect to NED.
AngularVelocity angularVelocity {} Angular velocity vector with respect to body-reference system.
Acceleration accelerationVector {} Acceleration vector with respect to NED.
AngularAcceleration angularAcceleration {} Angular acceleration vector with respect to body-reference system.

◆ sen::util::DrThreshold

struct sen::util::DrThreshold

Threshold configuration structure with the position error threshold (maximum distance between extrapolation and data) and the entity dynamics (speed and changes of direction).

Class Members
LengthMeters distanceThreshold {1.0}
AngleRadians orientationThreshold {0.05f}
ReferenceSystem referenceSystem {ReferenceSystem::world}

Enumeration Type Documentation

◆ SpatialAlgorithm

enum class sen::util::SpatialAlgorithm
strong

Enumeration of the different Spatial algorithms.

Enumerator
drStatic 
drFPW 
drRPW 
drRVW 
drFVW 
drFPB 
drRPB 
drRVB 
drFVB 

◆ ReferenceSystem

enum class sen::util::ReferenceSystem : u32
strong

Enumeration of the reference system: world-centered or body-centered.

Enumerator
world 
body 

Function Documentation

◆ drFpw()

Situation sen::util::drFpw ( const Situation & value,
sen::TimeStamp time )
nodiscardnoexcept

Returns the extrapolated situation using the FPW algorithm.

◆ drFpb()

Situation sen::util::drFpb ( const Situation & value,
sen::TimeStamp time )
nodiscardnoexcept

Returns the extrapolated situation using the FPB algorithm. The velocity is expressed in body coordinates.

◆ drRpw()

Situation sen::util::drRpw ( const Situation & value,
sen::TimeStamp time )
nodiscardnoexcept

Returns the extrapolated situation using the RPW algorithm.

◆ drRpb()

Situation sen::util::drRpb ( const Situation & value,
sen::TimeStamp time )
nodiscardnoexcept

Returns the extrapolated situation using the RPB algorithm. The input situation should be expressed in body coordinates and the returned situation in world coordinates.

◆ drRvw()

Situation sen::util::drRvw ( const Situation & value,
sen::TimeStamp time )
nodiscardnoexcept

Returns the extrapolated situation using the RVW algorithm.

◆ drRvb()

Situation sen::util::drRvb ( const Situation & value,
sen::TimeStamp time )
nodiscardnoexcept

Returns the extrapolated situation using the RVB algorithm.

◆ drFvw()

Situation sen::util::drFvw ( const Situation & value,
sen::TimeStamp time )
nodiscardnoexcept

Returns the extrapolated situation using the FVW algorithm.

◆ drFvb()

Situation sen::util::drFvb ( const Situation & value,
sen::TimeStamp time )
nodiscardnoexcept

Returns the extrapolated situation using the FVB algorithm.

◆ toRpr() [1/5]

template<typename T>
T sen::util::impl::toRpr ( const Location & value)
inlinenodiscard

Translates a Location struct to a RPR WorldLocation given as template argument.

◆ toRpr() [2/5]

template<typename T>
T sen::util::impl::toRpr ( const Orientation & value)
inlinenodiscard

Translates an Orientation struct to a RPR Orientation given as template argument.

◆ toRpr() [3/5]

template<typename T>
T sen::util::impl::toRpr ( const Velocity & value)
inlinenodiscard

Translates a Velocity struct to a RPR Velocity given as template argument.

◆ toRpr() [4/5]

template<typename T>
T sen::util::impl::toRpr ( const Acceleration & value)
inlinenodiscard

Translates an Acceleration struct to a RPR Acceleration given as template argument.

◆ toRpr() [5/5]

template<typename T>
T sen::util::impl::toRpr ( const AngularVelocity & value)
inlinenodiscard

Translates an AngularVelocity struct to a RPR AngularVelocity given as template argument.

◆ fromRprLocation()

template<typename T>
Location sen::util::impl::fromRprLocation ( const T & value)
inlinenodiscard

Translates to a Location struct from a RPR WorldLocation.

◆ fromRprOrientation()

template<typename T>
Orientation sen::util::impl::fromRprOrientation ( const T & value)
inlinenodiscard

Translates to an Orientation struct from a RPR Orientation.

◆ fromRprVelocity()

template<typename T>
Velocity sen::util::impl::fromRprVelocity ( const T & value)
inlinenodiscard

Translates to a Velocity struct from a RPR Velocity.

Translates to Velocity struct from the rpr::VelocityVectorStruct type given as template parameter.

◆ fromRprAcceleration()

template<typename T>
Acceleration sen::util::impl::fromRprAcceleration ( const T & value)
inlinenodiscard

Translates to Acceleration struct from a RPR Acceleration.

Translates to Acceleration struct from the rpr::AccelerationVectorStruct type given as template parameter.

◆ fromRprAngularVelocity()

template<typename T>
AngularVelocity sen::util::impl::fromRprAngularVelocity ( const T & value)
inlinenodiscard

Translates to AngularVelocity struct from a RPR AngularVelocity.

Translates to AngularVelocity struct from the rpr::AngularVelocityStruct type given as template parameter.

◆ toLla()

GeodeticWorldLocation sen::util::impl::toLla ( const Location & worldLocation)
nodiscardnoexcept

Translates from ECEF Location to Geodetic (LatLonAlt) Location.

◆ toEcef()

Location sen::util::impl::toEcef ( const GeodeticWorldLocation & latLonAlt)
nodiscardnoexcept

Translates from Geodetic (LatLonAlt) to ECEF WorldLocation coordinates.

◆ ecefToNed() [1/3]

Orientation sen::util::impl::ecefToNed ( const Orientation & value,
const GeodeticWorldLocation & latLonAlt )
nodiscardnoexcept

Translates the Orientation in euler angles from ECEF to NED using quaternions.

◆ ecefToNed() [2/3]

Velocity sen::util::impl::ecefToNed ( const Velocity & value,
const GeodeticWorldLocation & geodeticPosition )
nodiscardnoexcept

Translates Velocity vectors expressed in ECEF coordinates to NED coordinates.

◆ ecefToNed() [3/3]

Acceleration sen::util::impl::ecefToNed ( const Acceleration & value,
const GeodeticWorldLocation & geodeticPosition )
nodiscardnoexcept

Translates Acceleration vectors expressed in ECEF coordinates to NED coordinates.

◆ nedToEcef() [1/3]

Orientation sen::util::impl::nedToEcef ( const Orientation & value,
const GeodeticWorldLocation & latLonAlt )
nodiscardnoexcept

Translates the Orientation in euler angles from NED to ECEF using quaternions.

◆ nedToEcef() [2/3]

Velocity sen::util::impl::nedToEcef ( const Velocity & value,
const GeodeticWorldLocation & location )
nodiscardnoexcept

Translates a Velocity vector from NED to ECEF coordinates.

◆ nedToEcef() [3/3]

Acceleration sen::util::impl::nedToEcef ( const Acceleration & value,
const GeodeticWorldLocation & location )
nodiscardnoexcept

Translates an Acceleration vector from NED to ECEF coordinates.

◆ bodyToNed() [1/4]

Velocity sen::util::impl::bodyToNed ( const Velocity & value,
const Orientation & orientationNed )
nodiscardnoexcept

Translates Velocity vectors expressed in body coordinates to NED coordinates.

◆ bodyToNed() [2/4]

AngularVelocity sen::util::impl::bodyToNed ( const AngularVelocity & value,
const Orientation & orientationNed )
nodiscardnoexcept

Translates AngularVelocity vectors expressed in body coordinates to NED coordinates.

◆ bodyToNed() [3/4]

AngularAcceleration sen::util::impl::bodyToNed ( const AngularAcceleration & value,
const Orientation & orientationNed )
nodiscardnoexcept

Translates AngularAcceleration vectors expressed in body coordinates to NED coordinates.

◆ bodyToNed() [4/4]

Acceleration sen::util::impl::bodyToNed ( const Acceleration & value,
const Orientation & orientationNed )
nodiscardnoexcept

Translates acceleration vectors expressed in body coordinates to NED coordinates.

◆ smoothImpl()

void sen::util::impl::smoothImpl ( Situation & situation,
const Situation & update,
const DrConfig & config )

Updates the smoothed situation, both in position and orientation.

◆ computeDistance()

LengthMeters sen::util::impl::computeDistance ( const Location & start,
const Location & end )
nodiscard

Computes the distance between two World locations.

◆ isMoving()

bool sen::util::impl::isMoving ( const Velocity & velocity)
nodiscard

Returns true when entity velocity is not null.

◆ isAccelerating()

bool sen::util::impl::isAccelerating ( const Acceleration & acceleration)
nodiscard

Returns true when entity acceleration is not null.

◆ isRotating()

bool sen::util::impl::isRotating ( const AngularVelocity & omega)
nodiscard

Returns true when angular velocity acceleration is not null.

◆ nedToBody()

AngularVelocity sen::util::impl::nedToBody ( const AngularVelocity & value,
const Orientation & nedOrientation )
nodiscardnoexcept

Translates an AngularVelocity vector from NED to body coordinates.

◆ maxDistanceExceeded()

bool sen::util::impl::maxDistanceExceeded ( const Location & newPosition,
const Location & extrapolatedPosition,
f64 threshold )
nodiscard

Returns true when the distance threshold has been exceeded.

◆ maxRotationExceeded()

bool sen::util::impl::maxRotationExceeded ( const Orientation & newOrientation,
const Orientation & extrapolatedOrientation,
f64 threshold )
nodiscard

Returns true when the rotation threshold has been exceeded.

Variable Documentation

◆ bodyAlgorithms

std::array<SpatialAlgorithm, 4U> sen::util::bodyAlgorithms
constexpr
Initial value: