GAMS  1.2.2
ReferenceFrame.h File Reference
#include "gams/GamsExport.h"
#include "gams/CPP11_compat.h"
#include <vector>
#include <string>
#include <cstring>
#include <sstream>
#include <utility>
#include <memory>
#include <stdexcept>
#include <mutex>
#include "ReferenceFrameFwd.h"
#include "CartesianFrame.h"
#include "Pose.h"
#include "Quaternion.h"
#include "madara/knowledge/EvalSettings.h"
#include "ReferenceFrame.inl"

Go to the source code of this file.

Classes

class  gams::pose::FrameStore
 Class for storing and loading frames in a given KnowledgeBase, using given settings, with a set expiry. More...
 
class  gams::pose::ReferenceFrameIdentity
 For internal use. More...
 
class  gams::pose::ReferenceFrameVersion
 For internal use. More...
 
class  gams::pose::undefined_transform
 Thrown when an attempt is made to transform between two frame types, and there's not transform defined. More...
 
class  gams::pose::unrelated_frames
 Thrown when an an attempt is made to transform between frames that do not belong to the same frame tree. More...
 

Namespaces

 gams
 Contains all GAMS-related tools, classes and code.
 
 gams::pose
 Provides position and orientation primitives.
 
 gams::pose::impl
 Private implementation details.
 
 gams::pose::simple_rotate
 For internal use.
 

Functions

double gams::pose::simple_rotate::calc_angle (const ReferenceFrameType *self, double rx1, double ry1, double rz1, double rx2, double ry2, double rz2)
 Calculates smallest angle between two AngularVectors. More...
 
void gams::pose::default_normalize_angular (const ReferenceFrameType *, double &, double &, double &)
 
void gams::pose::default_normalize_linear (const ReferenceFrameType *, double &, double &, double &)
 
void gams::pose::default_normalize_pose (const ReferenceFrameType *self, double &x, double &y, double &z, double &rx, double &ry, double &rz)
 
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. More...
 
 gams::pose::MADARA_MAKE_VAL_SUPPORT_TEST (nano_timestamp, x,(x.nanos(), x.nanos(0UL)))
 Type trait to detect stamped types. More...
 
static std::string & gams::pose::impl::make_kb_key (std::string &prefix, const std::string &id)
 
static std::string & gams::pose::impl::make_kb_key (std::string &prefix, uint64_t timestamp)
 
static std::string & gams::pose::impl::make_kb_key (std::string &prefix, const std::string &id, uint64_t timestamp)
 
void gams::pose::simple_rotate::orient_linear_vec (double &x, double &y, double &z, double rx, double ry, double rz, bool reverse=false)
 Rotates a LinearVector according to a AngularVector. More...
 
void gams::pose::simple_rotate::transform_angular_from_origin (const ReferenceFrameType *origin, const ReferenceFrameType *self, double orx, double ory, double orz, double &rx, double &ry, double &rz)
 Transform AngularVector in-place from its origin frame. More...
 
void gams::pose::simple_rotate::transform_angular_to_origin (const ReferenceFrameType *origin, const ReferenceFrameType *self, double orx, double ory, double orz, double &rx, double &ry, double &rz)
 Transform AngularVector in-place into its origin frame from this frame. More...
 
void gams::pose::simple_rotate::transform_pose_from_origin (const ReferenceFrameType *origin, const ReferenceFrameType *self, double ox, double oy, double oz, double orx, double ory, double orz, double &x, double &y, double &z, double &rx, double &ry, double &rz, bool fixed)
 Transform pose in-place from its origin frame Simply applies linear and angular transforms independantly. More...
 
void gams::pose::simple_rotate::transform_pose_to_origin (const ReferenceFrameType *origin, const ReferenceFrameType *self, double ox, double oy, double oz, double orx, double ory, double orz, double &x, double &y, double &z, double &rx, double &ry, double &rz, bool fixed)
 Transform pose in-place into its origin frame from this frame. More...
 
uint64_t gams::pose::try_get_nano_time (uint64_t def)
 Base case: return default. More...
 
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
 If T supports nanos(), call it and return value. More...
 
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
 If T doesn't support nanos(), recurse to remaining args. More...