GAMS
1.4.0
|
Provides position and orientation primitives. More...
Namespaces | |
cartesian | |
Contains frame translation functions for Cartesian reference frames. | |
detail | |
Provides underlying pose classes that provide infrastructure for higher level pose-related functions. | |
euler | |
Provides support for Euler tools for positions and orientations. | |
geodetic_util | |
gps | |
Contains functions for translating GPS frames. | |
impl | |
Private implementation details. | |
order | |
Provides support for ordering reference-frame inputss. | |
simple_rotate | |
For internal use. | |
units | |
Type tags to indicate the dimension a coordinate lies within. | |
Classes | |
class | Acceleration |
class | AccelerationVector |
class | AngularAcceleration |
class | AngularAccelerationVector |
class | AngularVelocity |
class | AngularVelocityVector |
struct | basic_positional_mixin |
Internal use. More... | |
struct | basic_rotational_mixin |
Internal use. More... | |
class | BasicPose |
Underlying template for all Pose types, including PoseVector, Pose, and StampedPose See PositionVector and OrientationVector for representation deatils. More... | |
class | BasicVector |
For internal use. The underlying template for all coordinate types. More... | |
struct | common_rotational_mixin |
Internal use. More... | |
struct | default_positional_unit_traits |
Internal use. More... | |
struct | default_rotational_unit_traits |
Internal use. More... | |
struct | default_unit_traits |
Internal use. More... | |
class | Displacement |
class | DisplacementVector |
class | Epsilon |
A simple bounds checker which tests whether the current position is within the given number of meters of the expected position, and whether the difference in angles is within the given number of radians. More... | |
struct | fixed_into_free |
Helper struct for defining which fixed coordinate types map to which free vector coordinate types. More... | |
struct | fixed_into_free< Orientation > |
struct | fixed_into_free< OrientationVector > |
struct | fixed_into_free< Position > |
struct | fixed_into_free< PositionVector > |
struct | fixed_into_free< StampedOrientation > |
struct | fixed_into_free< StampedPosition > |
class | Framed |
Internal class implementing coordinates bound to reference frame. More... | |
class | FrameEvalSettings |
Settings class for saving/loading reference frames. More... | |
class | FrameStore |
Class for storing and loading frames in a given KnowledgeBase, using given settings, with a set expiry. More... | |
struct | is_positional |
struct | is_rotational |
class | Orientation |
class | OrientationBounds |
Interface for defining a bounds checker for Orientations. More... | |
class | OrientationVector |
class | Pose |
class | PoseBounds |
Interface for defining a bounds checker for Poses, a combination of position and orientation checking. More... | |
class | PoseVector |
class | Position |
class | PositionBounds |
Interface for defining a bounds checker for Positions. More... | |
class | PositionVector |
class | PrioritizedRegion |
A helper class for prioritized region information. More... | |
class | Quaternion |
Used internally to implement angle operations. More... | |
class | ReferenceFrame |
Provides Reference Frame (i.e., coordinate systemm) transforms. More... | |
class | ReferenceFrameArena |
class | ReferenceFrameIdentity |
For internal use. More... | |
struct | ReferenceFrameType |
For internal use. More... | |
class | ReferenceFrameVersion |
For internal use. More... | |
class | Region |
A helper class for region information. More... | |
class | Rotation |
class | RotationVector |
class | SearchArea |
A utility class for search areas. More... | |
class | Stamped |
Internal class implementing coordinates stamped with timestamp. More... | |
class | StampedAcceleration |
class | StampedAngularAcceleration |
class | StampedAngularVelocity |
class | StampedDisplacement |
class | StampedOrientation |
class | StampedPose |
class | StampedPosition |
class | StampedRotation |
class | StampedVelocity |
class | undefined_transform |
Thrown when an attempt is made to transform between two frame types, and there's not transform defined. More... | |
struct | unit_traits |
Helper trait to customize BasicVector based on unit. More... | |
struct | unit_traits< units::absolute< units::length > > |
struct | unit_traits< units::absolute< units::plane_angle > > |
struct | unit_traits< units::acceleration > |
struct | unit_traits< units::angular_acceleration > |
struct | unit_traits< units::angular_velocity > |
struct | unit_traits< units::length > |
struct | unit_traits< units::plane_angle > |
struct | unit_traits< units::velocity > |
class | unrelated_frames |
Thrown when an an attempt is made to transform between frames that do not belong to the same frame tree. More... | |
class | Velocity |
class | VelocityVector |
Functions | |
GAMS_EXPORT const ReferenceFrame & | default_frame (void) |
Default frame. More... | |
void | default_normalize_angular (const ReferenceFrameType *, double &, double &, double &) |
Returns a default normalized angular. More... | |
void | default_normalize_linear (const ReferenceFrameType *, double &, double &, double &) |
Returns a default normalized positional. More... | |
void | default_normalize_pose (const ReferenceFrameType *self, double &x, double &y, double &z, double &rx, double &ry, double &rz) |
Returns a default normalized pose. More... | |
GAMS_EXPORT const ReferenceFrame * | find_common_frame (const ReferenceFrame *from, const ReferenceFrame *to, std::vector< const ReferenceFrame * > *to_stack=nullptr) |
Helper function to find the common frame between two frames. More... | |
GAMS_EXPORT const ReferenceFrame & | gps_frame (void) |
Returns the canonical GPS frame representing Earth. More... | |
MADARA_MAKE_VAL_SUPPORT_TEST (nano_timestamp, x,(x.nanos(), x.nanos(0UL))) | |
Type trait to detect stamped types. More... | |
MADARA_MAKE_VAL_SUPPORT_TEST (timestamp, x,(x.time(), x.time(TimeValue{}))) | |
Type trait to detect stamped types. More... | |
MADARA_MAKE_VAL_SUPPORT_TEST (transform_to, x,(x.transform_to(std::declval< ReferenceFrame >()))) | |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator!= (const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs) |
Inequality operator for coordinates. More... | |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator!= (const Framed< BasicVector< LDerived, Units >> &lhs, const Framed< BasicVector< RDerived, Units >> &rhs) |
Inequality operator for Framed coordinates. More... | |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator!= (const Stamped< Framed< BasicVector< LDerived, Units >>> &lhs, const Stamped< Framed< BasicVector< RDerived, Units >>> &rhs) |
Inequality operator for Framed and Stamped coordinates. More... | |
template<typename Derived , typename Units , typename Scalar > | |
auto | operator* (const BasicVector< Derived, Units > &vec, Scalar scalar) -> typename std::enable_if< std::is_arithmetic< Scalar >::value &&BasicVector< Derived, Units >::free(), typename BasicVector< Derived, Units >::derived_type >::type |
template<typename Derived , typename Units , typename Scalar > | |
auto | operator* (Scalar scalar, const BasicVector< Derived, Units > &vec) -> decltype(vec *scalar) |
template<typename Derived , typename Units , typename Scalar > | |
auto | operator*= (BasicVector< Derived, Units > &vec, Scalar scalar) -> typename std::enable_if< std::is_arithmetic< Scalar >::value &&BasicVector< Derived, Units >::free(), typename BasicVector< Derived, Units >::derived_type & >::type |
template<typename LDerived , typename LUnits , typename RDerived , typename RUnits > | |
auto | operator+ (const BasicVector< LDerived, LUnits > &lhs, const BasicVector< RDerived, RUnits > &rhs) -> typename std::enable_if< RDerived::free(), LDerived >::type |
Pass through to Eigen operator- on vectors, if RHS is free. More... | |
template<typename LDerived , typename RDerived , typename Units > | |
auto | operator+= (BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs) -> typename std::enable_if< unit_traits< Units >::positional &&unit_traits< Units >::free, LDerived & >::type |
template<typename LDerived , typename RDerived , typename Units > | |
auto | operator+= (BasicVector< LDerived, Units > &lhs, const Eigen::MatrixBase< RDerived > &rhs) -> typename std::enable_if< unit_traits< Units >::positional, LDerived & >::type |
template<typename LDerived , typename RDerived , typename Units > | |
auto | operator+= (BasicVector< LDerived, units::absolute< Units >> &lhs, const BasicVector< RDerived, Units > &rhs) -> typename std::enable_if< unit_traits< Units >::positional &&unit_traits< Units >::free, LDerived & >::type |
template<typename LDerived , typename LUnits , typename RDerived , typename RUnits > | |
auto | operator- (const BasicVector< LDerived, LUnits > &lhs, const BasicVector< RDerived, RUnits > &rhs) -> typename std::enable_if< LDerived::free() &&RDerived::free(), LDerived >::type |
Pass through to Eigen operator- on vectors, for free types. More... | |
template<typename LDerived , typename RDerived , typename Units > | |
auto | operator-= (BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs) -> typename std::enable_if< unit_traits< Units >::positional &&unit_traits< Units >::free, LDerived & >::type |
template<typename LDerived , typename RDerived , typename Units > | |
auto | operator-= (BasicVector< LDerived, Units > &lhs, const Eigen::MatrixBase< RDerived > &rhs) -> typename std::enable_if< unit_traits< Units >::positional, LDerived & >::type |
template<typename LDerived , typename RDerived , typename Units > | |
auto | operator-= (BasicVector< LDerived, units::absolute< Units >> &lhs, const BasicVector< RDerived, Units > &rhs) -> typename std::enable_if< unit_traits< Units >::positional &&unit_traits< Units >::free, LDerived & >::type |
template<typename Derived , typename Units , typename Scalar > | |
auto | operator/ (const BasicVector< Derived, Units > &vec, Scalar scalar) -> typename std::enable_if< std::is_arithmetic< Scalar >::value &&BasicVector< Derived, Units >::free(), typename BasicVector< Derived, Units >::derived_type >::type |
template<typename Derived , typename Units , typename Scalar > | |
auto | operator/ (Scalar scalar, const BasicVector< Derived, Units > &vec) -> decltype(vec/scalar) |
template<typename Derived , typename Units , typename Scalar > | |
auto | operator/= (BasicVector< Derived, Units > &vec, Scalar scalar) -> typename std::enable_if< std::is_arithmetic< Scalar >::value &&BasicVector< Derived, Units >::free(), typename BasicVector< Derived, Units >::derived_type & >::type |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator< (const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs) |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator< (const Framed< BasicVector< LDerived, Units >> &lhs, const Framed< BasicVector< RDerived, Units >> &rhs) |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator< (const Stamped< Framed< BasicVector< LDerived, Units >>> &lhs, const Stamped< Framed< BasicVector< RDerived, Units >>> &rhs) |
template<typename Derived > | |
std::ostream & | operator<< (std::ostream &o, const BasicPose< Derived > &pose) |
template<typename Derived , typename Units > | |
std::ostream & | operator<< (std::ostream &o, const BasicVector< Derived, Units > &v) |
std::ostream & | operator<< (std::ostream &o, const Eigen::Vector3d &v) |
template<typename Base > | |
std::ostream & | operator<< (std::ostream &o, const Stamped< Base > &v) |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator<= (const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs) |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator<= (const Framed< BasicVector< LDerived, Units >> &lhs, const Framed< BasicVector< RDerived, Units >> &rhs) |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator<= (const Stamped< Framed< BasicVector< LDerived, Units >>> &lhs, const Stamped< Framed< BasicVector< RDerived, Units >>> &rhs) |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator== (const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs) |
Equality operator for coordinates. More... | |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator== (const Framed< BasicVector< LDerived, Units >> &lhs, const Framed< BasicVector< RDerived, Units >> &rhs) |
Equality operator for Framed coordinates. More... | |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator== (const Stamped< Framed< BasicVector< LDerived, Units >>> &lhs, const Stamped< Framed< BasicVector< RDerived, Units >>> &rhs) |
Equality operator for Framed and Stamped coordinates. More... | |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator> (const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs) |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator> (const Framed< BasicVector< LDerived, Units >> &lhs, const Framed< BasicVector< RDerived, Units >> &rhs) |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator> (const Stamped< Framed< BasicVector< LDerived, Units >>> &lhs, const Stamped< Framed< BasicVector< RDerived, Units >>> &rhs) |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator>= (const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs) |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator>= (const Framed< BasicVector< LDerived, Units >> &lhs, const Framed< BasicVector< RDerived, Units >> &rhs) |
template<typename LDerived , typename RDerived , typename Units > | |
bool | operator>= (const Stamped< Framed< BasicVector< LDerived, Units >>> &lhs, const Stamped< Framed< BasicVector< RDerived, Units >>> &rhs) |
Eigen::Vector3d | quat_to_axis_angle (const Eigen::Quaterniond &quat) |
ReferenceFrame | try_get_frame () |
template<typename T , typename... Args> | |
auto | try_get_frame (const T &, Args &&... args) -> typename std::enable_if<!supports_transform_to< T >::value, ReferenceFrame >::type |
template<typename T , typename... Args> | |
auto | try_get_frame (const T &v, Args &&...) -> typename std::enable_if< supports_transform_to< T >::value, ReferenceFrame >::type |
uint64_t | try_get_nano_time (uint64_t def) |
Base case: return default. More... | |
template<typename T , typename... Args> | |
auto | try_get_nano_time (uint64_t def, const T &, Args &&... args) -> typename std::enable_if<!supports_nano_timestamp< T >::value, uint64_t >::type |
If T doesn't support nanos(), recurse to remaining args. More... | |
template<typename T , typename... Args> | |
auto | try_get_nano_time (uint64_t, const T &v, Args &&...) -> typename std::enable_if< supports_nano_timestamp< T >::value, uint64_t >::type |
If T supports nanos(), call it and return value. More... | |
TimeValue | try_get_time () |
template<typename T , typename... Args> | |
auto | try_get_time (const T &, Args &&... args) -> typename std::enable_if<!supports_timestamp< T >::value, TimeValue >::type |
template<typename T , typename... Args> | |
auto | try_get_time (const T &v, Args &&...) -> typename std::enable_if< supports_timestamp< T >::value, TimeValue >::type |
template<typename T > | |
auto | try_transform_to (const T &v, const ReferenceFrame &frame) -> typename std::enable_if< supports_transform_to< T >::value, T >::type |
Variables | |
GAMS_EXPORT const ReferenceFrameType * | Cartesian |
ReferenceFrameType struct for Cartesian frames. More... | |
static const detail::degrees_t | degrees |
Degres unit flag; see Euler constructor. More... | |
constexpr double | EARTH_CIRC = EARTH_RADIUS * 2 * M_PI |
constexpr double | EARTH_RADIUS = 6371000.0 |
GAMS_EXPORT const ReferenceFrameType * | GPS |
ReferenceFrameType for GPS frames. More... | |
static const detail::radians_t | radians |
Radians unit flag; see Euler constructor. More... | |
static const detail::revolutions_t | revolutions |
Revolutions (i.e., 1 == 360 degrees) unit flag; see Euler constructor. More... | |
Provides position and orientation primitives.
GAMS_EXPORT const ReferenceFrame& gams::pose::default_frame | ( | void | ) |
Default frame.
Cartesian type. Will be used by any Coordinates by default, if no other is specified. In general, you should not need to create any other parent-less Cartesian frames.
|
inline |
Returns a default normalized angular.
Definition at line 1480 of file ReferenceFrame.h.
|
inline |
Returns a default normalized positional.
Definition at line 1473 of file ReferenceFrame.h.
|
inline |
Returns a default normalized pose.
self | the current reference frame |
x | the x pose coordinate |
y | the y pose coordinate |
z | the z pose coordinate |
rx | the ending angular on x axis |
ry | the ending angular on y axis |
rz | the ending angular on z axis |
Definition at line 1496 of file ReferenceFrame.h.
GAMS_EXPORT const ReferenceFrame* gams::pose::find_common_frame | ( | const ReferenceFrame * | from, |
const ReferenceFrame * | to, | ||
std::vector< const ReferenceFrame * > * | to_stack = nullptr |
||
) |
Helper function to find the common frame between two frames.
from | the initial frame |
to | the target frame |
to_stack | if not nullptr, the frames needed to go from base to target frame will be pushed to pointed to vector |
GAMS_EXPORT const ReferenceFrame& gams::pose::gps_frame | ( | void | ) |
Returns the canonical GPS frame representing Earth.
In general, use this function, instead of creating your own GPS typed ReferenceFrame.
gams::pose::MADARA_MAKE_VAL_SUPPORT_TEST | ( | nano_timestamp | , |
x | , | ||
(x.nanos(), x.nanos(0UL)) | |||
) |
Type trait to detect stamped types.
gams::pose::MADARA_MAKE_VAL_SUPPORT_TEST | ( | timestamp | , |
x | , | ||
(x.time(), x.time(TimeValue{})) | |||
) |
Type trait to detect stamped types.
gams::pose::MADARA_MAKE_VAL_SUPPORT_TEST | ( | transform_to | , |
x | , | ||
(x.transform_to(std::declval< ReferenceFrame >())) | |||
) |
|
inline |
Inequality operator for coordinates.
Definition at line 984 of file Coordinate.h.
|
inline |
Inequality operator for Framed coordinates.
Definition at line 997 of file Coordinate.h.
|
inline |
Inequality operator for Framed and Stamped coordinates.
Definition at line 1010 of file Coordinate.h.
|
inline |
Definition at line 831 of file Coordinate.h.
|
inline |
Definition at line 831 of file Coordinate.h.
|
inline |
Definition at line 831 of file Coordinate.h.
|
inline |
Pass through to Eigen operator- on vectors, if RHS is free.
Pass through to Eigen operator- on vectors, if RHS is fixed and lHS is free.
Definition at line 876 of file Coordinate.h.
|
inline |
Definition at line 869 of file Coordinate.h.
|
inline |
Definition at line 869 of file Coordinate.h.
|
inline |
Definition at line 869 of file Coordinate.h.
|
inline |
Pass through to Eigen operator- on vectors, for free types.
Pass through to Eigen operator- on vectors, for fixed types.
Definition at line 902 of file Coordinate.h.
|
inline |
Definition at line 870 of file Coordinate.h.
|
inline |
Definition at line 870 of file Coordinate.h.
|
inline |
Definition at line 870 of file Coordinate.h.
|
inline |
Definition at line 832 of file Coordinate.h.
|
inline |
Definition at line 832 of file Coordinate.h.
|
inline |
Definition at line 832 of file Coordinate.h.
|
inline |
Definition at line 1018 of file Coordinate.h.
|
inline |
Definition at line 1038 of file Coordinate.h.
|
inline |
Definition at line 1048 of file Coordinate.h.
|
inline |
|
inline |
Definition at line 1289 of file Coordinate.h.
|
inline |
Definition at line 1266 of file Coordinate.h.
|
inline |
|
inline |
Definition at line 1058 of file Coordinate.h.
|
inline |
Definition at line 1066 of file Coordinate.h.
|
inline |
Definition at line 1074 of file Coordinate.h.
|
inline |
Equality operator for coordinates.
Definition at line 936 of file Coordinate.h.
|
inline |
Equality operator for Framed coordinates.
Definition at line 954 of file Coordinate.h.
|
inline |
Equality operator for Framed and Stamped coordinates.
Definition at line 969 of file Coordinate.h.
|
inline |
Definition at line 1106 of file Coordinate.h.
|
inline |
Definition at line 1114 of file Coordinate.h.
|
inline |
Definition at line 1122 of file Coordinate.h.
|
inline |
Definition at line 1082 of file Coordinate.h.
|
inline |
Definition at line 1090 of file Coordinate.h.
|
inline |
Definition at line 1098 of file Coordinate.h.
|
inline |
Definition at line 170 of file Coordinate.h.
|
inline |
|
inline |
|
inline |
|
inline |
Base case: return default.
Definition at line 308 of file ReferenceFrame.h.
|
inline |
If T doesn't support nanos(), recurse to remaining args.
Definition at line 323 of file ReferenceFrame.h.
|
inline |
If T supports nanos(), call it and return value.
Definition at line 315 of file ReferenceFrame.h.
|
inline |
|
inline |
|
inline |
|
extern |
ReferenceFrameType struct for Cartesian frames.
Used by default by ReferenceFrame objects, or can be passed as first parameter.
|
static |
Degres unit flag; see Euler constructor.
Definition at line 90 of file AngleUnits.h.
|
constexpr |
Definition at line 95 of file GPSFrame.h.
|
constexpr |
Definition at line 94 of file GPSFrame.h.
|
extern |
ReferenceFrameType for GPS frames.
Pass as first argument of ReferenceFrame constructors to create a GPS frame instead of the default Cartesian; however, you should generally not create new GPS frames. Instead, use gps_frame().
|
static |
Radians unit flag; see Euler constructor.
Definition at line 87 of file AngleUnits.h.
|
static |
Revolutions (i.e., 1 == 360 degrees) unit flag; see Euler constructor.
Definition at line 93 of file AngleUnits.h.