This class represents a spatial vector and has 6 elements, with a 3element rotational vector on top of a 3element translational vector.
Important subclasses of SpatialVector include SpatialVelocity, SpatialAcceleration, SpatialForce, and SpatialMomentum. Each of the 3element vectors is assumed to be expressed in the same expressedin frame E. This class only stores 6 elements and does not store the underlying expressedin frame E or other information. The user is responsible for explicitly tracking the underlying frames with monogram notation. For example, Foo_E denotes an arbitrary spatial vector Foo expressed in a frame E. Details on spatial vectors and monogram notation are in sections Spatial Vectors and monogram notation.
SV  The type of the more specialized spatial vector class. It must be a template on the scalar type T. 
T  The scalar type, which must be one of the default scalars. 
#include <drake/multibody/math/spatial_vector.h>
Public Types  
enum  { kSpatialVectorSize = 6, kRotationSize = 3, kTranslationSize = 3 } 
Sizes for spatial quantities and its components in 3D (three dimensions). More...  
using  SpatialQuantity = SV< T > 
The more specialized spatial vector class templated on the scalar type T. More...  
using  CoeffsEigenType = Vector6< T > 
The type of the underlying inmemory representation using an Eigen vector. More...  
Public Member Functions  
SpatialVector ()  
Default constructor. More...  
SpatialVector (const Eigen::Ref< const Vector3< T >> &w, const Eigen::Ref< const Vector3< T >> &v)  
Constructs a spatial vector from a rotational component w and a translational component v. More...  
template<typename OtherDerived >  
SpatialVector (const Eigen::MatrixBase< OtherDerived > &V)  
Constructs a spatial vector V from an Eigen expression that represents a 6element vector (3element rotational vector on top of a 3element translational vector). More...  
int  size () const 
For 3D (threedimensional) analysis, the total size of the concatenated rotational vector (3 elements) and translational vector (3 elements) is six (6), which is known at compile time. More...  
const T &  operator[] (int i) const 
Const access to the ith element of this spatial vector. More...  
T &  operator[] (int i) 
Mutable access to the ith element of this spatial vector. More...  
const Vector3< T > &  rotational () const 
Const access to the rotational component of this spatial vector. More...  
Vector3< T > &  rotational () 
Mutable access to the rotational component of this spatial vector. More...  
const Vector3< T > &  translational () const 
Const access to the translational component of this spatial vector. More...  
Vector3< T > &  translational () 
Mutable access to the translational component of this spatial vector. More...  
const T *  data () const 
Returns a (const) bare pointer to the underlying data. More...  
T *  mutable_data () 
Returns a (mutable) bare pointer to the underlying data. More...  
std::tuple< const T, const T >  GetMaximumAbsoluteDifferences (const SpatialQuantity &other) const 
Returns the maximum absolute values of the differences in the rotational and translational components of this and other (i.e., the infinity norms of the difference in rotational and translational components). More...  
decltype(T()< T())  IsNearlyEqualWithinAbsoluteTolerance (const SpatialQuantity &other, double rotational_tolerance, double translational_tolerance) const 
Compares the rotational and translational parts of this and other to check if they are the same to within specified absolute differences. More...  
decltype(T()< T())  IsApprox (const SpatialQuantity &other, double tolerance=std::numeric_limits< double >::epsilon()) const 
Determines whether all six corresponding elements of two spatial vectors are equal to each other to within a specified tolerance epsilon. More...  
void  SetNaN () 
Sets all the elements in this SpatialVector to NaN. More...  
SpatialQuantity &  SetZero () 
Sets both the rotational and translational components of this SpatialVector to zero. More...  
CoeffsEigenType &  get_coeffs () 
Returns a mutable reference to the underlying storage. More...  
const CoeffsEigenType &  get_coeffs () const 
Returns a constant reference to the underlying storage. More...  
SpatialQuantity  operator () const 
Unary minus operator. More...  
SpatialQuantity &  operator+= (const SpatialQuantity &V) 
Addition assignment operator. More...  
SpatialQuantity &  operator= (const SpatialQuantity &V) 
Subtraction assignment operator. More...  
SpatialQuantity &  operator *= (const T &s) 
Multiplication assignment operator. More...  
Implements CopyConstructible, CopyAssignable, MoveConstructible, MoveAssignable  
SpatialVector (const SpatialVector &)=default  
SpatialVector &  operator= (const SpatialVector &)=default 
SpatialVector (SpatialVector &&)=default  
SpatialVector &  operator= (SpatialVector &&)=default 
Static Public Member Functions  
static SpatialQuantity  Zero () 
Factory to create a zero spatial vector, i.e., a SpatialVector whose rotational and translational components are both zero. More...  
Friends  
SpatialQuantity  operator+ (const SpatialQuantity &V1_E, const SpatialQuantity &V2_E) 
Adds two spatial vectors by simply adding their 6 underlying elements. More...  
SpatialQuantity  operator (const SpatialQuantity &V1, const SpatialQuantity &V2) 
Subtracts two spatial vectors by simply subtracting their 6 underlying elements. More...  
SpatialQuantity  operator * (const math::RotationMatrix< T > &R_FE, const SpatialQuantity &V_E) 
Expresses a spatial vector in another frame. More...  
Related Functions  
(Note that these are not member functions.)  
SpatialQuantity  operator * (const T &s, const SpatialQuantity &V) 
Multiplication of a spatial vector V from the left by a scalar s . More...  
SpatialQuantity  operator * (const SpatialQuantity &V, const T &s) 
Multiplication of a spatial vector V from the right by a scalar s . More...  
template<template< typename > class SpatialQuantity, typename T >  
std::ostream &  operator<< (std::ostream &o, const SpatialVector< SpatialQuantity, T > &V) 
Stream insertion operator to write SpatialVector objects into a std::ostream . More...  
using CoeffsEigenType = Vector6<T> 
The type of the underlying inmemory representation using an Eigen vector.
using SpatialQuantity = SV<T> 
The more specialized spatial vector class templated on the scalar type T.
anonymous enum 

default 

default 
SpatialVector  (  ) 
Default constructor.
In Release builds, all 6 elements of a newly constructed spatial vector are uninitialized (for speed). In Debug builds, the 6 elements are set to NaN so that invalid operations on an uninitialized spatial vector fail fast (fast bug detection).
SpatialVector  (  const Eigen::Ref< const Vector3< T >> &  w, 
const Eigen::Ref< const Vector3< T >> &  v  
) 
Constructs a spatial vector from a rotational component w and a translational component v.

explicit 
Constructs a spatial vector V from an Eigen expression that represents a 6element vector (3element rotational vector on top of a 3element translational vector).
This constructor asserts the size of V is six (6) either at compiletime for fixed sized Eigen expressions or at runtime for dynamic sized Eigen expressions.
const T* data  (  )  const 
Returns a (const) bare pointer to the underlying data.
It is guaranteed that there will be six (6) T's densely packed at data[0], data[1], etc.
CoeffsEigenType& get_coeffs  (  ) 
Returns a mutable reference to the underlying storage.
const CoeffsEigenType& get_coeffs  (  )  const 
Returns a constant reference to the underlying storage.
std::tuple<const T, const T> GetMaximumAbsoluteDifferences  (  const SpatialQuantity &  other  )  const 
Returns the maximum absolute values of the differences in the rotational and translational components of this
and other
(i.e., the infinity norms of the difference in rotational and translational components).
[in]  other  spatial vector to subtract from this spatial vector. 
std::tuple  Description 

w_max_difference  Maximum absolute difference in rotation components 
v_max_difference  Maximum absolute difference in translation components 
decltype(T() < T()) IsApprox  (  const SpatialQuantity &  other, 
double  tolerance = std::numeric_limits<double>::epsilon() 

)  const 
Determines whether all six corresponding elements of two spatial vectors are equal to each other to within a specified tolerance epsilon.
[in]  other  spatial vector to compare to this spatial vector. 
[in]  epsilon  specified tolerance for this test. 
decltype(T() < T()) IsNearlyEqualWithinAbsoluteTolerance  (  const SpatialQuantity &  other, 
double  rotational_tolerance,  
double  translational_tolerance  
)  const 
Compares the rotational and translational parts of this
and other
to check if they are the same to within specified absolute differences.
[in]  other  spatial vector to compare to this spatial vector. 
[in]  rotational_tolerance  maximum allowable absolute difference between the rotational parts of this and other . The units depend on the underlying class. For example, spatial velocity, acceleration, and force have units of rad/sec, rad/sec^2, and N*m, respectively. 
[in]  translational_tolerance  maximum allowable absolute difference between the translational parts of this and other . The units depend on the underlying class. For example, spatial velocity, acceleration, and force have units of meter/sec, meter/sec^2, and Newton, respectively. 
this
and other
are equal within rotational_tolerance and all three translational elements of this
and other
are equal within translational_tolerance. T* mutable_data  (  ) 
Returns a (mutable) bare pointer to the underlying data.
It is guaranteed that there will be six (6) T's densely packed at data[0], data[1], etc.
SpatialQuantity& operator *=  (  const T &  s  ) 
Multiplication assignment operator.
SpatialQuantity& operator+=  (  const SpatialQuantity &  V  ) 
Addition assignment operator.
SpatialQuantity operator  (  )  const 
Unary minus operator.
SpatialQuantity& operator=  (  const SpatialQuantity &  V  ) 
Subtraction assignment operator.

default 

default 
const T& operator[]  (  int  i  )  const 
Const access to the ith element of this spatial vector.
In Debug builds, this function asserts that i is in bounds whereas for release builds, no boundscheck on i is performed (for speed).
T& operator[]  (  int  i  ) 
Mutable access to the ith element of this spatial vector.
In Debug builds, this function asserts that i is in bounds whereas for release builds, no boundscheck on i is performed (for speed).
const Vector3<T>& rotational  (  )  const 
Const access to the rotational component of this spatial vector.
Vector3<T>& rotational  (  ) 
Mutable access to the rotational component of this spatial vector.
void SetNaN  (  ) 
Sets all the elements in this
SpatialVector to NaN.
This is typically used to quickly detect uninitialized values since NaN will trigger a chain of invalid computations that can be tracked back to their source.
SpatialQuantity& SetZero  (  ) 
Sets both the rotational and translational components of this
SpatialVector to zero.
int size  (  )  const 
For 3D (threedimensional) analysis, the total size of the concatenated rotational vector (3 elements) and translational vector (3 elements) is six (6), which is known at compile time.
const Vector3<T>& translational  (  )  const 
Const access to the translational component of this spatial vector.
Vector3<T>& translational  (  ) 
Mutable access to the translational component of this spatial vector.

static 
Factory to create a zero spatial vector, i.e., a SpatialVector whose rotational and translational components are both zero.

friend 
Multiplication of a spatial vector V from the left by a scalar s
.

friend 
Multiplication of a spatial vector V from the right by a scalar s
.

friend 
Expresses a spatial vector in another frame.
[in]  R_FE  RotationMatrix relating a frame F to a frame E. 
[in]  V_E  spatial vector expressed in frame E. 
V_F.rotational() = R_FE * V_E.rotational(), V_F.translational() = R_FE * V_E.translational()

friend 
Adds two spatial vectors by simply adding their 6 underlying elements.
[in]  V1_E  spatial vector expressed in the same frame E as V2_E. 
[in]  V2_E  spatial vector expressed in the same frame E as V1_E. 

friend 
Subtracts two spatial vectors by simply subtracting their 6 underlying elements.
[in]  V1_E  spatial vector expressed in the same frame E as V2_E. 
[in]  V2_E  spatial vector expressed in the same frame E as V1_E. 

related 
Stream insertion operator to write SpatialVector objects into a std::ostream
.
Especially useful for debugging.