KDL
1.4.0
|
6D Inertia of a rigid body More...
#include <src/rigidbodyinertia.hpp>
Public Member Functions | |
RigidBodyInertia (double m=0, const Vector &oc=Vector::Zero(), const RotationalInertia &Ic=RotationalInertia::Zero()) | |
This constructor creates a cartesian space inertia matrix, the arguments are the mass, the vector from the reference point to cog and the rotational inertia in the cog. More... | |
~RigidBodyInertia () | |
RigidBodyInertia | RefPoint (const Vector &p) |
Reference point change with v the vector from the old to the new point expressed in the current reference frame. More... | |
double | getMass () const |
Get the mass of the rigid body. More... | |
Vector | getCOG () const |
Get the center of gravity of the rigid body. More... | |
RotationalInertia | getRotationalInertia () const |
Get the rotational inertia expressed in the reference frame (not the cog) More... | |
Static Public Member Functions | |
static RigidBodyInertia | Zero () |
Creates an inertia with zero mass, and zero RotationalInertia. More... | |
Private Member Functions | |
RigidBodyInertia (double m, const Vector &h, const RotationalInertia &I, bool mhi) | |
Private Attributes | |
double | m |
Vector | h |
RotationalInertia | I |
Friends | |
class | ArticulatedBodyInertia |
RigidBodyInertia | operator* (double a, const RigidBodyInertia &I) |
Scalar product: I_new = double * I_old. More... | |
RigidBodyInertia | operator+ (const RigidBodyInertia &Ia, const RigidBodyInertia &Ib) |
addition I: I_new = I_old1 + I_old2, make sure that I_old1 and I_old2 are expressed in the same reference frame/point, otherwise the result is worth nothing More... | |
Wrench | operator* (const RigidBodyInertia &I, const Twist &t) |
calculate spatial momentum: h = I*v make sure that the twist v and the inertia are expressed in the same reference frame/point More... | |
RigidBodyInertia | operator* (const Frame &T, const RigidBodyInertia &I) |
Coordinate system transform Ia = T_a_b*Ib with T_a_b the frame from a to b. More... | |
RigidBodyInertia | operator* (const Rotation &R, const RigidBodyInertia &I) |
Reference frame orientation change Ia = R_a_b*Ib with R_a_b the rotation of b expressed in a. More... | |
6D Inertia of a rigid body
The inertia is defined in a certain reference point and a certain reference base. The reference point does not have to coincide with the origin of the reference frame.
|
explicit |
This constructor creates a cartesian space inertia matrix, the arguments are the mass, the vector from the reference point to cog and the rotational inertia in the cog.
References KDL::RotationalInertia::data, KDL::Vector::data, and I.
Referenced by getRotationalInertia(), KDL::operator*(), KDL::operator+(), RefPoint(), and Zero().
|
inline |
References I, operator*, operator+, and RefPoint().
|
private |
|
inline |
Get the center of gravity of the rigid body.
References h, m, and KDL::Vector::Zero().
|
inline |
Get the mass of the rigid body.
References m.
|
inline |
Get the rotational inertia expressed in the reference frame (not the cog)
References h, I, m, KDL::mhi, and RigidBodyInertia().
RigidBodyInertia KDL::RigidBodyInertia::RefPoint | ( | const Vector & | p | ) |
Reference point change with v the vector from the old to the new point expressed in the current reference frame.
References KDL::RotationalInertia::data, KDL::Vector::data, KDL::Vector::dot, h, I, m, and RigidBodyInertia().
Referenced by ~RigidBodyInertia().
|
inlinestatic |
Creates an inertia with zero mass, and zero RotationalInertia.
References RigidBodyInertia(), KDL::RotationalInertia::Zero(), and KDL::Vector::Zero().
|
friend |
|
friend |
Scalar product: I_new = double * I_old.
Referenced by ~RigidBodyInertia().
|
friend |
calculate spatial momentum: h = I*v make sure that the twist v and the inertia are expressed in the same reference frame/point
|
friend |
Coordinate system transform Ia = T_a_b*Ib with T_a_b the frame from a to b.
|
friend |
Reference frame orientation change Ia = R_a_b*Ib with R_a_b the rotation of b expressed in a.
|
friend |
addition I: I_new = I_old1 + I_old2, make sure that I_old1 and I_old2 are expressed in the same reference frame/point, otherwise the result is worth nothing
Referenced by ~RigidBodyInertia().
|
private |
|
private |
|
private |