GAMS  1.2.2
Coordinate.h File Reference
#include "ReferenceFrame.h"
#include "gams/GamsExport.h"
#include <string>
#include <cfloat>
#include <utility>
#include "gams/CPP11_compat.h"
#include "madara/knowledge/containers/DoubleVector.h"
#include "madara/knowledge/containers/NativeDoubleVector.h"
#include "ReferenceFrameFwd.h"
#include "Coordinate.inl"
#include "Framed.h"
#include "Stamped.h"

Go to the source code of this file.

Classes

struct  gams::pose::units::absolute< T >
 Tag that coordinate is a fixed vector, not free. More...
 
struct  gams::pose::units::acceleration
 
class  gams::pose::Accleration
 
class  gams::pose::AcclerationVector
 
struct  gams::pose::units::angular_acceleration
 
struct  gams::pose::units::angular_velocity
 
class  gams::pose::AngularAccleration
 
class  gams::pose::AngularAcclerationVector
 
class  gams::pose::AngularVelocity
 
class  gams::pose::AngularVelocityVector
 
struct  gams::pose::units::base_of< T >
 Trait to strip absolute off a unit tag. More...
 
struct  gams::pose::units::base_of< absolute< T > >
 
struct  gams::pose::basic_positional_mixin< Derived >
 Internal use. More...
 
struct  gams::pose::basic_rotational_mixin< Derived >
 Internal use. More...
 
class  gams::pose::BasicVector< Derived, Units >
 For internal use. The underlying template for all coordinate types. More...
 
struct  gams::pose::common_rotational_mixin< Derived >
 Internal use. More...
 
struct  gams::pose::default_positional_unit_traits
 Internal use. More...
 
struct  gams::pose::default_rotational_unit_traits
 Internal use. More...
 
struct  gams::pose::default_unit_traits
 Internal use. More...
 
class  gams::pose::Displacement
 
class  gams::pose::DisplacementVector
 
struct  gams::pose::fixed_into_free< T >
 Helper struct for defining which fixed coordinate types map to which free vector coordinate types. More...
 
struct  gams::pose::fixed_into_free< Orientation >
 
struct  gams::pose::fixed_into_free< OrientationVector >
 
struct  gams::pose::fixed_into_free< Position >
 
struct  gams::pose::fixed_into_free< PositionVector >
 
struct  gams::pose::fixed_into_free< StampedOrientation >
 
struct  gams::pose::fixed_into_free< StampedPosition >
 
struct  gams::pose::units::length
 
struct  gams::pose::unit_traits< units::angular_acceleration >::mixin< Derived >
 
struct  gams::pose::unit_traits< units::angular_velocity >::mixin< Derived >
 
struct  gams::pose::unit_traits< units::plane_angle >::mixin< Derived >
 
struct  gams::pose::unit_traits< units::absolute< units::plane_angle > >::mixin< Derived >
 
struct  gams::pose::unit_traits< units::acceleration >::mixin< Derived >
 
struct  gams::pose::unit_traits< units::velocity >::mixin< Derived >
 
struct  gams::pose::unit_traits< units::length >::mixin< Derived >
 
struct  gams::pose::unit_traits< units::absolute< units::length > >::mixin< Derived >
 
class  gams::pose::Orientation
 
class  gams::pose::OrientationVector
 
struct  gams::pose::units::plane_angle
 
class  gams::pose::Position
 
class  gams::pose::PositionVector
 
class  gams::pose::Rotation
 
class  gams::pose::RotationVector
 
struct  gams::pose::units::same_base< L, R >
 Trait to compare types, ignoring absolute. More...
 
class  gams::pose::StampedAccleration
 
class  gams::pose::StampedAngularAccleration
 
class  gams::pose::StampedAngularVelocity
 
class  gams::pose::StampedDisplacement
 
class  gams::pose::StampedOrientation
 
class  gams::pose::StampedPosition
 
class  gams::pose::StampedRotation
 
class  gams::pose::StampedVelocity
 
class  gams::pose::default_rotational_unit_traits::storage_mixin
 
class  gams::pose::default_unit_traits::storage_mixin
 
struct  gams::pose::unit_traits< Units >
 Helper trait to customize BasicVector based on unit. More...
 
struct  gams::pose::unit_traits< units::absolute< units::length > >
 
struct  gams::pose::unit_traits< units::absolute< units::plane_angle > >
 
struct  gams::pose::unit_traits< units::acceleration >
 
struct  gams::pose::unit_traits< units::angular_acceleration >
 
struct  gams::pose::unit_traits< units::angular_velocity >
 
struct  gams::pose::unit_traits< units::length >
 
struct  gams::pose::unit_traits< units::plane_angle >
 
struct  gams::pose::unit_traits< units::velocity >
 
class  gams::pose::Velocity
 
struct  gams::pose::units::velocity
 
class  gams::pose::VelocityVector
 

Namespaces

 gams
 Contains all GAMS-related tools, classes and code.
 
 gams::pose
 Provides position and orientation primitives.
 
 gams::pose::units
 Type tags to indicate the dimension a coordinate lies within.
 

Macros

#define GAMS_POSE_MAKE_BINARY_VEC_SCALAR_OP(op)
 Generates Eigen passthroughs for binary ops betwen vector and scalar. More...
 
#define GAMS_POSE_MAKE_COMPOSITE_VEC_SCALAR_OP(op)
 Generates composite assignment operators for Coordinates, using Eigen. More...
 
#define GAMS_POSE_MAKE_COMPOSITE_VECS_OP(op)
 Generates Eigen passthroughs on vectors. More...
 
#define GAMS_POSE_MAKE_COORDINATE_COMPARE_OPS(op)
 Generates comparison operators for coordinate types. More...
 
#define GAMS_POSE_MAKE_COORDINATE_TYPE(name, units)
 Creates the three variants for each coordinate type: {Coordinate}Vector: just the coordinate values alone {Coordinate}: values plus a bound frame Stamped{Coordinate}: values, frame, and timestamp. More...
 
#define GAMS_POSE_MAKE_VEC_SCALAR_OPS(op)
 
#define INVAL_COORD   DBL_MAX
 

Functions

template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator!= (const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs)
 
template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator!= (const Framed< BasicVector< LDerived, Units >> &lhs, const Framed< BasicVector< RDerived, Units >> &rhs)
 
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)
 
template<typename Derived , typename Units , typename Scalar >
auto gams::pose::operator* (Scalar scalar, const BasicVector< Derived, Units > &vec) -> decltype(vec *scalar)
 
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
 
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
 
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
 Pass through to Eigen operator- on vectors, if RHS is free. More...
 
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
 
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
 
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
 
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
 Pass through to Eigen operator- on vectors, for free types. More...
 
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
 
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
 
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
 
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
 
template<typename Derived , typename Units , typename Scalar >
auto gams::pose::operator/ (Scalar scalar, const BasicVector< Derived, Units > &vec) -> decltype(vec/scalar)
 
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
 
template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator< (const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs)
 
template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator< (const Framed< BasicVector< LDerived, Units >> &lhs, const Framed< BasicVector< RDerived, Units >> &rhs)
 
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)
 
std::ostream & gams::pose::operator<< (std::ostream &o, const Eigen::Vector3d &v)
 
template<typename Derived , typename Units >
std::ostream & gams::pose::operator<< (std::ostream &o, const BasicVector< Derived, Units > &v)
 
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)
 
template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator<= (const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs)
 
template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator<= (const Framed< BasicVector< LDerived, Units >> &lhs, const Framed< BasicVector< RDerived, Units >> &rhs)
 
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)
 
template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator== (const Framed< BasicVector< LDerived, Units >> &lhs, const Framed< BasicVector< RDerived, Units >> &rhs)
 
template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator== (const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs)
 
template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator> (const Framed< BasicVector< LDerived, Units >> &lhs, const Framed< BasicVector< RDerived, Units >> &rhs)
 
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)
 
template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator> (const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs)
 
template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator>= (const BasicVector< LDerived, Units > &lhs, const BasicVector< RDerived, Units > &rhs)
 
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)
 
template<typename LDerived , typename RDerived , typename Units >
bool gams::pose::operator>= (const Framed< BasicVector< LDerived, Units >> &lhs, const Framed< BasicVector< RDerived, Units >> &rhs)
 
Eigen::Vector3d gams::pose::quat_to_axis_angle (const Eigen::Quaterniond &quat)
 

Macro Definition Documentation

#define GAMS_POSE_MAKE_BINARY_VEC_SCALAR_OP (   op)
Value:
template<typename Derived, typename Units, typename Scalar> \
inline auto operator op(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 \
{ \
typename BasicVector<Derived, Units>::derived_type ret = vec.self(); \
ret op##= scalar; \
return ret; \
} \
\
template<typename Derived, typename Units, typename Scalar> \
inline auto operator op(Scalar scalar, const BasicVector<Derived, Units> &vec) -> \
decltype(vec op scalar) \
{ \
return vec op scalar; \
}

Generates Eigen passthroughs for binary ops betwen vector and scalar.

Definition at line 798 of file Coordinate.h.

#define GAMS_POSE_MAKE_COMPOSITE_VEC_SCALAR_OP (   op)
Value:
template<typename Derived, typename Units, typename Scalar> \
inline auto operator op##=(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 \
{ \
vec.vec() op##= scalar; \
return vec.self(); \
}

Generates composite assignment operators for Coordinates, using Eigen.

Definition at line 786 of file Coordinate.h.

#define GAMS_POSE_MAKE_COMPOSITE_VECS_OP (   op)

Generates Eigen passthroughs on vectors.

Definition at line 825 of file Coordinate.h.

#define GAMS_POSE_MAKE_COORDINATE_COMPARE_OPS (   op)

Generates comparison operators for coordinate types.

Definition at line 921 of file Coordinate.h.

#define GAMS_POSE_MAKE_COORDINATE_TYPE (   name,
  units 
)

Creates the three variants for each coordinate type: {Coordinate}Vector: just the coordinate values alone {Coordinate}: values plus a bound frame Stamped{Coordinate}: values, frame, and timestamp.

Definition at line 966 of file Coordinate.h.

#define GAMS_POSE_MAKE_VEC_SCALAR_OPS (   op)
Value:
#define GAMS_POSE_MAKE_COMPOSITE_VEC_SCALAR_OP(op)
Generates composite assignment operators for Coordinates, using Eigen.
Definition: Coordinate.h:786
#define GAMS_POSE_MAKE_BINARY_VEC_SCALAR_OP(op)
Generates Eigen passthroughs for binary ops betwen vector and scalar.
Definition: Coordinate.h:798

Definition at line 817 of file Coordinate.h.

#define INVAL_COORD   DBL_MAX

Definition at line 76 of file Coordinate.h.