Commits

Martin Felis committed cc2d16b

doc: updated documentation

  • Participants
  • Parent commits 5850153
  • Branches dev

Comments (0)

Files changed (2)

  * href="mailto:martin.felis@iwr.uni-heidelberg.de">Martin Felis
  * <martin.felis@iwr.uni-heidelberg.de></a> and heavily inspired by the
  * pseudo code of the book "Rigid Body Dynamics Algorithms" of <a
- * href="http://users.cecs.anu.edu.au/~roy/" target="_parent">Roy Featherstone</a>.
+ * href="http://royfeatherstone.org" target="_parent">Roy Featherstone</a>.
  * 
  * Development is taking place on <a
  * href="http://bitbucket.org" target="_parent">bitbucket.org</a>. The official repository
    distribution.
 \endverbatim
  *
- * \todo [low] incorporate GiNaC (http://www.ginac.de) to generate code (some work done in 'ginac' branch)
- * \todo [low] serialization of the model?
- *
- * \subsection ToDo_done Done:
+ * \subsection recent_changes Recent Changes :
  * <ul>
- *   <li>[high] check impulse computation 2011-06-07</li>
- *   <li>[med] add specification for the visualization to the model</li>
- *   <li>[med] get replace std::vector<> vectors with proper math vectors in Model</li>
+ * <li> 01. June 2012: added support of \ref joint_models_fixed</li>
+ * <li> 14. May 2012: fixed Body constructor as reported by Maxime Reis</li>
+ * <li> 04. April 2012: added benchmark tool for CRBA</li>
+ * <li> 01. March 2012: added multi degree of freedom \ref joint_models</li>
+ * <li> 06. Februry 2012: restructured constraint handling using \ref RigidBodyDynamics::ConstraintSet</li>
+ * <li> 24. January 2012: implemented compact and fast representation of \ref RigidBodyDynamics::Math::SpatialTransform </li>
  * </ul>
  */
  * The construction of \link RigidBodyDynamics::Model Models \endlink makes
  * use of carefully designed constructors of the classes \link
  * RigidBodyDynamics::Body Body \endlink and \link RigidBodyDynamics::Joint
- * Joint \endlink to ease the process of creating bodies.  Adding bodies to
+ * Joint \endlink to ease the process of articulated models. Adding bodies to
  * the model is done by specifying the parent body by its id, the
  * transformation from the parent origin to the joint origin, the joint
  * specification as an object, and the body itself. These parameters are
  * rigid bodies, etc. It also contains storage for the transformations and
  * current state, such as velocity and acceleration of each body.
  *
- * \section joint_models Joint Models
+ * \section joint_models Joint Modeling
  *
  * The Rigid Body Dynamics Library supports models with multiple degrees of
  * freedom. When a joint with more than one degrees of freedom is used,
  *     );
  * \endcode
  *
+ * \subsection joint_models_fixed Fixed Joints
+ *
+ * Fixed joints do not add an additional degree of freedom to the model. 
+ * When adding a body that via a fixed joint (i.e. when the type is
+ * JointTypeFixed) then the dynamical parameters mass and inertia are
+ * merged onto its moving parent. By doing so fixed bodies do not add
+ * computational costs when performing dynamics computations.
+ 
+ * To ensure a consistent API for the Kinematics such fixed bodies have a
+ * different range of ids. Where as the ids start at 1 get incremented for
+ * each added body, fixed bodies start at Model::fixed_body_discriminator
+ * which has a default value of std::numeric_limits<unsigned int>::max() /
+ * 2. This means theoretical a maximum of each 2147483646 movable and fixed
+ * bodies are possible.
+ 
+ * To check whether a body is connected by a fixed joint you can use the
+ * function Model::IsFixedBodyId().
+ *
  * See also: \link RigidBodyDynamics::Joint Joint\endlink.
  *
  * \note Please note that in the Rigid %Body Dynamics Library all angles
 	 * default value of fixed_body_discriminator is max (unsigned int) / 2.
 	 * 
 	 * On normal systems max (unsigned int) is 4294967294 which means there
-	 * could be a total of 2147483647 movable and / or fixed bodies.
+	 * could be a total of 2147483646 movable and / or fixed bodies.
 	 */
 	unsigned int fixed_body_discriminator;
 
 		return "";
 	}
 
+	/** \brief Checks whether the body is rigidly attached to another body.
+	 */
 	bool IsFixedBodyId (unsigned int body_id) {
 		if (body_id >= fixed_body_discriminator 
 				&& body_id < std::numeric_limits<unsigned int>::max()