Ravelin
RigidBody.h
1 /****************************************************************************
2  * Copyright 2015 Evan Drumwright
3  * This library is distributed under the terms of the Apache V2.0
4  * License (obtainable from http://www.apache.org/licenses/LICENSE-2.0).
5  ****************************************************************************/
6 
7 #ifndef RIGIDBODY
8 #error This class is not to be included by the user directly. Use RigidBodyd.h or RigidBodyf.h instead.
9 #endif
10 
11 class JOINT;
12 class ARTICULATED_BODY;
13 
15 
23 class RIGIDBODY : public virtual SINGLE_BODY
24 {
25  friend class ARTICULATED_BODY;
26  friend class RC_ARTICULATED_BODY;
27  friend class MCARTICULATED_BODY;
28  friend class JOINT;
29 
30  public:
31  enum Compliance { eRigid, eCompliant};
32  RIGIDBODY();
33  virtual ~RIGIDBODY() {}
34  void add_force(const SFORCE& w);
35  void set_pose(const POSE3& pose);
36  void apply_impulse(const SMOMENTUM& w);
37  virtual void rotate(const QUAT& q);
38  virtual void translate(const ORIGIN3& o);
39  virtual void calc_fwd_dyn();
41  void set_inertia(const SPATIAL_RB_INERTIA& J);
42 
43  bool is_child_link(boost::shared_ptr<const RIGIDBODY> query) const;
44  bool is_descendant_link(boost::shared_ptr<const RIGIDBODY> query) const;
45  const SVELOCITY& get_velocity();
46  void set_velocity(const SVELOCITY& xd);
47  void set_accel(const SACCEL& xdd);
48  virtual const SACCEL& get_accel();
49  void set_velocity(const SACCEL& xdd);
50  virtual void set_generalized_forces(const SHAREDVECTORN& gf);
56  virtual SHAREDVECTORN& get_generalized_velocity(DYNAMIC_BODY::GeneralizedCoordinateType gctype, SHAREDVECTORN& gv);
57  virtual VECTORN& get_generalized_velocity(DYNAMIC_BODY::GeneralizedCoordinateType gctype, VECTORN& gv) { return DYNAMIC_BODY::get_generalized_velocity(gctype, gv); }
59  virtual void add_generalized_force(const SHAREDVECTORN& gf);
61  virtual void apply_generalized_impulse(const SHAREDVECTORN& gf);
65  virtual void set_generalized_acceleration(const SHAREDVECTORN& ga);
66  virtual void set_generalized_velocity(DYNAMIC_BODY::GeneralizedCoordinateType gctype, const SHAREDVECTORN& gv);
67  virtual void set_generalized_velocity(DYNAMIC_BODY::GeneralizedCoordinateType gctype, const VECTORN& gv) { DYNAMIC_BODY::set_generalized_velocity(gctype, gv); }
70  virtual SHAREDVECTORN& convert_to_generalized_force(boost::shared_ptr<SINGLE_BODY> body, const SFORCE& w, SHAREDVECTORN& gf);
71  virtual VECTORN& convert_to_generalized_force(boost::shared_ptr<SINGLE_BODY> body, const SFORCE& w, VECTORN& gf) { return DYNAMIC_BODY::convert_to_generalized_force(body, w, gf); }
72  virtual unsigned num_generalized_coordinates(DYNAMIC_BODY::GeneralizedCoordinateType gctype) const;
77  boost::shared_ptr<RIGIDBODY> get_parent_link() const;
78  boost::shared_ptr<JOINT> get_inner_joint_explicit() const;
79  void add_inner_joint(boost::shared_ptr<JOINT> j);
80  void add_outer_joint(boost::shared_ptr<JOINT> j);
81  void remove_inner_joint(boost::shared_ptr<JOINT> joint);
82  void remove_outer_joint(boost::shared_ptr<JOINT> joint);
83  virtual REAL calc_kinetic_energy(boost::shared_ptr<const POSE3> P = boost::shared_ptr<const POSE3>());
84  virtual VECTOR3 calc_point_vel(const VECTOR3& p) const;
85  bool is_base() const;
86  bool is_ground() const;
87  virtual boost::shared_ptr<const POSE3> get_computation_frame() const;
88  virtual void set_computation_frame_type(ReferenceFrameType rftype);
89  virtual MATRIXN& calc_jacobian(boost::shared_ptr<const POSE3> source_pose, boost::shared_ptr<const POSE3> target_pose, boost::shared_ptr<DYNAMIC_BODY> body, MATRIXN& J);
90  virtual MATRIXN& calc_jacobian_dot(boost::shared_ptr<const POSE3> source_pose, boost::shared_ptr<const POSE3> target_pose, boost::shared_ptr<DYNAMIC_BODY> body, MATRIXN& J);
91  const SFORCE& sum_forces();
92  void reset_accumulators();
94  void set_enabled(bool flag);
96 
97  template <class OutputIterator>
98  OutputIterator get_parent_links(OutputIterator begin) const;
99 
100  template <class OutputIterator>
101  OutputIterator get_child_links(OutputIterator begin) const;
102 
104  boost::shared_ptr<RIGIDBODY> get_this() { return boost::dynamic_pointer_cast<RIGIDBODY>(shared_from_this()); }
105 
107  boost::shared_ptr<const RIGIDBODY> get_this() const { return boost::dynamic_pointer_cast<const RIGIDBODY>(shared_from_this()); }
108 
110  boost::shared_ptr<const POSE3> get_pose() const { return _F; }
111 
112  // Gets the pose used in generalized coordinates calculations
113  boost::shared_ptr<const POSE3> get_gc_pose() const { return _F2; }
114 
115  // Gets the "mixed" pose of this body (pose origin at the body's reference point but pose aligned with global frame)
116  boost::shared_ptr<const POSE3> get_mixed_pose() const { return _F2; }
117 
119  REAL calc_mass() const { return _Ji.m; }
120 
122  virtual REAL get_mass() const { return _Ji.m; }
123 
125  virtual bool is_enabled() const { return _enabled; }
126 
128 
132  boost::shared_ptr<ARTICULATED_BODY> get_articulated_body() const { return (_abody.expired()) ? boost::shared_ptr<ARTICULATED_BODY>() : boost::shared_ptr<ARTICULATED_BODY>(_abody); }
133 
135 
139  virtual void set_articulated_body(boost::shared_ptr<ARTICULATED_BODY> body) { _abody = body; }
140 
142  unsigned num_child_links() const { return _outer_joints.size(); }
143 
145  bool is_end_effector() const { assert (!_abody.expired()); return !is_base() && _outer_joints.empty(); }
146 
148  void clear_inner_joints() { _inner_joints.clear(); }
149 
151  void clear_outer_joints() { _outer_joints.clear(); }
152 
154  unsigned get_index() const { return _link_idx; }
155 
157 
161  void set_index(unsigned index) { _link_idx = index; }
162 
164  const std::set<boost::shared_ptr<JOINT> >& get_inner_joints() const { return _inner_joints; }
165 
167  const std::set<boost::shared_ptr<JOINT> >& get_outer_joints() const { return _outer_joints; }
168 
170  Compliance compliance;
171 
172  private:
173  template <class V>
174  void get_generalized_coordinates_euler_generic(V& gc);
175 
176  template <class V>
177  void get_generalized_velocity_generic(DYNAMIC_BODY::GeneralizedCoordinateType gctype, V& gv);
178 
179  template <class V>
180  void get_generalized_acceleration_generic(V& ga);
181 
182  template <class V>
183  void set_generalized_coordinates_euler_generic(V& gc);
184 
185  template <class V>
186  void set_generalized_velocity_generic(DYNAMIC_BODY::GeneralizedCoordinateType gctype, V& gv);
187 
188  template <class V>
189  void set_generalized_acceleration_generic(V& ga);
190 
191  void set_force(const SFORCE& w);
192  void apply_generalized_impulse_single(const SHAREDVECTORN& gf);
193  SHAREDMATRIXN& get_generalized_inertia_single(SHAREDMATRIXN& M);
194  virtual SHAREDMATRIXN& get_generalized_inertia_inverse(SHAREDMATRIXN& M) const;
195  SHAREDVECTORN& get_generalized_forces_single(SHAREDVECTORN& f);
196  SHAREDVECTORN& convert_to_generalized_force_single(boost::shared_ptr<SINGLE_BODY> body, const SFORCE& w, SHAREDVECTORN& gf);
197  unsigned num_generalized_coordinates_single(DYNAMIC_BODY::GeneralizedCoordinateType gctype) const;
198  SHAREDMATRIXN& solve_generalized_inertia_single(const SHAREDMATRIXN& B, SHAREDMATRIXN& X);
199  SHAREDVECTORN& solve_generalized_inertia_single(const SHAREDVECTORN& b, SHAREDVECTORN& x);
200  boost::shared_ptr<RIGIDBODY> get_parent_link(boost::shared_ptr<JOINT> j) const;
201  boost::shared_ptr<RIGIDBODY> get_child_link(boost::shared_ptr<JOINT> j) const;
202 
204  bool _xdi_valid;
205 
207  bool _xdj_valid;
208 
210  bool _xd0_valid;
211 
213  bool _xddi_valid;
214 
216  bool _xdd0_valid;
217 
219  bool _forcei_valid;
220 
222  bool _forcej_valid;
223 
225  bool _force0_valid;
226 
228  bool _J0_valid;
229 
231  bool _Jcom_valid;
232 
234  bool _Jj_valid;
235 
237  SPATIAL_RB_INERTIA _J0;
238 
240  SVELOCITY _xd0;
241 
243  SACCEL _xdd0;
244 
246  SFORCE _force0;
247 
249  SPATIAL_RB_INERTIA _Ji;
250 
252  SVELOCITY _xdi;
253 
255  SACCEL _xddi;
256 
258  SFORCE _forcei;
259 
261  SPATIAL_RB_INERTIA _Jcom;
262 
264  SVELOCITY _xdcom;
265 
267  SACCEL _xddcom;
268 
270  SFORCE _forcecom;
271 
273  unsigned _link_idx;
274 
276  bool _enabled;
277 
278  protected:
279  void update_mixed_pose();
280 
283 
286 
289 
292 
295 
297  boost::shared_ptr<POSE3> _F;
298 
300  boost::shared_ptr<POSE3> _F2;
301 
303  boost::weak_ptr<ARTICULATED_BODY> _abody;
304 
306  std::set<boost::shared_ptr<JOINT> > _inner_joints;
307 
309  std::set<boost::shared_ptr<JOINT> > _outer_joints;
310 
311 }; // end class
312 
313 // incline inline functions
314 #include "RigidBody.inl"
315 
316 
virtual void set_generalized_coordinates_euler(const SHAREDVECTORN &gc)=0
Sets the generalized coordinates of this body (using Euler parameters for any rigid body orientations...
virtual SHAREDMATRIXN & get_generalized_inertia(SHAREDMATRIXN &M)
Gets the generalized inertia of this rigid body.
Definition: RigidBody.cpp:1228
virtual VECTORN & get_generalized_velocity(DYNAMIC_BODY::GeneralizedCoordinateType gctype, VECTORN &gv)
Gets the generalized velocity of this body.
Definition: RigidBody.h:57
virtual SHAREDMATRIXN & solve_generalized_inertia(const SHAREDMATRIXN &B, SHAREDMATRIXN &X)
Solves using the generalized inertia matrix.
Definition: RigidBody.cpp:1076
Abstract class for articulated bodies.
Definition: ArticulatedBody.h:15
const SFORCE & sum_forces()
Gets the current sum of forces on this body.
Definition: RigidBody.cpp:413
void add_force(const SFORCE &w)
Adds a force to the body.
Definition: RigidBody.cpp:695
virtual SHAREDVECTORN & convert_to_generalized_force(boost::shared_ptr< SINGLE_BODY > body, const SFORCE &w, SHAREDVECTORN &gf)=0
Converts a force to a generalized force.
boost::shared_ptr< POSE3 > _F
reference pose for this body
Definition: RigidBody.h:297
virtual VECTORN & get_generalized_coordinates_euler(VECTORN &gc)
Gets the generalized coordinates of this body (using Euler parameters for any rigid body orientations...
Definition: RigidBody.h:55
bool is_base() const
Determines whether this link is the base.
Definition: RigidBody.cpp:1510
void set_inertia(const SPATIAL_RB_INERTIA &J)
Sets the rigid body inertia for this body.
Definition: RigidBody.cpp:384
virtual SHAREDMATRIXN & transpose_solve_generalized_inertia(const SHAREDMATRIXN &B, SHAREDMATRIXN &X)
Solves using the generalized inertia matrix.
Definition: RigidBody.cpp:1054
void set_velocity(const SVELOCITY &xd)
Sets the velocity of this body.
Definition: RigidBody.cpp:326
virtual boost::shared_ptr< const POSE3 > get_computation_frame() const
Gets the frame in which kinematics and dynamics computations occur.
Definition: RigidBody.cpp:64
virtual VECTORN & get_generalized_forces(VECTORN &f)
Gets the external forces on this body.
Definition: RigidBody.h:69
Quaternion class used for orientation.
Definition: Quat.h:21
virtual SHAREDVECTORN & get_generalized_acceleration(SHAREDVECTORN &ga)
Gets the generalized acceleration of this body.
Definition: RigidBody.cpp:1213
virtual SHAREDVECTORN & get_generalized_velocity(DYNAMIC_BODY::GeneralizedCoordinateType gctype, SHAREDVECTORN &gv)
Gets the generalized velocity of this rigid body.
Definition: RigidBody.cpp:1198
virtual REAL calc_kinetic_energy(boost::shared_ptr< const POSE3 > P=boost::shared_ptr< const POSE3 >())
Calculates the kinetic energy of the body in an arbitrary frame.
SFORCE calc_euler_torques()
Computes the torques (w x Jw) that come from the Euler component of the Newton-Euler equations...
Definition: RigidBody.cpp:566
VECTORN gc
Temporaries for use with integration.
Definition: DynamicBody.h:330
A spatial (six dimensional) momentum.
Definition: SMomentum.h:12
void update_mixed_pose()
Updates the center-of-mass center / global aligned frame.
Definition: RigidBody.cpp:589
virtual SHAREDVECTORN & get_generalized_velocity(GeneralizedCoordinateType gctype, SHAREDVECTORN &gv)=0
Gets the generalized velocity of this body.
bool is_ground() const
Determines whether this link is a "ground" (fixed link)
Definition: RigidBody.cpp:1473
void clear_inner_joints()
Removes all inner joints from this link.
Definition: RigidBody.h:148
Superclass for both rigid and deformable bodies.
Definition: SingleBody.h:14
boost::shared_ptr< POSE3 > _F2
secondary pose for this body
Definition: RigidBody.h:300
virtual SHAREDVECTORN & get_generalized_coordinates_euler(SHAREDVECTORN &gc)=0
Gets the generalized coordinates of this body (using Euler parameters for any rigid body orientations...
boost::shared_ptr< RIGIDBODY > get_this()
Gets the shared pointer for this
Definition: RigidBody.h:104
SFORCE _forcej
Cumulative force on the body (inner joint frame)
Definition: RigidBody.h:291
virtual VECTOR3 calc_point_vel(const VECTOR3 &p) const
Calculates the velocity of a point on this rigid body in the body frame.
Definition: RigidBody.cpp:737
virtual MATRIXN & calc_jacobian(boost::shared_ptr< const POSE3 > source_pose, boost::shared_ptr< const POSE3 > target_pose, boost::shared_ptr< DYNAMIC_BODY > body, MATRIXN &J)
The Jacobian transforms from the generalized coordinate from to the given frame.
SHAREDMATRIXN & transpose_solve_generalized_inertia_single(const SHAREDMATRIXN &B, SHAREDMATRIXN &X)
Solves using the generalized inertia matrix (does not call articulated body version) ...
Definition: RigidBody.cpp:1089
virtual bool is_enabled() const
Gets whether this body is enabled.
Definition: RigidBody.h:125
void apply_impulse(const SMOMENTUM &w)
Applies a impulse to this link.
Definition: RigidBody.cpp:879
virtual void calc_fwd_dyn()
Computes the forward dynamics for this body.
Definition: RigidBody.cpp:231
SACCEL _xddj
Acceleration (inner joint frame)
Definition: RigidBody.h:294
virtual void rotate(const QUAT &q)
Rotates the rigid body.
Definition: RigidBody.cpp:88
Compliance compliance
Compliance value, determines event type.
Definition: RigidBody.h:170
void set_accel(const SACCEL &xdd)
Sets the acceleration of this body.
Definition: RigidBody.cpp:355
void set_enabled(bool flag)
Sets the body to enabled / disabled.
Definition: RigidBody.cpp:304
boost::shared_ptr< ARTICULATED_BODY > get_articulated_body() const
Gets the articulated body corresponding to this body.
Definition: RigidBody.h:132
REAL m
The rigid body mass.
Definition: SpatialRBInertia.h:57
A generic, possibly non-square matrix.
Definition: MatrixN.h:18
virtual void add_generalized_force(const VECTORN &gf)
Adds a generalized force to the body.
Definition: RigidBody.h:60
virtual void set_generalized_acceleration(const SHAREDVECTORN &ga)
Sets the generalized acceleration of this rigid body.
Definition: RigidBody.cpp:1185
REAL calc_mass() const
Synonym for get_mass() (implements SingleBody::calc_mass())
Definition: RigidBody.h:119
virtual SHAREDVECTORN & get_generalized_forces(SHAREDVECTORN &f)=0
Gets the external forces on this body.
virtual void add_generalized_force(const SHAREDVECTORN &gf)=0
Adds a generalized force to the body.
const std::set< boost::shared_ptr< JOINT > > & get_inner_joints() const
Gets the set of inner joints for this link.
Definition: RigidBody.h:164
Represents a single rigid body.
Definition: RigidBody.h:23
boost::shared_ptr< const POSE3 > get_pose() const
Gets the current pose of this body.
Definition: RigidBody.h:110
virtual void set_generalized_velocity(DYNAMIC_BODY::GeneralizedCoordinateType gctype, const SHAREDVECTORN &gv)
Sets the generalized velocity of this rigid body.
Definition: RigidBody.cpp:1172
virtual void set_generalized_forces(const VECTORN &gf)
Sets the generalized forces on the body.
Definition: RigidBody.h:51
virtual SHAREDVECTORN & get_generalized_coordinates_euler(SHAREDVECTORN &gc)
Gets the generalized position of this rigid body.
Definition: RigidBody.cpp:1144
virtual void set_generalized_forces(const SHAREDVECTORN &gf)=0
Sets the generalized forces on the body.
A generic, possibly non-square matrix using shared data.
Definition: SharedMatrixN.h:59
virtual SHAREDVECTORN & get_generalized_forces(SHAREDVECTORN &f)
Gets the generalized inertia of this rigid body.
Definition: RigidBody.cpp:1298
A spatial velocity (a twist)
Definition: SVelocity.h:15
boost::weak_ptr< ARTICULATED_BODY > _abody
Pointer to articulated body (if this body is a link)
Definition: RigidBody.h:303
Defines an articulated body for use with reduced-coordinate dynamics algorithms.
Definition: RCArticulatedBody.h:29
A generic N-dimensional floating point vector.
Definition: SharedVectorN.h:15
A rigid body pose.
Definition: Pose3.h:15
VECTORN q
The position of this joint.
Definition: Joint.h:144
virtual const SACCEL & get_accel()
Gets the current body acceleration.
Definition: RigidBody.cpp:512
virtual void apply_generalized_impulse(const SHAREDVECTORN &gf)
Applies a generalized impulse to this rigid body.
Definition: RigidBody.cpp:1005
virtual VECTORN & convert_to_generalized_force(boost::shared_ptr< SINGLE_BODY > body, const SFORCE &w, VECTORN &gf)
Converts a force to a generalized force.
Definition: RigidBody.h:71
bool _xddj_valid
Indicates whether inner joint frame acceleration is valid (up-to-date)
Definition: RigidBody.h:282
SVELOCITY _xdj
Velocity (inner joint frame)
Definition: RigidBody.h:288
SPATIAL_RB_INERTIA _Jj
Spatial rigid body inertia matrix (inner joint frame)
Definition: RigidBody.h:285
virtual void apply_generalized_impulse(const VECTORN &gj)
Applies a generalized impulse to the body.
Definition: RigidBody.h:62
boost::shared_ptr< const POSE3 > get_gc_pose() const
Gets the frame for generalized coordinates.
Definition: RigidBody.h:113
bool is_end_effector() const
Gets whether this body is an end-effector (i.e., the number of child links is zero) in an articulated...
Definition: RigidBody.h:145
A 6x6 spatial algebra matrix used for dynamics calculations.
Definition: SpatialRBInertia.h:25
A spatial (six dimensional) acceleration.
Definition: SAccel.h:14
A generic N-dimensional floating point vector.
Definition: VectorN.h:16
unsigned num_child_links() const
Gets the number of child links of this link.
Definition: RigidBody.h:142
virtual void apply_generalized_impulse(const SHAREDVECTORN &gj)=0
Applies a generalized impulse to the body.
MATRIXN & get_generalized_inertia(MATRIXN &M)
Gets the generalized inertia of this body.
Definition: DynamicBody.h:168
A three-dimensional floating point vector used for representing points and vectors in 3D with associa...
Definition: Vector3.h:15
const SPATIAL_RB_INERTIA & get_inertia()
Gets the body inertia.
Definition: RigidBody.cpp:479
boost::shared_ptr< JOINT > get_inner_joint_explicit() const
Gets the explicit inner joint of this link; returns NULL if there is no explicit inner joint...
Definition: RigidBody.cpp:1455
Defines a bilateral constraint (a joint)
Definition: Joint.h:14
A spatial force (a wrench)
Definition: SForce.h:14
std::set< boost::shared_ptr< JOINT > > _outer_joints
Outer joints and associated data.
Definition: RigidBody.h:309
A three-dimensional floating point vector used for representing points and vectors in 3D and without ...
Definition: Origin3.h:16
virtual unsigned num_generalized_coordinates(DYNAMIC_BODY::GeneralizedCoordinateType gctype) const
Gets the generalized inertia of this rigid body.
Definition: RigidBody.cpp:934
unsigned get_index() const
Gets the link index (returns std::numeric_limits<unsigned>::max() if not set)
Definition: RigidBody.h:154
std::set< boost::shared_ptr< JOINT > > _inner_joints
Inner joints and associated data.
Definition: RigidBody.h:306
RIGIDBODY()
Default constructor.
Definition: RigidBody.cpp:24
const SVELOCITY & get_velocity()
Gets the current body velocity.
Definition: RigidBody.cpp:446
const std::set< boost::shared_ptr< JOINT > > & get_outer_joints() const
Gets the list of outer joints for this link.
Definition: RigidBody.h:167
virtual SHAREDVECTORN & convert_to_generalized_force(boost::shared_ptr< SINGLE_BODY > body, const SFORCE &w, SHAREDVECTORN &gf)
Converts a force to a generalized force.
virtual void set_articulated_body(boost::shared_ptr< ARTICULATED_BODY > body)
Sets the articulated body corresponding to this body.
Definition: RigidBody.h:139
virtual void set_generalized_velocity(DYNAMIC_BODY::GeneralizedCoordinateType gctype, const VECTORN &gv)
Sets the generalized velocity of this body.
Definition: RigidBody.h:67
virtual void add_generalized_force(const SHAREDVECTORN &gf)
Adds a generalized force to this rigid body.
Definition: RigidBody.cpp:976
virtual void set_generalized_velocity(GeneralizedCoordinateType gctype, const SHAREDVECTORN &gv)=0
Sets the generalized velocity of this body.
void set_index(unsigned index)
Sets the link index.
Definition: RigidBody.h:161
boost::shared_ptr< const RIGIDBODY > get_this() const
Gets the shared const pointer for this
Definition: RigidBody.h:107
virtual void translate(const ORIGIN3 &o)
Translates the rigid body.
Definition: RigidBody.cpp:182
virtual void set_generalized_coordinates_euler(const SHAREDVECTORN &gc)
Sets the generalized coordinates of this rigid body.
Definition: RigidBody.cpp:1159
virtual void set_generalized_coordinates_euler(const VECTORN &gc)
Sets the generalized coordinates of this body (using Euler parameters for any rigid body orientations...
Definition: RigidBody.h:64
boost::shared_ptr< RIGIDBODY > get_parent_link() const
Gets the first parent link of this link; returns NULL if there is no parent.
Definition: RigidBody.cpp:1433
virtual void set_computation_frame_type(ReferenceFrameType rftype)
(Re)sets the computation frame
Definition: RigidBody.cpp:220
void reset_accumulators()
Resets the force accumulators on this body.
Definition: RigidBody.cpp:551
void invalidate_pose_vectors()
Invalidates pose quantities.
Definition: RigidBody.cpp:621
virtual void set_generalized_forces(const SHAREDVECTORN &gf)
Sets the generalized forces on the body.
virtual REAL get_mass() const
Gets the mass of this body.
Definition: RigidBody.h:122
void set_pose(const POSE3 &pose)
Sets the current 3D pose for this rigid body.
Definition: RigidBody.cpp:607
void clear_outer_joints()
Removes all outer joints from this link.
Definition: RigidBody.h:151