17 #ifndef GAZEBO_PHYSICS_INERTIAL_HH_
18 #define GAZEBO_PHYSICS_INERTIAL_HH_
29 #include <ignition/math/Inertial.hh>
31 #include <ignition/math/Vector3.hh>
32 #include <ignition/math/Quaternion.hh>
33 #include <ignition/math/Matrix3.hh>
48 class InertialPrivate;
62 public:
explicit Inertial(
const double _mass);
66 public:
Inertial(
const ignition::math::Inertiald &_inertial);
77 public:
void Load(sdf::ElementPtr _sdf);
81 public:
void UpdateParameters(sdf::ElementPtr _sdf);
87 public: ignition::math::Inertiald Ign()
const;
91 public:
void SetMass(
const double _m);
99 public:
double Mass()
const;
108 public:
void SetInertiaMatrix(
109 const double _ixx,
const double _iyy,
const double _izz,
110 const double _ixy,
const double _ixz,
const double iyz);
116 public:
void SetCoG(
const double _cx,
const double _cy,
const double _cz);
125 public:
void SetCoG(
const ignition::math::Vector3d &_center);
135 public:
void SetCoG(
const double _cx,
const double _cy,
const double _cz,
136 const double _rx,
const double _ry,
const double _rz);
145 public:
void SetCoG(
const ignition::math::Pose3d &_c);
154 public:
const ignition::math::Vector3d &CoG()
const;
165 public: ignition::math::Pose3d Pose()
const;
174 public:
const ignition::math::Vector3d &PrincipalMoments()
const;
183 public:
const ignition::math::Vector3d &ProductsOfInertia()
const;
192 public:
double IXX()
const;
201 public:
double IYY()
const;
210 public:
double IZZ()
const;
219 public:
double IXY()
const;
228 public:
double IXZ()
const;
237 public:
double IYZ()
const;
241 public:
void SetIXX(
const double _v);
245 public:
void SetIYY(
const double _v);
249 public:
void SetIZZ(
const double _v);
253 public:
void SetIXY(
const double _v);
257 public:
void SetIXZ(
const double _v);
261 public:
void SetIYZ(
const double _v);
270 public:
void Rotate(
const ignition::math::Quaterniond &_rot);
280 public:
Inertial &operator=(
const ignition::math::Inertiald &_inertial);
298 public:
void ProcessMsg(
const msgs::Inertial &_msg);
320 public: ignition::math::Matrix3d MOI(
321 const ignition::math::Pose3d &_pose)
const;
339 const ignition::math::Pose3d &_frameOffset)
const;
348 const ignition::math::Vector3d &_frameOffset)
const;
356 _out <<
"Mass[" << _inertial.
Mass() <<
"] CoG["
357 << _inertial.
CoG() <<
"]\n";
374 public: ignition::math::Matrix3d MOI() const;
379 public:
void SetMOI(const math::Matrix3 &_moi) GAZEBO_DEPRECATED(8.0);
383 public:
void SetMOI(const ignition::math::Matrix3d &_moi);
387 private: std::unique_ptr<InertialPrivate> dataPtr;
Encapsulates a position and rotation in three space.
Definition: Pose.hh:42
const ignition::math::Vector3d & CoG() const
Get the center of gravity.
The Vector3 class represents the generic vector containing 3 elements.
Definition: Vector3.hh:44
const ignition::math::Vector3d & PrincipalMoments() const
Get the principal moments of inertia (Ixx, Iyy, Izz).
double Mass() const
Get the mass.
A 3x3 matrix class.
Definition: Matrix3.hh:40
A class for inertial information about a link.
Definition: Inertial.hh:55
friend std::ostream & operator<<(std::ostream &_out, const gazebo::physics::Inertial &_inertial)
Output operator.
Definition: Inertial.hh:353
A quaternion class.
Definition: Quaternion.hh:48
#define GAZEBO_DEPRECATED(version)
Definition: system.hh:302
const ignition::math::Vector3d & ProductsOfInertia() const
Get the products of inertia (Ixy, Ixz, Iyz).