Drake
BodyFrame< T > Class Template Reference

A BodyFrame is a material Frame that serves as the unique reference frame for a Body. More...

#include <drake/multibody/multibody_tree/body.h>

Inheritance diagram for BodyFrame< T >:
Collaboration diagram for BodyFrame< T >:

Public Member Functions

Isometry3< T > CalcPoseInBodyFrame (const systems::Context< T > &) const final
 Returns the pose X_BF of this frame F in the body frame B associated with this frame. More...
 
Isometry3< T > CalcOffsetPoseInBody (const systems::Context< T > &, const Isometry3< T > &X_FQ) const final
 Given the offset pose X_FQ of a frame Q in this frame F, this method computes the pose X_BQ of frame Q in the body frame B to which this frame is attached. More...
 
Does not allow copy, move, or assignment
 BodyFrame (const BodyFrame &)=delete
 
BodyFrameoperator= (const BodyFrame &)=delete
 
 BodyFrame (BodyFrame &&)=delete
 
BodyFrameoperator= (BodyFrame &&)=delete
 
- Public Member Functions inherited from Frame< T >
const Body< T > & get_body () const
 Returns a const reference to the body associated to this Frame. More...
 
 Frame (const Frame &)=delete
 
Frameoperator= (const Frame &)=delete
 
 Frame (Frame &&)=delete
 
Frameoperator= (Frame &&)=delete
 

Friends

class Body< T >
 

Additional Inherited Members

- Protected Member Functions inherited from Frame< T >
 Frame (const Body< T > &body)
 

Detailed Description

template<typename T>
class drake::multibody::BodyFrame< T >

A BodyFrame is a material Frame that serves as the unique reference frame for a Body.

Each Body B, regardless of whether it represents a rigid body or a flexible body, has a unique body frame for which we use the same symbol B (with meaning clear from context). The body frame is also referred to as a reference frame in the literature for flexible body mechanics modeling using the Finite Element Method. All properties of a body are defined with respect to its body frame, including its mass properties and attachment locations for joints, constraints, actuators, geometry and so on. Run time motion of the body is defined with respect to the motion of its body frame. We represent a body frame by a BodyFrame object that is created whenever a Body is constructed and is owned by the Body.

Note that the BodyFrame associated with a body does not necessarily need to be located at its center of mass nor does it need to be aligned with the body's principal axes, although, in practice, it frequently is. For flexible bodies, BodyFrame provides a representation for the body's reference frame. The flexible degrees of freedom associated with a flexible body describe the body's deformation in this frame. Therefore, the motion of a flexible body is defined by the motion of its BodyFrame, or reference frame, plus the motion of the material points on the body with respect to its BodyFrame.

A BodyFrame and Body are tightly coupled concepts; neither makes sense without the other. Therefore, a BodyFrame instance is constructed in conjunction with its Body and cannot be constructed anywhere else. However, you can still access the frame associated with a body, see Body::get_body_frame(). This access is more than a convenience; you can use the BodyFrame to define other frames on the body and to attach other multibody elements to it.

Template Parameters
TThe scalar type. Must be a valid Eigen scalar.

Constructor & Destructor Documentation

BodyFrame ( const BodyFrame< T > &  )
delete
BodyFrame ( BodyFrame< T > &&  )
delete

Member Function Documentation

Isometry3<T> CalcOffsetPoseInBody ( const systems::Context< T > &  context,
const Isometry3< T > &  X_FQ 
) const
inlinefinalvirtual

Given the offset pose X_FQ of a frame Q in this frame F, this method computes the pose X_BQ of frame Q in the body frame B to which this frame is attached.

In other words, if the pose of this frame F in the body frame B is X_BF, this method computes the pose X_BQ of frame Q in the body frame B as X_BQ = X_BF * X_FQ. In particular, if this isthe body frame B, i.e.X_BFis the identity transformation, this method directly returnsX_FQ`. Specific frame subclasses can override this method to provide faster implementations if needed.

Reimplemented from Frame< T >.

Isometry3<T> CalcPoseInBodyFrame ( const systems::Context< T > &  context) const
inlinefinalvirtual

Returns the pose X_BF of this frame F in the body frame B associated with this frame.

In particular, if this is the body frame B, this method directly returns the identity transformation.

Implements Frame< T >.

BodyFrame& operator= ( const BodyFrame< T > &  )
delete
BodyFrame& operator= ( BodyFrame< T > &&  )
delete

Friends And Related Function Documentation

friend class Body< T >
friend

The documentation for this class was generated from the following file: