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.
 
PlatformInertia & operator= (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.

Constructor & Destructor Documentation

◆ PlatformInertia() [1/2]

PlatformInertia ( const Parameters & params)
explicit

◆ ~PlatformInertia()

~PlatformInertia ( )
default

◆ PlatformInertia() [2/2]

PlatformInertia ( const PlatformInertia & )
delete

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.

◆ 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.

◆ operator=()

PlatformInertia & operator= ( const PlatformInertia & )
delete

◆ totalMass()

double totalMass ( )

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

◆ yawInertia()

double yawInertia ( )

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


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