28 const static bool mhi=
true;
38 Eigen::Vector3d c_eig=Eigen::Map<const Eigen::Vector3d>(c_.
data);
39 Eigen::Map<Eigen::Matrix3d>(
I.
data)=Eigen::Map<const Eigen::Matrix3d>(Ic.
data)-m_*(c_eig*c_eig.transpose()-c_eig.dot(c_eig)*Eigen::Matrix3d::Identity());
60 Eigen::Vector3d r_eig = Eigen::Map<Eigen::Vector3d>(X.
p.
data);
61 Eigen::Vector3d h_eig = Eigen::Map<const Eigen::Vector3d>(I.
h.
data);
62 Eigen::Vector3d hmr_eig = Eigen::Map<Eigen::Vector3d>(hmr.
data);
63 Eigen::Matrix3d rcrosshcross = h_eig *r_eig.transpose()-r_eig.
dot(h_eig)*Eigen::Matrix3d::Identity();
64 Eigen::Matrix3d hmrcrossrcross = r_eig*hmr_eig.transpose()-hmr_eig.dot(r_eig)*Eigen::Matrix3d::Identity();
65 Eigen::Matrix3d R = Eigen::Map<Eigen::Matrix3d>(X.
M.
data);
67 Eigen::Map<Eigen::Matrix3d>(Ib.data) = R*((Eigen::Map<const Eigen::Matrix3d>(I.
I.
data)+rcrosshcross+hmrcrossrcross)*R.transpose());
76 Eigen::Matrix3d R = Eigen::Map<const Eigen::Matrix3d>(M.
data);
78 Eigen::Map<Eigen::Matrix3d>(Ib.data) = R.transpose()*(Eigen::Map<const Eigen::Matrix3d>(I.
I.
data)*R);
88 Eigen::Vector3d r_eig = Eigen::Map<const Eigen::Vector3d>(p.
data);
89 Eigen::Vector3d h_eig = Eigen::Map<Eigen::Vector3d>(this->
h.
data);
90 Eigen::Vector3d hmr_eig = Eigen::Map<Eigen::Vector3d>(hmr.
data);
91 Eigen::Matrix3d rcrosshcross = h_eig * r_eig.transpose()-r_eig.
dot(h_eig)*Eigen::Matrix3d::Identity();
92 Eigen::Matrix3d hmrcrossrcross = r_eig*hmr_eig.transpose()-hmr_eig.dot(r_eig)*Eigen::Matrix3d::Identity();
94 Eigen::Map<Eigen::Matrix3d>(Ib.
data) = Eigen::Map<Eigen::Matrix3d>(this->
I.
data)+rcrosshcross+hmrcrossrcross;
represents rotations in 3 dimensional space.
Vector vel
The velocity of that point.
friend double dot(const Vector &lhs, const Vector &rhs)
6D Inertia of a rigid body
RigidBodyInertia RefPoint(const Vector &p)
Rotation M
Orientation of the Frame.
represents both translational and rotational velocities.
A concrete implementation of a 3 dimensional vector class.
Vector rot
The rotational velocity of that point.
Frame Inverse() const
Gives back inverse transformation of a Frame.
RigidBodyInertia(double m=0, const Vector &oc=Vector::Zero(), const RotationalInertia &Ic=RotationalInertia::Zero())
Vector p
origine of the Frame
represents a frame transformation in 3D space (rotation + translation)
represents both translational and rotational acceleration.
friend RigidBodyInertia operator+(const RigidBodyInertia &Ia, const RigidBodyInertia &Ib)
friend RigidBodyInertia operator*(double a, const RigidBodyInertia &I)