PlatformInertia Class Reference

Rigid-body inertia of the mobile platform, from the robot model. More...

#include <armarx/navigation/simulation/PlatformInertia.h>

Classes

struct  Parameters
 

Public Member Functions

Eigen::Vector3d bias (const Eigen::Vector3d &q, const Eigen::Vector3d &qdot)
 Coriolis, centrifugal and gravity terms at the platform DoFs.
 
Eigen::Matrix3d massMatrix (const Eigen::Vector3d &q)
 Joint-space mass matrix at platform pose q.
 
PlatformInertiaoperator= (const PlatformInertia &)=delete
 
 PlatformInertia (const Parameters &params)
 
 PlatformInertia (const PlatformInertia &)=delete
 
double totalMass ()
 Total mass of everything lumped onto the platform [kg], i.e. massMatrix(0)(0, 0).
 
double yawInertia ()
 Moment of inertia about the platform's yaw axis [kg m^2], at zero yaw.
 
 ~PlatformInertia ()
 

Detailed Description

Rigid-body inertia of the mobile platform, from the robot model.

Wraps a reduced simox-control RBDL model built on the three virtual platform joints (X_Platform, Y_Platform, Yaw_Platform — the PlatformPlanning node set). Everything above the platform is lumped rigidly onto the yaw body at the robot's configuration, so the result is a 3x3 mass matrix in [x, y, yaw].

The reduced model is deliberate: ARMAR-7 uses four-bar joints (Knee, Ankle) and hemisphere joints (wrists) that RBDL cannot represent as ordinary joints. None of them is in PlatformPlanning, so they are only ever lumped as rigid bodies and never need a Jacobian.

Note
The robot must be put into its configuration before the RBDL model is built — simox-control freezes the joint transforms at construction time. The constructor does this in the right order.

Definition at line 60 of file PlatformInertia.h.

Constructor & Destructor Documentation

◆ PlatformInertia() [1/2]

PlatformInertia ( const Parameters & params)
explicit

Definition at line 122 of file PlatformInertia.cpp.

+ Here is the caller graph for this function:

◆ ~PlatformInertia()

~PlatformInertia ( )
default

◆ PlatformInertia() [2/2]

PlatformInertia ( const PlatformInertia & )
delete
+ Here is the call graph for this function:

Member Function Documentation

◆ bias()

Eigen::Vector3d bias ( const Eigen::Vector3d & q,
const Eigen::Vector3d & qdot )

Coriolis, centrifugal and gravity terms at the platform DoFs.

This is InverseDynamics(q, qdot, 0), i.e. the generalized force needed to hold the current velocity. It is non-zero because the centre of mass is offset ~150 mm from the yaw axis. Gravity contributes nothing to purely horizontal DoFs.

Definition at line 139 of file PlatformInertia.cpp.

◆ massMatrix()

Eigen::Matrix3d massMatrix ( const Eigen::Vector3d & q)

Joint-space mass matrix at platform pose q.

Parameters
q[x, y, yaw] with x and y in metres and yaw in rad.
Returns
3x3, SI: [kg, kg, kg m^2] on the diagonal. Depends on yaw only — the two prismatic DoFs are translation-invariant.

Definition at line 133 of file PlatformInertia.cpp.

◆ operator=()

PlatformInertia & operator= ( const PlatformInertia & )
delete
+ Here is the call graph for this function:

◆ totalMass()

double totalMass ( )

Total mass of everything lumped onto the platform [kg], i.e. massMatrix(0)(0, 0).

Definition at line 145 of file PlatformInertia.cpp.

◆ yawInertia()

double yawInertia ( )

Moment of inertia about the platform's yaw axis [kg m^2], at zero yaw.

Definition at line 151 of file PlatformInertia.cpp.


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