Sen API
Sen Libraries
Loading...
Searching...
No Matches
dead_reckoner_impl.h
Go to the documentation of this file.
1// === dead_reckoner_impl.h ============================================================================================
2// Sen Infrastructure
3// Released under the Apache License v2.0 (SPDX-License-Identifier Apache-2.0).
4// See the LICENSE.txt file for more information.
5// © Airbus SAS, Airbus Helicopters, and Airbus Defence and Space SAU/GmbH/SAS.
6// =====================================================================================================================
7
8#ifndef SEN_UTIL_DR_DETAIL_DEAD_RECKONER_IMPL_H
9#define SEN_UTIL_DR_DETAIL_DEAD_RECKONER_IMPL_H
10
11// sen
13
15{
16
19
21template <typename T>
22[[nodiscard]] T toRpr(const Location& value);
23
25template <typename T>
26[[nodiscard]] T toRpr(const Orientation& value);
27
29template <typename T>
30[[nodiscard]] T toRpr(const Velocity& value);
31
33template <typename T>
34[[nodiscard]] T toRpr(const Acceleration& value);
35
37template <typename T>
38[[nodiscard]] T toRpr(const AngularVelocity& value);
39
41template <typename T>
42[[nodiscard]] Location fromRprLocation(const T& value);
43
45template <typename T>
46[[nodiscard]] Orientation fromRprOrientation(const T& value);
47
49template <typename T>
50[[nodiscard]] Velocity fromRprVelocity(const T& value);
51
53template <typename T>
54[[nodiscard]] Acceleration fromRprAcceleration(const T& value);
55
57template <typename T>
58[[nodiscard]] AngularVelocity fromRprAngularVelocity(const T& value);
59
61[[nodiscard]] GeodeticWorldLocation toLla(const Location& worldLocation) noexcept;
62
64[[nodiscard]] Location toEcef(const GeodeticWorldLocation& latLonAlt) noexcept;
65
67[[nodiscard]] Orientation ecefToNed(const Orientation& value, const GeodeticWorldLocation& latLonAlt) noexcept;
68
70[[nodiscard]] Velocity ecefToNed(const Velocity& value, const GeodeticWorldLocation& geodeticPosition) noexcept;
71
73[[nodiscard]] Acceleration ecefToNed(const Acceleration& value, const GeodeticWorldLocation& geodeticPosition) noexcept;
74
76[[nodiscard]] Orientation nedToEcef(const Orientation& value, const GeodeticWorldLocation& latLonAlt) noexcept;
77
79[[nodiscard]] Velocity nedToEcef(const Velocity& value, const GeodeticWorldLocation& location) noexcept;
80
82[[nodiscard]] Acceleration nedToEcef(const Acceleration& value, const GeodeticWorldLocation& location) noexcept;
83
86[[nodiscard]] GeodeticSituation toGeodeticSituation(const Situation& value) noexcept;
87
89[[nodiscard]] Situation toSituation(const GeodeticSituation& value) noexcept;
90
92[[nodiscard]] Situation toSituation(const GeodeticSituation& value,
93 const Location& ecefPosition,
94 const Orientation& ecefOrientation) noexcept;
95
97[[nodiscard]] Velocity bodyToNed(const Velocity& value, const Orientation& orientationNed) noexcept;
98
100[[nodiscard]] AngularVelocity bodyToNed(const AngularVelocity& value, const Orientation& orientationNed) noexcept;
101
104 const Orientation& orientationNed) noexcept;
105
107[[nodiscard]] Acceleration bodyToNed(const Acceleration& value, const Orientation& orientationNed) noexcept;
108
110void smoothImpl(Situation& situation, const Situation& update, const DrConfig& config);
111
113[[nodiscard]] LengthMeters computeDistance(const Location& start, const Location& end);
114
116
117//-------------------------------------------------------------------------------------------------------------------
118// Inline implementation
119//-------------------------------------------------------------------------------------------------------------------
120
121template <typename T>
122inline T toRpr(const Location& value)
123{
124 return {value.x, value.y, value.z};
125}
126
127template <typename T>
128inline T toRpr(const Orientation& value)
129{
130 return {value.psi, value.theta, value.phi};
131}
132
133template <typename T>
134inline T toRpr(const Velocity& value)
135{
136 return {value.x, value.y, value.z};
137}
138
139template <typename T>
140inline T toRpr(const Acceleration& value)
141{
142 return {value.x, value.y, value.z};
143}
144
145template <typename T>
146inline T toRpr(const AngularVelocity& value)
147{
148 return {value.x, value.y, value.z};
149}
150
151template <typename T>
152inline Location fromRprLocation(const T& value)
153{
154 return {value.x, value.y, value.z};
155}
156
157template <typename T>
158inline Orientation fromRprOrientation(const T& value)
159{
160 return {value.psi, value.theta, value.phi};
161}
162
164template <typename T>
165inline Velocity fromRprVelocity(const T& value)
166{
167 return {value.xVelocity, value.yVelocity, value.zVelocity};
168}
169
171template <typename T>
172inline Acceleration fromRprAcceleration(const T& value)
173{
174 return {value.xAcceleration, value.yAcceleration, value.zAcceleration};
175}
176
178template <typename T>
180{
181 return {value.xAngularVelocity, value.yAngularVelocity, value.zAngularVelocity};
182}
183
184} // namespace sen::util::impl
185
186#endif // SEN_UTIL_DR_DETAIL_DEAD_RECKONER_IMPL_H
AccelerationMetersPerSecondSquared z
Definition algorithms.h:126
LengthMeters y
Definition algorithms.h:93
AngularVelocityRadiansPerSecond z
Definition algorithms.h:134
VelocityMetersPerSecond y
Definition algorithms.h:117
AccelerationMetersPerSecondSquared y
Definition algorithms.h:125
AccelerationMetersPerSecondSquared x
Definition algorithms.h:124
AngularVelocityRadiansPerSecond y
Definition algorithms.h:133
AngleRadians theta
Definition algorithms.h:109
LengthMeters x
Definition algorithms.h:92
VelocityMetersPerSecond x
Definition algorithms.h:116
AngleRadians psi
Definition algorithms.h:108
AngleRadians phi
Definition algorithms.h:110
LengthMeters z
Definition algorithms.h:94
VelocityMetersPerSecond z
Definition algorithms.h:118
AngularVelocityRadiansPerSecond x
Definition algorithms.h:132
Location toEcef(const GeodeticWorldLocation &latLonAlt) noexcept
Translates from Geodetic (LatLonAlt) to ECEF WorldLocation coordinates.
LengthMeters computeDistance(const Location &start, const Location &end)
Computes the distance between two World locations.
Orientation ecefToNed(const Orientation &value, const GeodeticWorldLocation &latLonAlt) noexcept
Translates the Orientation in euler angles from ECEF to NED using quaternions.
void smoothImpl(Situation &situation, const Situation &update, const DrConfig &config)
Updates the smoothed situation, both in position and orientation.
Acceleration fromRprAcceleration(const T &value)
Translates to Acceleration struct from a RPR Acceleration.
Definition dead_reckoner_impl.h:172
Velocity fromRprVelocity(const T &value)
Translates to a Velocity struct from a RPR Velocity.
Definition dead_reckoner_impl.h:165
GeodeticWorldLocation toLla(const Location &worldLocation) noexcept
Translates from ECEF Location to Geodetic (LatLonAlt) Location.
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
Situation toSituation(const GeodeticSituation &value) noexcept
Converts a situation from geodetic to ECEF.
GeodeticSituation toGeodeticSituation(const Situation &value) noexcept
Converts a situation from ECEF to geodetic, building the position rotation once for all three quantit...
AngularVelocity fromRprAngularVelocity(const T &value)
Translates to AngularVelocity struct from a RPR AngularVelocity.
Definition dead_reckoner_impl.h:179
Velocity bodyToNed(const Velocity &value, const Orientation &orientationNed) noexcept
Translates Velocity vectors expressed in body coordinates to NED coordinates.
Orientation fromRprOrientation(const T &value)
Translates to an Orientation struct from a RPR Orientation.
Definition dead_reckoner_impl.h:158
Location fromRprLocation(const T &value)
Translates to a Location struct from a RPR WorldLocation.
Definition dead_reckoner_impl.h:152
Acceleration struct.
Definition algorithms.h:123
AngularAcceleration struct.
Definition algorithms.h:139
AngularVelocity struct.
Definition algorithms.h:131
Length in meters.
Definition algorithms.h:61
GeodeticSituation structure with the following parameters:
Definition algorithms.h:180
World location in geodetic coordinates.
Definition algorithms.h:99
World Location struct.
Definition algorithms.h:91
Orientation struct.
Definition algorithms.h:107
Situation structure with the following parameters:
Definition algorithms.h:148
Velocity struct.
Definition algorithms.h:115
Definition dead_reckoner_impl.h:15