Drake
Drake C++ Documentation
Frame< T > Class Template Referenceabstract

## Detailed Description

### template<typename T> class drake::multibody::Frame< T >

Frame is an abstract class representing a material frame (also called a physical frame), meaning that the Frame's origin is a material point of a Body.

An important characteristic of a Frame is that forces or torques applied to a Frame are applied to the Frame's underlying Body. Force-producing elements like joints, actuators, and constraints usually employ two Frames, with one Frame connected to one body and the other connected to a different Body. Every Frame object can report the Body to which it is attached. Despite its name, Frame is not the most general frame in Drake (see FrameBase for more information).

A Frame's pose in World (or relative to other frames) is always calculated starting with its pose relative to its underlying Body's BodyFrame. Subclasses derived from Frame differ in how kinematic calculations are performed. For example, the angular velocity of a FixedOffsetFrame or BodyFrame is identical to the angular velocity of its underlying body, whereas the translational velocity of a FixedOffsetFrame differs from that of a BodyFrame. If a Frame is associated with a soft body, kinematic calculations can depend on the soft body's deformation state variables.

A Frame object does not store a Context (where Context means state that contains the Frame's current orientation, position, motion, etc.). Instead, Frame provides methods for calculating these Frame-properties from a Context passed to Frame methods.

Template Parameters
 T The scalar type, which must be one of the default scalars.

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

## Public Member Functions

const Body< T > & body () const
Returns a const reference to the body associated to this Frame. More...

bool is_world_frame () const
Returns true if this is the world frame. More...

bool is_body_frame () const
Returns true if this is the body frame. More...

const std::string & name () const
Returns the name of this frame. The name will never be empty. More...

virtual math::RigidTransform< T > CalcPoseInBodyFrame (const systems::Context< T > &context) const =0
Returns the pose X_BF of this frame F in the body frame B associated with this frame. More...

virtual math::RotationMatrix< T > CalcRotationMatrixInBodyFrame (const systems::Context< T > &context) const =0
Returns the rotation matrix R_BF that relates body frame B to this frame F (B is the body frame to which this frame F is attached). More...

virtual math::RigidTransform< T > GetFixedPoseInBodyFrame () const
Variant of CalcPoseInBodyFrame() that returns the fixed pose X_BF of this frame F in the body frame B associated with this frame. More...

virtual math::RotationMatrix< T > GetFixedRotationMatrixInBodyFrame () const
Returns the rotation matrix R_BF that relates body frame B to this frame F (B is the body frame to which this frame F is attached). More...

virtual math::RigidTransform< T > CalcOffsetPoseInBody (const systems::Context< T > &context, const math::RigidTransform< T > &X_FQ) const
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...

virtual math::RotationMatrix< T > CalcOffsetRotationMatrixInBody (const systems::Context< T > &context, const math::RotationMatrix< T > &R_FQ) const
Calculates and returns the rotation matrix R_BQ that relates body frame B to frame Q via this intermediate frame F, i.e., R_BQ = R_BF * R_FQ (B is the body frame to which this frame F is attached). More...

virtual math::RigidTransform< T > GetFixedOffsetPoseInBody (const math::RigidTransform< T > &X_FQ) const
Variant of CalcOffsetPoseInBody() that given the offset pose X_FQ of a frame Q in this frame F, returns the pose X_BQ of frame Q in the body frame B to which this frame is attached. More...

virtual math::RotationMatrix< T > GetFixedRotationMatrixInBody (const math::RotationMatrix< T > &R_FQ) const
Calculates and returns the rotation matrix R_BQ that relates body frame B to frame Q via this intermediate frame F, i.e., R_BQ = R_BF * R_FQ (B is the body frame to which this frame F is attached). More...

math::RigidTransform< T > CalcPoseInWorld (const systems::Context< T > &context) const
Computes and returns the pose X_WF of this frame F in the world frame W as a function of the state of the model stored in context. More...

math::RigidTransform< T > CalcPose (const systems::Context< T > &context, const Frame< T > &frame_M) const
Computes and returns the pose X_MF of this frame F in measured in frame_M as a function of the state of the model stored in context. More...

math::RotationMatrix< T > CalcRotationMatrix (const systems::Context< T > &context, const Frame< T > &frame_M) const
Calculates and returns the rotation matrix R_MF that relates frame_M and this frame F as a function of the state stored in context. More...

math::RotationMatrix< T > CalcRotationMatrixInWorld (const systems::Context< T > &context) const
Calculates and returns the rotation matrix R_WF that relates the world frame W and this frame F as a function of the state stored in context. More...

const Vector3< T > & EvalAngularVelocityInWorld (const systems::Context< T > &context) const
Evaluates this frame F's angular velocity measured and expressed in the world frame W. More...

Vector3< T > CalcAngularVelocity (const systems::Context< T > &context, const Frame< T > &measured_in_frame, const Frame< T > &expressed_in_frame) const
Calculates this frame F's angular velocity measured in a frame M, expressed in a frame E. More...

SpatialVelocity< T > CalcSpatialVelocityInWorld (const systems::Context< T > &context) const
Calculates this frame F's spatial velocity measured and expressed in the world frame W. More...

SpatialVelocity< T > CalcSpatialVelocity (const systems::Context< T > &context, const Frame< T > &frame_M, const Frame< T > &frame_E) const
Calculates this frame F's spatial velocity measured in a frame M, expressed in a frame E. More...

SpatialVelocity< T > CalcRelativeSpatialVelocityInWorld (const systems::Context< T > &context, const Frame< T > &other_frame) const
Calculates this frame C's spatial velocity relative to another frame B, measured and expressed in the world frame W. More...

SpatialVelocity< T > CalcRelativeSpatialVelocity (const systems::Context< T > &context, const Frame< T > &other_frame, const Frame< T > &measured_in_frame, const Frame< T > &expressed_in_frame) const
Calculates this frame C's spatial velocity relative to another frame B, measured in a frame M, expressed in a frame E. More...

SpatialAcceleration< T > CalcSpatialAccelerationInWorld (const systems::Context< T > &context) const
Calculates this frame F's spatial acceleration measured and expressed in the world frame W. More...

SpatialAcceleration< T > CalcSpatialAcceleration (const systems::Context< T > &context, const Frame< T > &measured_in_frame, const Frame< T > &expressed_in_frame) const
Calculates this frame F's spatial acceleration measured in a frame M, expressed in a frame E. More...

SpatialAcceleration< T > CalcRelativeSpatialAccelerationInWorld (const systems::Context< T > &context, const Frame< T > &other_frame) const
Calculates this frame C's spatial acceleration relative to another frame B, measured and expressed in the world frame W. More...

SpatialAcceleration< T > CalcRelativeSpatialAcceleration (const systems::Context< T > &context, const Frame< T > &other_frame, const Frame< T > &measured_in_frame, const Frame< T > &expressed_in_frame) const
Calculates this frame C's spatial acceleration relative to another frame B, measured in a frame M, expressed in a frame E. More...

template<typename ToScalar >
std::unique_ptr< Frame< ToScalar > > CloneToScalar (const internal::MultibodyTree< ToScalar > &tree_clone) const
(Advanced) NVI to DoCloneToScalar() templated on the scalar type of the new clone to be created. More...

Does not allow copy, move, or assignment
Frame (const Frame &)=delete

Frameoperator= (const Frame &)=delete

Frame (Frame &&)=delete

Frameoperator= (Frame &&)=delete

Public Member Functions inherited from MultibodyElement< FrameBase, T, FrameIndex >
virtual ~MultibodyElement ()

FrameIndex index () const
Returns this element's unique index. More...

ModelInstanceIndex model_instance () const
Returns the ModelInstanceIndex of the model instance to which this element belongs. More...

const MultibodyPlantDeferred & GetParentPlant () const
Returns the MultibodyPlant that owns this MultibodyElement. More...

void DeclareParameters (internal::MultibodyTreeSystem< T > *tree_system)
Declares MultibodyTreeSystem Parameters at MultibodyTreeSystem::Finalize() time. More...

MultibodyElement (const MultibodyElement &)=delete

MultibodyElement (MultibodyElement &&)=delete

MultibodyElementoperator= (const MultibodyElement &)=delete

MultibodyElementoperator= (MultibodyElement &&)=delete

## Protected Member Functions

Frame (const std::string &name, const Body< T > &body, std::optional< ModelInstanceIndex > model_instance={})
Only derived classes can use this constructor. More...

Frame (const Body< T > &body)
(Deprecated.) More...

Methods to make a clone templated on different scalar types.

These methods are meant to be called by MultibodyTree::CloneToScalar() when making a clone of the entire tree or a new instance templated on a different scalar type.

The only const argument to these methods is the new MultibodyTree clone under construction. Specific Frame subclasses might specify a number of prerequisites on the cloned tree and therefore require it to be at a given state of cloning. See MultibodyTree::CloneToScalar() for a list of prerequisites that are guaranteed to be satisfied during the cloning process.

virtual std::unique_ptr< Frame< double > > DoCloneToScalar (const internal::MultibodyTree< double > &tree_clone) const =0
Clones this Frame (templated on T) to a frame templated on double. More...

virtual std::unique_ptr< Frame< AutoDiffXd > > DoCloneToScalar (const internal::MultibodyTree< AutoDiffXd > &tree_clone) const =0
Clones this Frame (templated on T) to a frame templated on AutoDiffXd. More...

virtual std::unique_ptr< Frame< symbolic::Expression > > DoCloneToScalar (const internal::MultibodyTree< symbolic::Expression > &) const =0

Protected Member Functions inherited from FrameBase< T >
FrameBase (ModelInstanceIndex model_instance)

Protected Member Functions inherited from MultibodyElement< FrameBase, T, FrameIndex >
MultibodyElement ()
Default constructor made protected so that sub-classes can still declare their default constructors if they need to. More...

MultibodyElement (ModelInstanceIndex model_instance)
Constructor which allows specifying a model instance. More...

const internal::MultibodyTree< T > & get_parent_tree () const
Returns a constant reference to the parent MultibodyTree that owns this element. More...

const internal::MultibodyTreeSystem< T > & GetParentTreeSystem () const
Returns a constant reference to the parent MultibodyTreeSystem that owns the parent MultibodyTree that owns this element. More...

void SetTopology (const internal::MultibodyTreeTopology &tree)
Gives MultibodyElement-derived objects the opportunity to retrieve their topology after MultibodyTree::Finalize() is invoked. More...

virtual void DoDeclareParameters (internal::MultibodyTreeSystem< T > *)
Implementation of the NVI DeclareParameters(). More...

systems::NumericParameterIndex DeclareNumericParameter (internal::MultibodyTreeSystem< T > *tree_system, const systems::BasicVector< T > &model_vector)
To be used by MultibodyElement-derived objects when declaring parameters in their implementation of DoDeclareParameters(). More...

systems::AbstractParameterIndex DeclareAbstractParameter (internal::MultibodyTreeSystem< T > *tree_system, const AbstractValue &model_value)
To be used by MultibodyElement-derived objects when declaring parameters in their implementation of DoDeclareParameters(). More...

## ◆ Frame() [1/4]

 Frame ( const Frame< T > & )
delete

## ◆ Frame() [2/4]

 Frame ( Frame< T > && )
delete

## ◆ Frame() [3/4]

 Frame ( const std::string & name, const Body< T > & body, std::optional< ModelInstanceIndex > model_instance = {} )
explicitprotected

Only derived classes can use this constructor.

It creates a Frame object attached to body and puts the frame in the body's model instance.

## ◆ Frame() [4/4]

 Frame ( const Body< T > & body )
explicitprotected

(Deprecated.)

Deprecated:
The name parameter to the Frame constructor is now required.
This will be removed from Drake on or after 2022-12-01.

## ◆ body()

 const Body& body ( ) const

Returns a const reference to the body associated to this Frame.

## ◆ CalcAngularVelocity()

 Vector3 CalcAngularVelocity ( const systems::Context< T > & context, const Frame< T > & measured_in_frame, const Frame< T > & expressed_in_frame ) const

Calculates this frame F's angular velocity measured in a frame M, expressed in a frame E.

Parameters
 [in] context contains the state of the multibody system. [in] measured_in_frame which is frame M (the frame in which this angular velocity is to be measured). [in] expressed_in_frame which is frame E (the frame in which the returned angular velocity is to be expressed).
Returns
ω_MF_E, this frame F's angular velocity ω measured in frame M, expressed in frame E.
See also
EvalAngularVelocityInWorld() to evaluate ω_WF_W (this frame F's angular velocity ω measured and expressed in the world frame W).

## ◆ CalcOffsetPoseInBody()

 virtual math::RigidTransform CalcOffsetPoseInBody ( const systems::Context< T > & context, const math::RigidTransform< T > & X_FQ ) const
virtual

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 in BodyFrame< T >, and BodyFrame< double >.

## ◆ CalcOffsetRotationMatrixInBody()

 virtual math::RotationMatrix CalcOffsetRotationMatrixInBody ( const systems::Context< T > & context, const math::RotationMatrix< T > & R_FQ ) const
virtual

Calculates and returns the rotation matrix R_BQ that relates body frame B to frame Q via this intermediate frame F, i.e., R_BQ = R_BF * R_FQ (B is the body frame to which this frame F is attached).

Parameters
 [in] R_FQ rotation matrix that relates frame F to frame Q.

Reimplemented in BodyFrame< T >, and BodyFrame< double >.

## ◆ CalcPose()

 math::RigidTransform CalcPose ( const systems::Context< T > & context, const Frame< T > & frame_M ) const

Computes and returns the pose X_MF of this frame F in measured in frame_M as a function of the state of the model stored in context.

See also
CalcPoseInWorld().

## ◆ CalcPoseInBodyFrame()

 virtual math::RigidTransform CalcPoseInBodyFrame ( const systems::Context< T > & context ) const
pure virtual

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.

Implemented in FixedOffsetFrame< T >, BodyFrame< T >, and BodyFrame< double >.

## ◆ CalcPoseInWorld()

 math::RigidTransform CalcPoseInWorld ( const systems::Context< T > & context ) const

Computes and returns the pose X_WF of this frame F in the world frame W as a function of the state of the model stored in context.

Note
Body::EvalPoseInWorld() provides a more efficient way to obtain the pose for a body frame.

## ◆ CalcRelativeSpatialAcceleration()

 SpatialAcceleration CalcRelativeSpatialAcceleration ( const systems::Context< T > & context, const Frame< T > & other_frame, const Frame< T > & measured_in_frame, const Frame< T > & expressed_in_frame ) const

Calculates this frame C's spatial acceleration relative to another frame B, measured in a frame M, expressed in a frame E.

Parameters
 [in] context contains the state of the multibody system. [in] other_frame which is frame B. [in] measured_in_frame which is frame M. [in] expressed_in_frame which is frame E.
Returns
A_M_BC_E = A_MC_E - A_MB_E, frame C's spatial acceleration relative to frame B, measured in frame M, expressed in frame E.

In general, A_M_BC = DtW(V_M_BC), the time-derivative in frame M of frame C's spatial velocity relative to frame B. The rotational part of the returned quantity is α_MC_E - α_MB_E = DtM(ω_BC)_E. Note: For 3D analysis, DtM(ω_BC) ≠ α_BC. The translational part of the returned quantity is a_M_BoCo_E (Co's translational acceleration relative to Bo, measured in frame M, expressed in frame E).

 α_MC_E - α_MB_E = DtM(ω_MC)_E - DtM(ω_MB)_E = DtM(ω_BC)_E
a_M_BoCo_E = a_MCo_E - a_MBo_E = DtM(v_MCo) - DtM(v_MBo) = Dt²M(p_BoCo)_E


where Dt²M(p_BoCo)_E is the 2ⁿᵈ time-derivative in frame M of p_BoCo (the position vector from Bo to Co), and this result is expressed in frame E.

Note
The calculation of the 2ⁿᵈ time-derivative of the distance between Bo and Co can be done with relative translational acceleration, but this calculation does not depend on the measured-in-frame, hence in this case, consider CalcRelativeSpatialAccelerationInWorld() since it is faster.
See also
CalcSpatialAccelerationInWorld(), CalcSpatialAcceleration(), and CalcRelativeSpatialAccelerationInWorld().

## ◆ CalcRelativeSpatialAccelerationInWorld()

 SpatialAcceleration CalcRelativeSpatialAccelerationInWorld ( const systems::Context< T > & context, const Frame< T > & other_frame ) const

Calculates this frame C's spatial acceleration relative to another frame B, measured and expressed in the world frame W.

Parameters
 [in] context contains the state of the multibody system. [in] other_frame which is frame B.
Returns
A_W_BC_W = A_WC_W - A_WB_W, frame C's spatial acceleration relative to frame B, measured and expressed in the world frame W.

In general, A_W_BC = DtW(V_W_BC), the time-derivative in the world frame W of frame C's spatial velocity relative to frame B. The rotational part of the returned quantity is α_WC_W - α_WB_W = DtW(ω_BC)_W. For 3D analysis, DtW(ω_BC) ≠ α_BC. The translational part of the returned quantity is a_W_BoCo_W (Co's translational acceleration relative to Bo, measured and expressed in world frame W).

 α_WC_W - α_WB_W = DtW(ω_WC)_W - DtW(ω_WB)_W = DtW(ω_BC)_W
a_W_BoCo_W = a_WCo_W - a_WBo_W = DtW(v_WCo) - DtW(v_WBo) = Dt²W(p_BoCo)_W


where Dt²W(p_BoCo)_W is the 2ⁿᵈ time-derivative in frame W of p_BoCo (the position vector from Bo to Co), and this result is expressed in frame W.

Note
The method CalcSpatialAccelerationInWorld() is more efficient and coherent if any of this, other_frame, or the world frame W are the same.
See also
CalcSpatialAccelerationInWorld(), CalcRelativeSpatialAcceleration().

## ◆ CalcRelativeSpatialVelocity()

 SpatialVelocity CalcRelativeSpatialVelocity ( const systems::Context< T > & context, const Frame< T > & other_frame, const Frame< T > & measured_in_frame, const Frame< T > & expressed_in_frame ) const

Calculates this frame C's spatial velocity relative to another frame B, measured in a frame M, expressed in a frame E.

Parameters
 [in] context contains the state of the multibody system. [in] other_frame which is frame B. [in] measured_in_frame which is frame M. [in] expressed_in_frame which is frame E.
Returns
V_M_BC_E = V_MC_E - V_MB_E, frame C's spatial velocity relative to frame B, measured in frame M, expressed in frame E. The rotational part of the returned quantity is ω_BC_E (C's angular velocity measured in B and expressed in E). The translational part is v_M_BoCo_E (Co's translational velocity relative to Bo, measured in M, and expressed in E).
 ω_BC_E = ω_MC_E - ω_MB_E
v_M_BoCo_E = v_MCo_E - v_MBo_E = DtM(p_BoCo)

where DtM(p_BoCo) is the time-derivative in frame M of p_BoCo (position vector from Bo to Co), and this vector is expressed in frame E.
Note
The method CalcSpatialVelocity() is more efficient and coherent if any of this, other_frame, or measured_in_frame are the same. Also, the value of V_M_BoCo does not depend on the measured_in_frame if Bo and Co are coincident (i.e., p_BoCo = 0), in which case consider the more efficient method CalcRelativeSpatialVelocityInWorld(). Lastly, the calculation of elongation between Bo and Co can be done with relative translational velocity, but elongation does not depend on the measured-in-frame (hence consider CalcRelativeSpatialVelocityInWorld()).
See also
CalcSpatialVelocityInWorld(), CalcSpatialVelocity(), and CalcRelativeSpatialVelocityInWorld().

## ◆ CalcRelativeSpatialVelocityInWorld()

 SpatialVelocity CalcRelativeSpatialVelocityInWorld ( const systems::Context< T > & context, const Frame< T > & other_frame ) const

Calculates this frame C's spatial velocity relative to another frame B, measured and expressed in the world frame W.

Parameters
 [in] context contains the state of the multibody system. [in] other_frame which is frame B.
Returns
V_W_BC_W = V_WC_W - V_WB_W, frame C's spatial velocity relative to frame B, measured and expressed in the world frame W. The rotational part of the returned quantity is ω_BC_W (C's angular velocity measured in B and expressed in W). The translational part is v_W_BoCo_W (Co's translational velocity relative to Bo, measured and expressed in world frame W).
    ω_BC_W  = ω_WC_W - ω_WB_W
v_W_BoCo_W = v_WCo_W - v_WBo_W = DtW(p_BoCo)

where DtW(p_BoCo) is the time-derivative in frame W of p_BoCo (position vector from Bo to Co), and this vector is expressed in frame W.
Note
The method CalcSpatialVelocityInWorld() is more efficient and coherent if any of this, other_frame, or the world frame W are the same.
See also
CalcSpatialVelocityInWorld() and CalcRelativeSpatialVelocity().

## ◆ CalcRotationMatrix()

 math::RotationMatrix CalcRotationMatrix ( const systems::Context< T > & context, const Frame< T > & frame_M ) const

Calculates and returns the rotation matrix R_MF that relates frame_M and this frame F as a function of the state stored in context.

## ◆ CalcRotationMatrixInBodyFrame()

 virtual math::RotationMatrix CalcRotationMatrixInBodyFrame ( const systems::Context< T > & context ) const
pure virtual

Returns the rotation matrix R_BF that relates body frame B to this frame F (B is the body frame to which this frame F is attached).

Note
If this is B, this method returns the identity RotationMatrix.

Implemented in FixedOffsetFrame< T >, BodyFrame< T >, and BodyFrame< double >.

## ◆ CalcRotationMatrixInWorld()

 math::RotationMatrix CalcRotationMatrixInWorld ( const systems::Context< T > & context ) const

Calculates and returns the rotation matrix R_WF that relates the world frame W and this frame F as a function of the state stored in context.

## ◆ CalcSpatialAcceleration()

 SpatialAcceleration CalcSpatialAcceleration ( const systems::Context< T > & context, const Frame< T > & measured_in_frame, const Frame< T > & expressed_in_frame ) const

Calculates this frame F's spatial acceleration measured in a frame M, expressed in a frame E.

Parameters
 [in] context contains the state of the multibody system. [in] measured_in_frame which is frame M. [in] expressed_in_frame which is frame E.
Returns
A_MF_E, this frame F's spatial acceleration measured in frame M, expressed in frame E. The rotational part of the returned quantity is α_MF_E (frame F's angular acceleration α measured in frame M, expressed in frame E). The translational part is a_MFo_E (translational acceleration of frame F's origin point Fo, measured in frame M, expressed in frame E). Although α_MF is defined below in terms of DtM(ω_MF), the time-derivative in frame M of ω_MF, the actual calculation of α_MF avoids differentiation. Similarly for the definition vs. calculation for a_MFo.
 α_MF = DtM(ω_MF)           ω_MF is frame F's angular velocity in frame M.
a_MFo = DtM(v_MFo)    v_MF is Fo's translational acceleration in frame M.

See also
CalcSpatialAccelerationInWorld() and CalcSpatialVelocity().

## ◆ CalcSpatialAccelerationInWorld()

 SpatialAcceleration CalcSpatialAccelerationInWorld ( const systems::Context< T > & context ) const

Calculates this frame F's spatial acceleration measured and expressed in the world frame W.

Parameters
 [in] context contains the state of the multibody system.
Returns
A_WF_W, this frame F's spatial acceleration measured and expressed in the world frame W. The rotational part of the returned quantity is α_WF_E (frame F's angular acceleration α measured and expressed in the world frame W). The translational part is a_WFo_W (translational acceleration of frame F's origin point Fo, measured and expressed in the world frame W).
Note
Body::EvalSpatialAccelerationInWorld() provides a more efficient way to obtain a body frame's spatial acceleration measured in the world frame.
When cached values are out of sync with the state stored in context, this method performs an expensive forward dynamics computation, whereas once evaluated, successive calls to this method are inexpensive.
See also
CalcSpatialAcceleration() and CalcSpatialVelocityInWorld().

## ◆ CalcSpatialVelocity()

 SpatialVelocity CalcSpatialVelocity ( const systems::Context< T > & context, const Frame< T > & frame_M, const Frame< T > & frame_E ) const

Calculates this frame F's spatial velocity measured in a frame M, expressed in a frame E.

Parameters
 [in] context contains the state of the multibody system. [in] frame_M which is the measured_in_frame. [in] frame_E which is the expressed_in_frame.
Returns
V_MF_E, this frame F's spatial velocity measured in frame M, expressed in frame E. The rotational part of the returned quantity is ω_MF_E (frame F's angular velocity ω measured in frame M, expressed in frame E). The translational part is v_MFo_E (translational velocity v of frame F's origin point Fo, measured in frame M, expressed in frame E).
See also
CalcSpatialVelocityInWorld(), CalcRelativeSpatialVelocity(), and CalcSpatialAcceleration().

## ◆ CalcSpatialVelocityInWorld()

 SpatialVelocity CalcSpatialVelocityInWorld ( const systems::Context< T > & context ) const

Calculates this frame F's spatial velocity measured and expressed in the world frame W.

Parameters
 [in] context contains the state of the multibody system.
Returns
V_WF_W, this frame F's spatial velocity measured and expressed in the world frame W. The rotational part of the returned quantity is ω_WF_W (frame F's angular velocity ω measured and expressed in the world frame W). The translational part is v_WFo_W (translational velocity v of frame F's origin point Fo, measured and expressed in the world frame W).
Note
Body::EvalSpatialVelocityInWorld() provides a more efficient way to obtain a body frame's spatial velocity measured in the world frame.
See also
CalcSpatialVelocity(), CalcRelativeSpatialVelocityInWorld(), and CalcSpatialAccelerationInWorld().

## ◆ CloneToScalar()

 std::unique_ptr > CloneToScalar ( const internal::MultibodyTree< ToScalar > & tree_clone ) const

(Advanced) NVI to DoCloneToScalar() templated on the scalar type of the new clone to be created.

This method is mostly intended to be called by MultibodyTree::CloneToScalar(). Most users should not call this clone method directly but rather clone the entire parent MultibodyTree if needed.

See also
MultibodyTree::CloneToScalar()

## ◆ DoCloneToScalar() [1/3]

 virtual std::unique_ptr > DoCloneToScalar ( const internal::MultibodyTree< double > & tree_clone ) const
protectedpure virtual

Clones this Frame (templated on T) to a frame templated on double.

Implemented in FixedOffsetFrame< T >, BodyFrame< T >, and BodyFrame< double >.

## ◆ DoCloneToScalar() [2/3]

 virtual std::unique_ptr > DoCloneToScalar ( const internal::MultibodyTree< AutoDiffXd > & tree_clone ) const
protectedpure virtual

Clones this Frame (templated on T) to a frame templated on AutoDiffXd.

Implemented in FixedOffsetFrame< T >, BodyFrame< T >, and BodyFrame< double >.

## ◆ DoCloneToScalar() [3/3]

 virtual std::unique_ptr > DoCloneToScalar ( const internal::MultibodyTree< symbolic::Expression > & ) const
protectedpure virtual

## ◆ EvalAngularVelocityInWorld()

 const Vector3& EvalAngularVelocityInWorld ( const systems::Context< T > & context ) const

Evaluates this frame F's angular velocity measured and expressed in the world frame W.

Parameters
 [in] context contains the state of the multibody system.
Returns
ω_WF_W (frame F's angular velocity ω measured and expressed in the world frame W).
See also
CalcAngularVelocity() to calculate ω_MF_E (this frame F's angular velocity ω measured in a frame M and expressed in a frame E).

## ◆ GetFixedOffsetPoseInBody()

 virtual math::RigidTransform GetFixedOffsetPoseInBody ( const math::RigidTransform< T > & X_FQ ) const
virtual

Variant of CalcOffsetPoseInBody() that given the offset pose X_FQ of a frame Q in this frame F, returns the pose X_BQ of frame Q in the body frame B to which this frame is attached.

Exceptions
 std::exception if called on a Frame that does not have a fixed offset in the body frame.

Reimplemented in BodyFrame< T >, and BodyFrame< double >.

## ◆ GetFixedPoseInBodyFrame()

 virtual math::RigidTransform GetFixedPoseInBodyFrame ( ) const
virtual

Variant of CalcPoseInBodyFrame() that returns the fixed pose X_BF of this frame F in the body frame B associated with this frame.

Exceptions
 std::exception if called on a Frame that does not have a fixed offset in the body frame.

Reimplemented in FixedOffsetFrame< T >, BodyFrame< T >, and BodyFrame< double >.

## ◆ GetFixedRotationMatrixInBody()

 virtual math::RotationMatrix GetFixedRotationMatrixInBody ( const math::RotationMatrix< T > & R_FQ ) const
virtual

Calculates and returns the rotation matrix R_BQ that relates body frame B to frame Q via this intermediate frame F, i.e., R_BQ = R_BF * R_FQ (B is the body frame to which this frame F is attached).

Parameters
 [in] R_FQ rotation matrix that relates frame F to frame Q.
Exceptions
 std::exception if this frame F is a Frame that does not have a fixed offset in the body frame B (i.e., R_BF is not constant).

Reimplemented in BodyFrame< T >, and BodyFrame< double >.

## ◆ GetFixedRotationMatrixInBodyFrame()

 virtual math::RotationMatrix GetFixedRotationMatrixInBodyFrame ( ) const
virtual

Returns the rotation matrix R_BF that relates body frame B to this frame F (B is the body frame to which this frame F is attached).

Exceptions
 std::exception if this frame F is a Frame that does not have a fixed offset in the body frame B (i.e., R_BF is not constant). Frame sub-classes that have a constant R_BF must override this method. An example of a frame sub-class not implementing this method would be that of a frame on a soft body, for which its pose in the body frame depends on the state of deformation of the body.

Reimplemented in FixedOffsetFrame< T >, BodyFrame< T >, and BodyFrame< double >.

## ◆ is_body_frame()

 bool is_body_frame ( ) const

Returns true if this is the body frame.

## ◆ is_world_frame()

 bool is_world_frame ( ) const

Returns true if this` is the world frame.

## ◆ name()

 const std::string& name ( ) const

Returns the name of this frame. The name will never be empty.

## ◆ operator=() [1/2]

 Frame& operator= ( Frame< T > && )
delete

## ◆ operator=() [2/2]

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

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