GAMS  1.4.0
gams::pose Namespace Reference

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 ReferenceFramedefault_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 ReferenceFramefind_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 ReferenceFramegps_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 ReferenceFrameTypeCartesian
 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 ReferenceFrameTypeGPS
 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...
 

Detailed Description

Provides position and orientation primitives.

Function Documentation

◆ default_frame()

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.

◆ default_normalize_angular()

void gams::pose::default_normalize_angular ( const ReferenceFrameType ,
double &  ,
double &  ,
double &   
)
inline

Returns a default normalized angular.

Definition at line 1480 of file ReferenceFrame.h.

◆ default_normalize_linear()

void gams::pose::default_normalize_linear ( const ReferenceFrameType ,
double &  ,
double &  ,
double &   
)
inline

Returns a default normalized positional.

Definition at line 1473 of file ReferenceFrame.h.

◆ default_normalize_pose()

void gams::pose::default_normalize_pose ( const ReferenceFrameType self,
double &  x,
double &  y,
double &  z,
double &  rx,
double &  ry,
double &  rz 
)
inline

Returns a default normalized pose.

Parameters
selfthe current reference frame
xthe x pose coordinate
ythe y pose coordinate
zthe z pose coordinate
rxthe ending angular on x axis
rythe ending angular on y axis
rzthe ending angular on z axis
Returns
the difference in radians

Definition at line 1496 of file ReferenceFrame.h.

◆ find_common_frame()

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.

Parameters
fromthe initial frame
tothe target frame
to_stackif not nullptr, the frames needed to go from base to target frame will be pushed to pointed to vector

◆ gps_frame()

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.

◆ MADARA_MAKE_VAL_SUPPORT_TEST() [1/3]

gams::pose::MADARA_MAKE_VAL_SUPPORT_TEST ( nano_timestamp  ,
,
(x.nanos(), x.nanos(0UL))   
)

Type trait to detect stamped types.

◆ MADARA_MAKE_VAL_SUPPORT_TEST() [2/3]

gams::pose::MADARA_MAKE_VAL_SUPPORT_TEST ( timestamp  ,
,
(x.time(), x.time(TimeValue{}))   
)

Type trait to detect stamped types.

◆ MADARA_MAKE_VAL_SUPPORT_TEST() [3/3]

gams::pose::MADARA_MAKE_VAL_SUPPORT_TEST ( transform_to  ,
,
(x.transform_to(std::declval< ReferenceFrame >()))   
)

◆ operator!=() [1/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator!= ( const BasicVector< LDerived, Units > &  lhs,
const BasicVector< RDerived, Units > &  rhs 
)
inline

Inequality operator for coordinates.

Returns
!(lhs == rhs)

Definition at line 984 of file Coordinate.h.

◆ operator!=() [2/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator!= ( const Framed< BasicVector< LDerived, Units >> &  lhs,
const Framed< BasicVector< RDerived, Units >> &  rhs 
)
inline

Inequality operator for Framed coordinates.

Returns
!(lhs == rhs)

Definition at line 997 of file Coordinate.h.

◆ operator!=() [3/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator!= ( const Stamped< Framed< BasicVector< LDerived, Units >>> &  lhs,
const Stamped< Framed< BasicVector< RDerived, Units >>> &  rhs 
)
inline

Inequality operator for Framed and Stamped coordinates.

Returns
!(lhs == rhs)

Definition at line 1010 of file Coordinate.h.

◆ operator*() [1/2]

template<typename Derived , typename Units , typename Scalar >
auto gams::pose::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
inline

Definition at line 831 of file Coordinate.h.

◆ operator*() [2/2]

template<typename Derived , typename Units , typename Scalar >
auto gams::pose::operator* ( Scalar  scalar,
const BasicVector< Derived, Units > &  vec 
) -> decltype(vec * scalar)
inline

Definition at line 831 of file Coordinate.h.

◆ operator*=()

template<typename Derived , typename Units , typename Scalar >
auto gams::pose::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
inline

Definition at line 831 of file Coordinate.h.

◆ operator+()

template<typename LDerived , typename LUnits , typename RDerived , typename RUnits >
auto gams::pose::operator+ ( const BasicVector< LDerived, LUnits > &  lhs,
const BasicVector< RDerived, RUnits > &  rhs 
) -> typename std::enable_if<RDerived::free(), LDerived>::type
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.

Returns
vector of same type as LHS
vector of same type as RHS

Definition at line 876 of file Coordinate.h.

◆ operator+=() [1/3]

template<typename LDerived , typename RDerived , typename Units >
auto gams::pose::operator+= ( BasicVector< LDerived, Units > &  lhs,
const BasicVector< RDerived, Units > &  rhs 
) -> typename std::enable_if<unit_traits<Units>::positional && unit_traits<Units>::free, LDerived &>::type
inline

Definition at line 869 of file Coordinate.h.

◆ operator+=() [2/3]

template<typename LDerived , typename RDerived , typename Units >
auto gams::pose::operator+= ( BasicVector< LDerived, Units > &  lhs,
const Eigen::MatrixBase< RDerived > &  rhs 
) -> typename std::enable_if<unit_traits<Units>::positional, LDerived &>::type
inline

Definition at line 869 of file Coordinate.h.

◆ operator+=() [3/3]

template<typename LDerived , typename RDerived , typename Units >
auto gams::pose::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
inline

Definition at line 869 of file Coordinate.h.

◆ operator-()

template<typename LDerived , typename LUnits , typename RDerived , typename RUnits >
auto gams::pose::operator- ( const BasicVector< LDerived, LUnits > &  lhs,
const BasicVector< RDerived, RUnits > &  rhs 
) -> typename std::enable_if<LDerived::free() && RDerived::free(), LDerived>::type
inline

Pass through to Eigen operator- on vectors, for free types.

Pass through to Eigen operator- on vectors, for fixed types.

Returns
a free type vector

Definition at line 902 of file Coordinate.h.

◆ operator-=() [1/3]

template<typename LDerived , typename RDerived , typename Units >
auto gams::pose::operator-= ( BasicVector< LDerived, Units > &  lhs,
const BasicVector< RDerived, Units > &  rhs 
) -> typename std::enable_if<unit_traits<Units>::positional && unit_traits<Units>::free, LDerived &>::type
inline

Definition at line 870 of file Coordinate.h.

◆ operator-=() [2/3]

template<typename LDerived , typename RDerived , typename Units >
auto gams::pose::operator-= ( BasicVector< LDerived, Units > &  lhs,
const Eigen::MatrixBase< RDerived > &  rhs 
) -> typename std::enable_if<unit_traits<Units>::positional, LDerived &>::type
inline

Definition at line 870 of file Coordinate.h.

◆ operator-=() [3/3]

template<typename LDerived , typename RDerived , typename Units >
auto gams::pose::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
inline

Definition at line 870 of file Coordinate.h.

◆ operator/() [1/2]

template<typename Derived , typename Units , typename Scalar >
auto gams::pose::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
inline

Definition at line 832 of file Coordinate.h.

◆ operator/() [2/2]

template<typename Derived , typename Units , typename Scalar >
auto gams::pose::operator/ ( Scalar  scalar,
const BasicVector< Derived, Units > &  vec 
) -> decltype(vec / scalar)
inline

Definition at line 832 of file Coordinate.h.

◆ operator/=()

template<typename Derived , typename Units , typename Scalar >
auto gams::pose::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
inline

Definition at line 832 of file Coordinate.h.

◆ operator<() [1/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator< ( const BasicVector< LDerived, Units > &  lhs,
const BasicVector< RDerived, Units > &  rhs 
)
inline

Definition at line 1018 of file Coordinate.h.

◆ operator<() [2/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator< ( const Framed< BasicVector< LDerived, Units >> &  lhs,
const Framed< BasicVector< RDerived, Units >> &  rhs 
)
inline

Definition at line 1038 of file Coordinate.h.

◆ operator<() [3/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator< ( const Stamped< Framed< BasicVector< LDerived, Units >>> &  lhs,
const Stamped< Framed< BasicVector< RDerived, Units >>> &  rhs 
)
inline

Definition at line 1048 of file Coordinate.h.

◆ operator<<() [1/4]

template<typename Derived >
std::ostream& gams::pose::operator<< ( std::ostream &  o,
const BasicPose< Derived > &  pose 
)
inline

Definition at line 527 of file Pose.h.

◆ operator<<() [2/4]

template<typename Derived , typename Units >
std::ostream& gams::pose::operator<< ( std::ostream &  o,
const BasicVector< Derived, Units > &  v 
)
inline

Definition at line 1289 of file Coordinate.h.

◆ operator<<() [3/4]

std::ostream& gams::pose::operator<< ( std::ostream &  o,
const Eigen::Vector3d &  v 
)
inline

Definition at line 1266 of file Coordinate.h.

◆ operator<<() [4/4]

template<typename Base >
std::ostream& gams::pose::operator<< ( std::ostream &  o,
const Stamped< Base > &  v 
)
inline

Definition at line 208 of file Stamped.h.

◆ operator<=() [1/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator<= ( const BasicVector< LDerived, Units > &  lhs,
const BasicVector< RDerived, Units > &  rhs 
)
inline

Definition at line 1058 of file Coordinate.h.

◆ operator<=() [2/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator<= ( const Framed< BasicVector< LDerived, Units >> &  lhs,
const Framed< BasicVector< RDerived, Units >> &  rhs 
)
inline

Definition at line 1066 of file Coordinate.h.

◆ operator<=() [3/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator<= ( const Stamped< Framed< BasicVector< LDerived, Units >>> &  lhs,
const Stamped< Framed< BasicVector< RDerived, Units >>> &  rhs 
)
inline

Definition at line 1074 of file Coordinate.h.

◆ operator==() [1/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator== ( const BasicVector< LDerived, Units > &  lhs,
const BasicVector< RDerived, Units > &  rhs 
)
inline

Equality operator for coordinates.

Returns
true if all corresponding values are equal.

Definition at line 936 of file Coordinate.h.

◆ operator==() [2/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator== ( const Framed< BasicVector< LDerived, Units >> &  lhs,
const Framed< BasicVector< RDerived, Units >> &  rhs 
)
inline

Equality operator for Framed coordinates.

Returns
true if frames and all corresponding values are equal.

Definition at line 954 of file Coordinate.h.

◆ operator==() [3/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator== ( const Stamped< Framed< BasicVector< LDerived, Units >>> &  lhs,
const Stamped< Framed< BasicVector< RDerived, Units >>> &  rhs 
)
inline

Equality operator for Framed and Stamped coordinates.

Returns
true if timestamps, frames and all corresponding values are equal.

Definition at line 969 of file Coordinate.h.

◆ operator>() [1/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator> ( const BasicVector< LDerived, Units > &  lhs,
const BasicVector< RDerived, Units > &  rhs 
)
inline

Definition at line 1106 of file Coordinate.h.

◆ operator>() [2/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator> ( const Framed< BasicVector< LDerived, Units >> &  lhs,
const Framed< BasicVector< RDerived, Units >> &  rhs 
)
inline

Definition at line 1114 of file Coordinate.h.

◆ operator>() [3/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator> ( const Stamped< Framed< BasicVector< LDerived, Units >>> &  lhs,
const Stamped< Framed< BasicVector< RDerived, Units >>> &  rhs 
)
inline

Definition at line 1122 of file Coordinate.h.

◆ operator>=() [1/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator>= ( const BasicVector< LDerived, Units > &  lhs,
const BasicVector< RDerived, Units > &  rhs 
)
inline

Definition at line 1082 of file Coordinate.h.

◆ operator>=() [2/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator>= ( const Framed< BasicVector< LDerived, Units >> &  lhs,
const Framed< BasicVector< RDerived, Units >> &  rhs 
)
inline

Definition at line 1090 of file Coordinate.h.

◆ operator>=() [3/3]

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator>= ( const Stamped< Framed< BasicVector< LDerived, Units >>> &  lhs,
const Stamped< Framed< BasicVector< RDerived, Units >>> &  rhs 
)
inline

Definition at line 1098 of file Coordinate.h.

◆ quat_to_axis_angle()

Eigen::Vector3d gams::pose::quat_to_axis_angle ( const Eigen::Quaterniond &  quat)
inline

Definition at line 170 of file Coordinate.h.

◆ try_get_frame() [1/3]

ReferenceFrame gams::pose::try_get_frame ( )
inline

Definition at line 85 of file Framed.h.

◆ try_get_frame() [2/3]

template<typename T , typename... Args>
auto gams::pose::try_get_frame ( const T &  ,
Args &&...  args 
) -> typename std::enable_if<!supports_transform_to<T>::value, ReferenceFrame>::type
inline

Definition at line 98 of file Framed.h.

◆ try_get_frame() [3/3]

template<typename T , typename... Args>
auto gams::pose::try_get_frame ( const T &  v,
Args &&  ... 
) -> typename std::enable_if<supports_transform_to<T>::value, ReferenceFrame>::type
inline

Definition at line 91 of file Framed.h.

◆ try_get_nano_time() [1/3]

uint64_t gams::pose::try_get_nano_time ( uint64_t  def)
inline

Base case: return default.

Definition at line 308 of file ReferenceFrame.h.

◆ try_get_nano_time() [2/3]

template<typename T , typename... Args>
auto gams::pose::try_get_nano_time ( uint64_t  def,
const T &  ,
Args &&...  args 
) -> typename std::enable_if<!supports_nano_timestamp<T>::value, uint64_t>::type
inline

If T doesn't support nanos(), recurse to remaining args.

Definition at line 323 of file ReferenceFrame.h.

◆ try_get_nano_time() [3/3]

template<typename T , typename... Args>
auto gams::pose::try_get_nano_time ( uint64_t  ,
const T &  v,
Args &&  ... 
) -> typename std::enable_if<supports_nano_timestamp<T>::value, uint64_t>::type
inline

If T supports nanos(), call it and return value.

Definition at line 315 of file ReferenceFrame.h.

◆ try_get_time() [1/3]

TimeValue gams::pose::try_get_time ( )
inline

Definition at line 80 of file Stamped.h.

◆ try_get_time() [2/3]

template<typename T , typename... Args>
auto gams::pose::try_get_time ( const T &  ,
Args &&...  args 
) -> typename std::enable_if<!supports_timestamp<T>::value, TimeValue>::type
inline

Definition at line 93 of file Stamped.h.

◆ try_get_time() [3/3]

template<typename T , typename... Args>
auto gams::pose::try_get_time ( const T &  v,
Args &&  ... 
) -> typename std::enable_if<supports_timestamp<T>::value, TimeValue>::type
inline

Definition at line 86 of file Stamped.h.

◆ try_transform_to()

template<typename T >
auto gams::pose::try_transform_to ( const T &  v,
const ReferenceFrame frame 
) -> typename std::enable_if<supports_transform_to<T>::value, T>::type
inline

Definition at line 72 of file Framed.h.

Variable Documentation

◆ Cartesian

GAMS_EXPORT const ReferenceFrameType* gams::pose::Cartesian
extern

ReferenceFrameType struct for Cartesian frames.

Used by default by ReferenceFrame objects, or can be passed as first parameter.

◆ degrees

const detail::degrees_t gams::pose::degrees
static

Degres unit flag; see Euler constructor.

Definition at line 90 of file AngleUnits.h.

◆ EARTH_CIRC

constexpr double gams::pose::EARTH_CIRC = EARTH_RADIUS * 2 * M_PI
constexpr

Definition at line 95 of file GPSFrame.h.

◆ EARTH_RADIUS

constexpr double gams::pose::EARTH_RADIUS = 6371000.0
constexpr

Definition at line 94 of file GPSFrame.h.

◆ GPS

GAMS_EXPORT const ReferenceFrameType* gams::pose::GPS
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().

◆ radians

const detail::radians_t gams::pose::radians
static

Radians unit flag; see Euler constructor.

Definition at line 87 of file AngleUnits.h.

◆ revolutions

const detail::revolutions_t gams::pose::revolutions
static

Revolutions (i.e., 1 == 360 degrees) unit flag; see Euler constructor.

Definition at line 93 of file AngleUnits.h.