base
Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
base::samples::BodyState Struct Reference

#include <BodyState.hpp>

Public Member Functions

 BodyState (bool doInvalidation=true)
 
 BodyState (const base::TransformWithCovariance &pose, const base::TwistWithCovariance &velocity)
 
void setPose (const base::Affine3d &pose)
 
const base::Affine3d getPose () const
 
double getYaw () const
 
double getPitch () const
 
double getRoll () const
 
const base::Positionposition () const
 
base::Positionposition ()
 
const base::Quaterniondorientation () const
 
base::Quaterniondorientation ()
 
const base::Vector3dlinear_velocity () const
 
base::Positionlinear_velocity ()
 
const base::Vector3dangular_velocity () const
 
base::Positionangular_velocity ()
 
const base::Matrix6dcov_pose () const
 
base::Matrix6dcov_pose ()
 
const base::Matrix3d cov_orientation () const
 
void cov_orientation (const base::Matrix3d &cov)
 
const base::Matrix3d cov_position () const
 
void cov_position (const base::Matrix3d &cov)
 
const base::Matrix6dcov_velocity () const
 
base::Matrix6dcov_velocity ()
 
const base::Matrix3d cov_linear_velocity () const
 
void cov_linear_velocity (const base::Matrix3d &cov)
 
const base::Matrix3d cov_angular_velocity () const
 
void cov_angular_velocity (const base::Matrix3d &cov)
 
void initSane ()
 
void invalidate ()
 
void initUnknown ()
 
bool hasValidPose () const
 
bool hasValidPoseCovariance () const
 
void invalidatePose ()
 
void invalidatePoseCovariance ()
 
bool hasValidVelocity () const
 
bool hasValidVelocityCovariance () const
 
void invalidateVelocity ()
 
void invalidateVelocityCovariance ()
 
void invalidateValues (bool pose=true, bool velocity=true)
 
void invalidateCovariances (bool pose=true, bool velocity=true)
 
BodyStateoperator= (const base::samples::RigidBodyState &rbs)
 
BodyState composition (const BodyState &bs) const
 
BodyState operator* (const BodyState &bs) const
 

Static Public Member Functions

static BodyState Unknown ()
 
static BodyState Invalid ()
 

Public Attributes

base::Time time
 
base::TransformWithCovariance pose
 
base::TwistWithCovariance velocity
 

Friends

std::ostream & operator<< (std::ostream &out, const TransformWithCovariance &trans)
 

Detailed Description

Representation of the state of a rigid body

This is among other things used to express frame transformations by Rock's transformer

Given a source and target frame, this structure expresses the frame change between these two frames. In effect, it represents the state of the source frame expressed in the target frame.

Per Rock's conventions, you should use a X-forward, right handed coordinate system when assigning frames to bodies (i.e. X=forward, Y=left, Z=up). In addition, world-fixed frames should be aligned to North (North-East-Up)

For instance, if sourceFrame is "body" and targetFrame is "world", then the BodyState object is the state of body in the world frame (usually, the world frame has an arbitrary origin and a North-East-Up orientation).

Constructor & Destructor Documentation

◆ BodyState() [1/2]

base::samples::BodyState::BodyState ( bool  doInvalidation = true)

◆ BodyState() [2/2]

base::samples::BodyState::BodyState ( const base::TransformWithCovariance pose,
const base::TwistWithCovariance velocity 
)
inline

Member Function Documentation

◆ angular_velocity() [1/2]

const Vector3d & base::samples::BodyState::angular_velocity ( ) const

◆ angular_velocity() [2/2]

Position & base::samples::BodyState::angular_velocity ( )

◆ composition()

BodyState base::samples::BodyState::composition ( const BodyState bs) const

performs a composition of this Body State with the Body State given. The result is another Body State with result = this * trans

◆ cov_angular_velocity() [1/2]

const Matrix3d base::samples::BodyState::cov_angular_velocity ( ) const

A read-only expression of the angular velocity covariance

◆ cov_angular_velocity() [2/2]

void base::samples::BodyState::cov_angular_velocity ( const base::Matrix3d cov)

◆ cov_linear_velocity() [1/2]

const Matrix3d base::samples::BodyState::cov_linear_velocity ( ) const

A read-only expression of the linear velocity covariance

◆ cov_linear_velocity() [2/2]

void base::samples::BodyState::cov_linear_velocity ( const base::Matrix3d cov)

◆ cov_orientation() [1/2]

const Matrix3d base::samples::BodyState::cov_orientation ( ) const

A read-only expression of the rotation covariance

◆ cov_orientation() [2/2]

void base::samples::BodyState::cov_orientation ( const base::Matrix3d cov)

◆ cov_pose() [1/2]

const Matrix6d & base::samples::BodyState::cov_pose ( ) const

A read-only expression of the pose covariance

◆ cov_pose() [2/2]

Matrix6d & base::samples::BodyState::cov_pose ( )

◆ cov_position() [1/2]

const Matrix3d base::samples::BodyState::cov_position ( ) const

A read-only expression of the position covariance

◆ cov_position() [2/2]

void base::samples::BodyState::cov_position ( const base::Matrix3d cov)

◆ cov_velocity() [1/2]

const Matrix6d & base::samples::BodyState::cov_velocity ( ) const

A read-only expression of the velocity covariance

◆ cov_velocity() [2/2]

Matrix6d & base::samples::BodyState::cov_velocity ( )

◆ getPitch()

double base::samples::BodyState::getPitch ( ) const

◆ getPose()

const Affine3d base::samples::BodyState::getPose ( ) const

◆ getRoll()

double base::samples::BodyState::getRoll ( ) const

◆ getYaw()

double base::samples::BodyState::getYaw ( ) const

◆ hasValidPose()

bool base::samples::BodyState::hasValidPose ( ) const

◆ hasValidPoseCovariance()

bool base::samples::BodyState::hasValidPoseCovariance ( ) const

◆ hasValidVelocity()

bool base::samples::BodyState::hasValidVelocity ( ) const

◆ hasValidVelocityCovariance()

bool base::samples::BodyState::hasValidVelocityCovariance ( ) const

◆ initSane()

void base::samples::BodyState::initSane ( )

For backward compatibility only. Use invalidate()

◆ initUnknown()

void base::samples::BodyState::initUnknown ( )

Initializes the rigid body state unknown with Zero for the position, velocity and angular velocity, Identity for the orientation and infinity for all covariances.

◆ Invalid()

BodyState base::samples::BodyState::Invalid ( )
static

◆ invalidate()

void base::samples::BodyState::invalidate ( )

Initializes the rigid body state with NaN for the position, velocity, orientation and angular velocity.

◆ invalidateCovariances()

void base::samples::BodyState::invalidateCovariances ( bool  pose = true,
bool  velocity = true 
)

◆ invalidatePose()

void base::samples::BodyState::invalidatePose ( )

◆ invalidatePoseCovariance()

void base::samples::BodyState::invalidatePoseCovariance ( )

◆ invalidateValues()

void base::samples::BodyState::invalidateValues ( bool  pose = true,
bool  velocity = true 
)

◆ invalidateVelocity()

void base::samples::BodyState::invalidateVelocity ( )

◆ invalidateVelocityCovariance()

void base::samples::BodyState::invalidateVelocityCovariance ( )

◆ linear_velocity() [1/2]

const Vector3d & base::samples::BodyState::linear_velocity ( ) const

◆ linear_velocity() [2/2]

Position & base::samples::BodyState::linear_velocity ( )

◆ operator*()

BodyState base::samples::BodyState::operator* ( const BodyState bs) const

alias for the composition of two body states

The composition of two body states is here defined as the composition of the pose transformation as it is defined in the TransformWithCovariance. The velocity held by the last body state (here bs1) is assumed to be the current "instantaneous" body state velocity and of the resulting body state.

Resulting velocity and covariance with respect to the pose base frame

Uncertainty propagation through assuming linear transformation. From R. Astudillo and R.Kolossa Chapter 3 Uncertainty Propagation

Improvement at this point(TO-DO): change to Jacobian derivation since the propagation is not linear

◆ operator=()

BodyState & base::samples::BodyState::operator= ( const base::samples::RigidBodyState rbs)

For backward compatibility with RBS

extract the transformation

and the transformation covariance

Extract the velocity

Extract the velocity covariance

◆ orientation() [1/2]

const Quaterniond & base::samples::BodyState::orientation ( ) const

A read-only expression of the rotation

◆ orientation() [2/2]

Quaterniond & base::samples::BodyState::orientation ( )

◆ position() [1/2]

const Position & base::samples::BodyState::position ( ) const

◆ position() [2/2]

Position & base::samples::BodyState::position ( )

◆ setPose()

void base::samples::BodyState::setPose ( const base::Affine3d pose)

◆ Unknown()

BodyState base::samples::BodyState::Unknown ( )
static

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  out,
const TransformWithCovariance trans 
)
friend

Default std::cout function

cout the 6D pose vector (translation and scaled axis orientation) with its associated covariance matrix

Member Data Documentation

◆ pose

base::TransformWithCovariance base::samples::BodyState::pose

Robot pose: rotation in radians and translation in meters

◆ time

base::Time base::samples::BodyState::time

Time-stamp

◆ velocity

base::TwistWithCovariance base::samples::BodyState::velocity

TwistWithCovariance: Linear[m/s] and Angular[rad/s] Velocity of the Body It is assumed here that velocity is the derivative of a delta pose for a given interval. When such interval tends to zero, one could talk of instantaneous velocity


The documentation for this struct was generated from the following files: