Physsim::MCArticulatedBody Class Reference

Defines an articulated body simulated using maximal coordinate methods. More...

#include <MCArticulatedBody.h>

Inheritance diagram for Physsim::MCArticulatedBody:

Physsim::ArticulatedBody Physsim::DynamicBody Physsim::Visualizable Physsim::Base List of all members.

Public Member Functions

 MCArticulatedBody (const MCArticulatedBody &source)
virtual void clone (BasePtr &cloned, bimap< BasePtr, BasePtr > *obj_map=NULL) const
 Implements Base::clone().
virtual bool is_struct_identical (BaseConstPtr object) const
virtual void load_state (BaseConstPtr object, bimap< BasePtr, BasePtr > *correspondence=NULL)
 Implements Base::load_state().
virtual void save_state (BasePtr object, bimap< BasePtr, BasePtr > *correspondence=NULL) const
 Implements Base::save_state().
void set_links (const std::vector< ArticulatedBodyLinkPtr > &links)
RigidBodyPtr find_link (const std::string &linkname) const
MCArticulatedBodyJointPtr find_joint (const std::string &jointname) const
void add_link (MCArticulatedBodyLinkPtr link)
virtual VectorN get_state_deriv ()
 Abstract method for getting the state derivative of the articulated body.
virtual VectorN get_state ()
 Abstract method for getting the state of the articulated body.
virtual void set_state (const VectorN &state)
 Abstract method for setting the state of the articulated body.
MatrixNPtr calc_jacobian_column (MCMCArticulatedBodyJointPtr joint, const Vector3 &point)
MatrixNNPtr calc_jacobian_floating_base (const VectorN &point)
virtual std::list< RigidBodyPtr > get_rigid_bodies () const
 Virtual method for getting all of the rigid bodies (links) that comprise this articulated body.
virtual void reset_accumulators ()
 Method for resetting the force and torque accumulators on all links.
virtual std::list< sorted_pair<
RigidBodyPtr > > 
get_adjacent_links () const
 Virtual method for getting each pair of adjacent links in the body.
void add_joint (MCArticulatedBodyJointPtr joint)
void set_joints (const std::vector< MCArticulatedBodyJointPtr > joints)
void update_link_transforms () const
void update_link_velocities ()
void apply_impulse (const Vector3 &j, const Vector3 &k, const Vector3 &contact_point, MCArticulatedBodyLinkPtr link)
virtual void compile ()
 Method for "compiling" the body (if necessary).
virtual void calc_fwd_dyn ()
 Forces a recalculation of forward dynamics.
virtual void update_visualization ()
 Updates the visualization using the appropriate transform.
virtual void load_from_xml (XMLTreeConstPtr node, std::map< std::string, BasePtr > &id_map)
 Implements Base::load_from_xml().
virtual void save_to_xml (XMLTreePtr node, std::list< BaseConstPtr > &shared_objects) const
 Implements Base::save_to_xml().
MCArticulatedBodyPtr get_this ()
MCArticulatedBodyConstPtr get_this () const
virtual bool joint_limit_collision (Real collision_tolerance) const
 Abstract method for determining whether or not there is a collision at the joint-limit.
virtual void correct_joint_limit_collisions (Real collision_tolerance)
 Abstract method for correcting joint limit collisions.
virtual void correct_joint_limit_violations ()
 Abstract method for correcting joint limit violations.
const std::vector< MCArticulatedBodyLinkPtr > & get_links () const
 Gets the list of links; ordering is irrelevant.
const std::vector< MCArticulatedBodyJointPtr > & get_joints () const
 Gets the list of joints; ordering is irrelevant.

Detailed Description

Defines an articulated body simulated using maximal coordinate methods.

Maximal-coordinate methods are generally inferior to reduced-coordinate methods for simulating loop-free structures, due to increased computation requirements as well as numerical and physical stability issues that arise in correcting drift. Regardless, a maximal-coordinate formulation is often the best option for structures with kinematic loops. Physsim does not currently provide means to simulate structures with kinematic loops using reduced-coordinate methods, so a maximal-coordinate approach is necessary. For loop-free structures, both reduced and maximal-coordinate methods are feasible.


Member Function Documentation

virtual void Physsim::MCArticulatedBody::update_visualization (  )  [virtual]

Updates the visualization using the appropriate transform.

Note:
in contrast to set_visualization_transform(), this method actually sets the transform in the scenegraph, thereby updating the display.

derived classes may override this method to set the transform right before it is updated, if desired

See also:
set_visualization_transform()

Reimplemented from Physsim::Visualizable.


The documentation for this class was generated from the following file:
Generated on Wed Oct 24 14:54:23 2007 for Physsim by  doxygen 1.5.1