Robot Dynamics Library
Public Member Functions | Public Attributes | List of all members
RobotDynamics::Math::RigidBodyInertia Class Reference

This class stores a bodies mass, center of mass, and inertia information. The inertia elements are stored individually since the inertia matrix is a 3x3 symmetric matrix. The bodies inertia matrix, expressed about its center of mass, can be reconstructed as. More...

#include <RigidBodyInertia.hpp>

Inheritance diagram for RobotDynamics::Math::RigidBodyInertia:
Inheritance graph
[legend]
Collaboration diagram for RobotDynamics::Math::RigidBodyInertia:
Collaboration graph
[legend]

Public Member Functions

 RigidBodyInertia ()
 Constructor. More...
 
 RigidBodyInertia (double mass, const Vector3d &com_mass, const Matrix3d &inertia)
 Constructor. More...
 
 RigidBodyInertia (double m, const Vector3d &h, const double Ixx, const double Iyx, const double Iyy, const double Izx, const double Izy, const double Izz)
 Constructor. More...
 
 RigidBodyInertia (const RigidBodyInertia &inertia)
 Copy constructor. More...
 
void set (const RigidBodyInertia &I)
 Setter. More...
 
void set (double m, const Vector3d &h, const double Ixx, const double Iyx, const double Iyy, const double Izx, const double Izy, const double Izz)
 Setter. More...
 
void operator+= (const RigidBodyInertia &rbi)
 Overloaded plus-equals operator. Adds two inertia matrices. More...
 
void transform (const SpatialTransform &X)
 Transform a Math::RigidBodyInertia matrix. More...
 
RigidBodyInertia transform_copy (const SpatialTransform &X) const
 Copy, transform, and return a Math::RigidBodyInertia. More...
 
void createFromMatrix (const SpatialMatrix &Ic)
 Create a Math::RigidBodyInertia object from a 6x6 Math::SpatialMatrix. More...
 
SpatialMatrix toMatrix () const
 
void setSpatialMatrix (SpatialMatrix &mat) const
 Store a Math::RigidBodyInertia in the Math::SpatialMatrix. More...
 
SpatialMatrix subtractSpatialMatrix (const SpatialMatrix &m) const
 Given Math::RigidBodyInertia $ I_r $ ad Math::SpatialMatrix $ M_I $, returns Math::SpatialMatrix $ M_r $ such that $ M_r = I_r - M_I $. More...
 
SpatialVector timesSpatialVector (const SpatialVector &v) const
 Multiply a Math::RigidBodyInertia by a Math::SpatialVector and return the result as a new Math::SpatialVector. More...
 
Matrix63 multiplyMatrix63 (Matrix63 m) const
 A helper method that returns a 6x3 matrix that is a Math::RigidBodyInertia multiplied by a 6x3 matrix. More...
 
RigidBodyInertiaoperator= (const RigidBodyInertia &I)
 

Public Attributes

double m
 
Vector3d h
 
double Ixx
 
double Iyx
 
double Iyy
 
double Izx
 
double Izy
 
double Izz
 

Detailed Description

This class stores a bodies mass, center of mass, and inertia information. The inertia elements are stored individually since the inertia matrix is a 3x3 symmetric matrix. The bodies inertia matrix, expressed about its center of mass, can be reconstructed as.

\[ I_c = \begin{bmatrix} I_xx & I_yx & I_zx \\ I_yx & I_yy & I_zy \\ I_zx & I_zy & I_zz \end{bmatrix} \]

The full RigidBodyInertia matrix has the following structure,

\[ \begin{bmatrix} I_c + (h\times)h & h\times \\ -h\times & \mathbf{1}_{3\times3}m \end{bmatrix} \]

where $ \mathbf{1}_{3\times 3} $ is a 3x3 identity matrix

Constructor & Destructor Documentation

◆ RigidBodyInertia() [1/4]

RobotDynamics::Math::RigidBodyInertia::RigidBodyInertia ( )
inline

Constructor.

◆ RigidBodyInertia() [2/4]

RobotDynamics::Math::RigidBodyInertia::RigidBodyInertia ( double  mass,
const Vector3d com_mass,
const Matrix3d inertia 
)
inline

Constructor.

Parameters
massBody mass
com_massVector pointing to center of mass scaled by the body mass
inertia3x3 Inertia tensor about the bodies center of mass

◆ RigidBodyInertia() [3/4]

RobotDynamics::Math::RigidBodyInertia::RigidBodyInertia ( double  m,
const Vector3d h,
const double  Ixx,
const double  Iyx,
const double  Iyy,
const double  Izx,
const double  Izy,
const double  Izz 
)
inline

Constructor.

Parameters
mBody mass
hVector pointing to center of mass scaled by the body mass
Ixx
Iyx
Iyy
Izx
Izy
Izz

◆ RigidBodyInertia() [4/4]

RobotDynamics::Math::RigidBodyInertia::RigidBodyInertia ( const RigidBodyInertia inertia)
inline

Copy constructor.

Parameters
inertia

Member Function Documentation

◆ createFromMatrix()

void RobotDynamics::Math::RigidBodyInertia::createFromMatrix ( const SpatialMatrix Ic)

Create a Math::RigidBodyInertia object from a 6x6 Math::SpatialMatrix.

Parameters
Ic

◆ multiplyMatrix63()

Matrix63 RobotDynamics::Math::RigidBodyInertia::multiplyMatrix63 ( Matrix63  m) const
inline

A helper method that returns a 6x3 matrix that is a Math::RigidBodyInertia multiplied by a 6x3 matrix.

Parameters
m
Returns
The result of multiplying a Math::RigidBodyInertia by a 6x3 matrix

◆ operator+=()

void RobotDynamics::Math::RigidBodyInertia::operator+= ( const RigidBodyInertia rbi)

Overloaded plus-equals operator. Adds two inertia matrices.

Parameters
rbi

◆ operator=()

RigidBodyInertia& RobotDynamics::Math::RigidBodyInertia::operator= ( const RigidBodyInertia I)
inline

◆ set() [1/2]

void RobotDynamics::Math::RigidBodyInertia::set ( const RigidBodyInertia I)
inline

Setter.

Parameters
I

◆ set() [2/2]

void RobotDynamics::Math::RigidBodyInertia::set ( double  m,
const Vector3d h,
const double  Ixx,
const double  Iyx,
const double  Iyy,
const double  Izx,
const double  Izy,
const double  Izz 
)
inline

Setter.

Parameters
mBody mass
hVector pointing to center of mass scaled by the body mass
Ixx
Iyx
Iyy
Izx
Izy
Izz

◆ setSpatialMatrix()

void RobotDynamics::Math::RigidBodyInertia::setSpatialMatrix ( SpatialMatrix mat) const

Store a Math::RigidBodyInertia in the Math::SpatialMatrix.

Parameters
matModified to store a Math::RigidBodyInertia in the Math::SpatialMatrix

◆ subtractSpatialMatrix()

SpatialMatrix RobotDynamics::Math::RigidBodyInertia::subtractSpatialMatrix ( const SpatialMatrix m) const
inline

Given Math::RigidBodyInertia $ I_r $ ad Math::SpatialMatrix $ M_I $, returns Math::SpatialMatrix $ M_r $ such that $ M_r = I_r - M_I $.

Parameters
m
Returns
New Math::SpatialMatrix that is the Math::SpatialMatrix subtracted from a Math::RigidBodyInertia

◆ timesSpatialVector()

SpatialVector RobotDynamics::Math::RigidBodyInertia::timesSpatialVector ( const SpatialVector v) const
inline

Multiply a Math::RigidBodyInertia by a Math::SpatialVector and return the result as a new Math::SpatialVector.

Parameters
v
Returns
The result of a Math::RigidBodyInertia multiplied by a Math::SpatialVector

◆ toMatrix()

SpatialMatrix RobotDynamics::Math::RigidBodyInertia::toMatrix ( ) const

Get a Math::RigidBodyInertia as a 6x6 Math::SpatialMatrix

Returns
A 6x6 matrix representing a Math::SpatialInertia matrix

◆ transform()

void RobotDynamics::Math::RigidBodyInertia::transform ( const SpatialTransform X)
virtual

Transform a Math::RigidBodyInertia matrix.

Parameters
X

Implements RobotDynamics::Math::TransformableGeometricObject.

◆ transform_copy()

RigidBodyInertia RobotDynamics::Math::RigidBodyInertia::transform_copy ( const SpatialTransform X) const
inline

Copy, transform, and return a Math::RigidBodyInertia.

Parameters
X
Returns
Returns a copied and transformed Math::RigidBodyInertia

Member Data Documentation

◆ h

Vector3d RobotDynamics::Math::RigidBodyInertia::h

Vector pointing to body center of mass in body frame, scaled by body mass

◆ Ixx

double RobotDynamics::Math::RigidBodyInertia::Ixx

Element in body's inertia matrix

◆ Iyx

double RobotDynamics::Math::RigidBodyInertia::Iyx

Element in body's inertia matrix

◆ Iyy

double RobotDynamics::Math::RigidBodyInertia::Iyy

Element in body's inertia matrix

◆ Izx

double RobotDynamics::Math::RigidBodyInertia::Izx

Element in body's inertia matrix

◆ Izy

double RobotDynamics::Math::RigidBodyInertia::Izy

Element in body's inertia matrix

◆ Izz

double RobotDynamics::Math::RigidBodyInertia::Izz

Element in body's inertia matrix

◆ m

double RobotDynamics::Math::RigidBodyInertia::m

Mass


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