template<typename T>
class drake::multibody::RpyFloatingJoint< T >
This Joint allows a rigid body to move freely with respect to its parent rigid body.
This is most commonly used to allow a body to move freely with respect to the World, but can be used with any parent. More precisely, given a frame F attached to the parent body P and a frame M attached to the child body B (see the Joint class's documentation), this joint allows frame M to translate and rotate freely with respect to F, introducing six degrees of freedom. However, unlike the QuaternionFloatingJoint, the orientation of M relative to F is parameterized with roll-pitch-yaw angles (see warning below). The generalized coordinates q for this joint are the three orientation angles followed by three generalized positions to describe the translation of frame M's origin Mo in F with a position vector p_FM
. As generalized velocities, we use the angular velocity w_FM
of frame M in F (not the orientation angle time derivatives q̇) and the linear velocity v_FM
of frame M's origin Mo in frame F.
- Warning
- Any three-parameter representation of orientation necessarily has a singularity somewhere. In this case, the singularity occurs when the pitch angle (second generalized coordinate q) is at π/2 + kπ (for any integer k), and numerical issues may occur when near one of those configurations. If you can't be sure your simulation will avoid the singularities, consider using the singularity-free QuaternionFloatingJoint instead.
- Template Parameters
-
|
| RpyFloatingJoint (const std::string &name, const Frame< T > &frame_on_parent, const Frame< T > &frame_on_child, double angular_damping=0.0, double translational_damping=0.0) |
| Constructor to create an rpy floating joint between two bodies so that frame F attached to the parent body P and frame M attached to the child body B move freely relative to one another. More...
|
|
| ~RpyFloatingJoint () final |
|
const std::string & | type_name () const final |
| Returns the name of this joint type: "rpy_floating". More...
|
|
double | default_angular_damping () const |
| Returns this joint's default angular damping constant in N⋅m⋅s. More...
|
|
double | default_translational_damping () const |
| Returns this joint's default translational damping constant in N⋅s/m. More...
|
|
|
| RpyFloatingJoint (const RpyFloatingJoint &)=delete |
|
RpyFloatingJoint & | operator= (const RpyFloatingJoint &)=delete |
|
| RpyFloatingJoint (RpyFloatingJoint &&)=delete |
|
RpyFloatingJoint & | operator= (RpyFloatingJoint &&)=delete |
|
|
Functions in this section are given a Context and either get from it, or set in it, quantities relevant to this RpyFloatingJoint.
These functions can only be called after MultibodyPlant::Finalize().
|
Vector3< T > | get_angles (const Context< T > &context) const |
| Gets the roll-pitch-yaw rotation angles of this joint from context . More...
|
|
const RpyFloatingJoint< T > & | set_angles (Context< T > *context, const Vector3< T > &angles) const |
| Sets the context so that the generalized coordinates corresponding to the roll-pitch-yaw rotation angles of this joint equals angles . More...
|
|
const RpyFloatingJoint< T > & | SetOrientation (systems::Context< T > *context, const math::RotationMatrix< T > &R_FM) const |
| Sets the roll-pitch-yaw angles in context so this Joint's orientation is consistent with the given R_FM rotation matrix. More...
|
|
Vector3< T > | get_translation (const systems::Context< T > &context) const |
| Returns the translation (position vector) p_FM of the child frame M's origin Mo as measured and expressed in the parent frame F. More...
|
|
const RpyFloatingJoint< T > & | SetTranslation (systems::Context< T > *context, const Vector3< T > &p_FM) const |
| Sets context to store the translation (position vector) p_FM of frame M's origin Mo measured and expressed in frame F. More...
|
|
math::RigidTransform< T > | GetPose (const systems::Context< T > &context) const |
| Returns the pose X_FM of the outboard frame M as measured and expressed in the inboard frame F. More...
|
|
const RpyFloatingJoint< T > & | SetPose (systems::Context< T > *context, const math::RigidTransform< T > &X_FM) const |
| Sets context to store X_FM the pose of frame M measured and expressed in frame F. More...
|
|
Vector3< T > | get_angular_velocity (const systems::Context< T > &context) const |
| Retrieves from context the angular velocity w_FM of the child frame M in the parent frame F, expressed in F. More...
|
|
const RpyFloatingJoint< T > & | set_angular_velocity (systems::Context< T > *context, const Vector3< T > &w_FM) const |
| Sets in context the state for this joint so that the angular velocity of the child frame M in the parent frame F is w_FM . More...
|
|
Vector3< T > | get_translational_velocity (const systems::Context< T > &context) const |
| Retrieves from context the translational velocity v_FM of the child frame M's origin as measured and expressed in the parent frame F. More...
|
|
const RpyFloatingJoint< T > & | set_translational_velocity (systems::Context< T > *context, const Vector3< T > &v_FM) const |
| Sets in context the state for this joint so that the translational velocity of the child frame M's origin in the parent frame F is v_FM . More...
|
|
|
These functions can only be called after MultibodyPlant::Finalize().
|
void | set_random_angles_distribution (const Vector3< symbolic::Expression > &angles) |
| Sets the random distribution from which the roll-pitch-yaw orientation angles of this joint will be randomly sampled. More...
|
|
void | set_random_translation_distribution (const Vector3< symbolic::Expression > &p_FM) |
| Sets the random distribution that the translation vector of this joint will be randomly sampled from. More...
|
|
|
Functions in this section set or get the default values for the pose states q (rpy angles and translation vector) of this RpyFloatingJoint.
These are stored directly in the joint rather than in a Context and are used to initialize Contexts. Note that the default velocities v are always zero.
|
Vector3< double > | get_default_angles () const |
| Gets the default angles for this joint. More...
|
|
void | set_default_angles (const Vector3< double > &angles) |
| Sets the default roll-pitch-yaw angles of this joint. More...
|
|
Vector3< double > | get_default_translation () const |
| Gets the default translation (position vector) p_FM for this joint. More...
|
|
void | set_default_translation (const Vector3< double > &p_FM) |
| Sets the default translation (position vector) p_FM of this joint. More...
|
|
Public Member Functions inherited from Joint< T > |
| Joint (const std::string &name, const Frame< T > &frame_on_parent, const Frame< T > &frame_on_child, VectorX< double > damping, const VectorX< double > &pos_lower_limits, const VectorX< double > &pos_upper_limits, const VectorX< double > &vel_lower_limits, const VectorX< double > &vel_upper_limits, const VectorX< double > &acc_lower_limits, const VectorX< double > &acc_upper_limits) |
| Creates a joint between two Frame objects which imposes a given kinematic relation between frame F attached on the parent body P and frame M attached on the child body B. More...
|
|
| Joint (const std::string &name, const Frame< T > &frame_on_parent, const Frame< T > &frame_on_child, const VectorX< double > &pos_lower_limits, const VectorX< double > &pos_upper_limits, const VectorX< double > &vel_lower_limits, const VectorX< double > &vel_upper_limits, const VectorX< double > &acc_lower_limits, const VectorX< double > &acc_upper_limits) |
| Additional constructor overload for joints with zero damping. More...
|
|
virtual | ~Joint () |
|
JointIndex | index () const |
| Returns this element's unique index. More...
|
|
int | ordinal () const |
| Returns this element's unique ordinal. More...
|
|
const std::string & | name () const |
| Returns the name of this joint. More...
|
|
const RigidBody< T > & | parent_body () const |
| Returns a const reference to the parent body P. More...
|
|
const RigidBody< T > & | child_body () const |
| Returns a const reference to the child body B. More...
|
|
const Frame< T > & | frame_on_parent () const |
| Returns a const reference to the frame F attached on the parent body P. More...
|
|
const Frame< T > & | frame_on_child () const |
| Returns a const reference to the frame M attached on the child body B. More...
|
|
int | velocity_start () const |
| Returns the index to the first generalized velocity for this joint within the vector v of generalized velocities for the full multibody system. More...
|
|
int | num_velocities () const |
| Returns the number of generalized velocities describing this joint. More...
|
|
int | position_start () const |
| Returns the index to the first generalized position for this joint within the vector q of generalized positions for the full multibody system. More...
|
|
int | num_positions () const |
| Returns the number of generalized positions describing this joint. More...
|
|
bool | can_rotate () const |
| Returns true if this joint's mobility allows relative rotation of the two frames associated with this joint. More...
|
|
bool | can_translate () const |
| Returns true if this joint's mobility allows relative translation of the two frames associated with this joint. More...
|
|
std::string | position_suffix (int position_index_in_joint) const |
| Returns a string suffix (e.g. More...
|
|
std::string | velocity_suffix (int velocity_index_in_joint) const |
| Returns a string suffix (e.g. More...
|
|
const T & | GetOnePosition (const systems::Context< T > &context) const |
| Returns the position coordinate for joints with a single degree of freedom. More...
|
|
const T & | GetOneVelocity (const systems::Context< T > &context) const |
| Returns the velocity coordinate for joints with a single degree of freedom. More...
|
|
void | AddInOneForce (const systems::Context< T > &context, int joint_dof, const T &joint_tau, MultibodyForces< T > *forces) const |
| Adds into forces a force along the one of the joint's degrees of freedom indicated by index joint_dof . More...
|
|
void | AddInDamping (const systems::Context< T > &context, MultibodyForces< T > *forces) const |
| Adds into forces the force due to damping within this joint. More...
|
|
void | Lock (systems::Context< T > *context) const |
| Lock the joint. More...
|
|
void | Unlock (systems::Context< T > *context) const |
| Unlock the joint. More...
|
|
bool | is_locked (const systems::Context< T > &context) const |
|
const VectorX< double > & | default_damping_vector () const |
| Returns all default damping coefficients for joints that model viscous damping, of size num_velocities(). More...
|
|
const VectorX< T > & | GetDampingVector (const systems::Context< T > &context) const |
| Returns the Context dependent damping coefficients stored as parameters in context . More...
|
|
void | set_default_damping_vector (const VectorX< double > &damping) |
| Sets the default value of the viscous damping coefficients for this joint. More...
|
|
void | SetDampingVector (systems::Context< T > *context, const VectorX< T > &damping) const |
| Sets the value of the viscous damping coefficients for this joint, stored as parameters in context . More...
|
|
| Joint (const Joint &)=delete |
|
Joint & | operator= (const Joint &)=delete |
|
| Joint (Joint &&)=delete |
|
Joint & | operator= (Joint &&)=delete |
|
const VectorX< double > & | position_lower_limits () const |
| Returns the position lower limits. More...
|
|
const VectorX< double > & | position_upper_limits () const |
| Returns the position upper limits. More...
|
|
const VectorX< double > & | velocity_lower_limits () const |
| Returns the velocity lower limits. More...
|
|
const VectorX< double > & | velocity_upper_limits () const |
| Returns the velocity upper limits. More...
|
|
const VectorX< double > & | acceleration_lower_limits () const |
| Returns the acceleration lower limits. More...
|
|
const VectorX< double > & | acceleration_upper_limits () const |
| Returns the acceleration upper limits. More...
|
|
void | set_position_limits (const VectorX< double > &lower_limits, const VectorX< double > &upper_limits) |
| Sets the position limits to lower_limits and upper_limits . More...
|
|
void | set_velocity_limits (const VectorX< double > &lower_limits, const VectorX< double > &upper_limits) |
| Sets the velocity limits to lower_limits and upper_limits . More...
|
|
void | set_acceleration_limits (const VectorX< double > &lower_limits, const VectorX< double > &upper_limits) |
| Sets the acceleration limits to lower_limits and upper_limits . More...
|
|
void | set_default_positions (const VectorX< double > &default_positions) |
| Sets the default generalized position coordinates q₀ to default_positions . More...
|
|
const VectorX< double > & | default_positions () const |
| Returns the default generalized position coordinates q₀. More...
|
|
void | SetPositions (systems::Context< T > *context, const Eigen::Ref< const VectorX< T >> &positions) const |
| Sets in the given context the generalized position coordinates q for this joint to positions . More...
|
|
Eigen::Ref< const VectorX< T > > | GetPositions (const systems::Context< T > &context) const |
| Returns the current value in the given context of the generalized coordinates q for this joint. More...
|
|
void | SetVelocities (systems::Context< T > *context, const Eigen::Ref< const VectorX< T >> &velocities) const |
| Sets in the given context the generalized velocity coordinates v for this joint to velocities . More...
|
|
Eigen::Ref< const VectorX< T > > | GetVelocities (const systems::Context< T > &context) const |
| Returns the current value in the given context of the generalized velocities v for this joint. More...
|
|
void | SetDefaultPose (const math::RigidTransform< double > &X_FM) |
| Sets this joint's default generalized positions q₀ such that the pose of the child frame M in the parent frame F best matches the given pose. More...
|
|
math::RigidTransform< double > | GetDefaultPose () const |
| Returns this joint's default pose as a RigidTransform X_FM. More...
|
|
void | SetPose (systems::Context< T > *context, const math::RigidTransform< T > &X_FM) const |
| Sets in the given context this joint's generalized positions q such that the pose of the child frame M in the parent frame F best matches the given pose. More...
|
|
math::RigidTransform< T > | GetPose (const systems::Context< T > &context) const |
| Returns this joint's current pose using its position coordinates q taken from the given context and converting that to a RigidTransform X_FM(q). More...
|
|
void | SetSpatialVelocity (systems::Context< T > *context, const SpatialVelocity< T > &V_FM) const |
| Sets in the given context this joint's generalized velocities v such that the spatial velocity of the child frame M in the parent frame F best matches the given spatial velocity. More...
|
|
SpatialVelocity< T > | GetSpatialVelocity (const systems::Context< T > &context) const |
| Given the generalized positions q and generalized velocities v for this joint in the given context , returns the cross-joint spatial velocity V_FM. More...
|
|
void | SetDefaultPosePair (const Quaternion< double > &q_FM, const Vector3< double > &p_FM) |
| (Advanced) This is the same as SetDefaultPose() except it takes the pose as a (quaternion, translation vector) pair. More...
|
|
std::pair< Eigen::Quaternion< double >, Vector3< double > > | GetDefaultPosePair () const |
| (Advanced) This is the same as GetDefaultPose() except it returns this joint's default pose as a (quaternion, translation vector) pair. More...
|
|
void | SetPosePair (systems::Context< T > *context, const Quaternion< T > &q_FM, const Vector3< T > &p_FM) const |
| (Advanced) This is the same as SetPose() except it takes the pose as a (quaternion, translation vector) pair. More...
|
|
std::pair< Eigen::Quaternion< T >, Vector3< T > > | GetPosePair (const systems::Context< T > &context) const |
| (Advanced) This is the same as GetPose() except it returns this joint's pose in the given context as a (quaternion, translation vector) pair. More...
|
|
Public Member Functions inherited from MultibodyElement< T > |
virtual | ~MultibodyElement () |
|
ModelInstanceIndex | model_instance () const |
| Returns the ModelInstanceIndex of the model instance to which this element belongs. More...
|
|
template<typename = void> |
const MultibodyPlant< T > & | 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...
|
|
void | SetDefaultParameters (systems::Parameters< T > *parameters) const |
| Sets default values of parameters belonging to each MultibodyElement in parameters at a call to MultibodyTreeSystem::SetDefaultParameters(). More...
|
|
| MultibodyElement (const MultibodyElement &)=delete |
|
MultibodyElement & | operator= (const MultibodyElement &)=delete |
|
| MultibodyElement (MultibodyElement &&)=delete |
|
MultibodyElement & | operator= (MultibodyElement &&)=delete |
|
|
void | DoAddInOneForce (const systems::Context< T > &, int, const T &, MultibodyForces< T > *) const final |
| Joint<T> override called through public NVI, Joint::AddInForce(). More...
|
|
void | DoAddInDamping (const systems::Context< T > &context, MultibodyForces< T > *forces) const final |
| Joint<T> override called through public NVI, Joint::AddInDamping(). More...
|
|
Protected Member Functions inherited from Joint< T > |
virtual const T & | DoGetOnePosition (const systems::Context< T > &) const |
| Implementation of the NVI GetOnePosition() that must only be implemented by those joint subclasses that have a single degree of freedom. More...
|
|
virtual const T & | DoGetOneVelocity (const systems::Context< T > &) const |
| Implementation of the NVI GetOneVelocity() that must only be implemented by those joint subclasses that have a single degree of freedom. More...
|
|
void | DoSetTopology (const internal::MultibodyTreeTopology &) override |
| Implementation of the NVI SetTopology(). More...
|
|
const JointImplementation & | get_implementation () const |
| Returns a const reference to the internal implementation of this joint. More...
|
|
bool | has_implementation () const |
| Returns whether this joint owns a particular implementation. More...
|
|
std::pair< const Frame< T > *, const Frame< T > * > | tree_frames (bool use_reversed_mobilizer) const |
| Utility for concrete joint implementations to use to select the inboard/outboard frames for a tree in the spanning forest, given whether they should be reversed from the parent/child frames that are members of this Joint object. More...
|
|
template<template< typename > class ConcreteMobilizer> |
const ConcreteMobilizer< T > & | get_mobilizer_downcast () const |
| (Internal use only) Returns the mobilizer implementing this joint, downcast to its specific type. More...
|
|
template<template< typename > class ConcreteMobilizer> |
ConcreteMobilizer< T > & | get_mutable_mobilizer_downcast () |
| (Internal use only) Mutable flavor of get_mobilizer_downcast(). More...
|
|
Protected Member Functions inherited from MultibodyElement< T > |
| 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...
|
|
| MultibodyElement (ModelInstanceIndex model_instance, int64_t index) |
| Both the model instance and element index are specified. More...
|
|
template<typename ElementIndexType > |
ElementIndexType | index_impl () const |
| Returns this element's unique index. More...
|
|
int | ordinal_impl () const |
| Returns this element's unique ordinal. 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...
|
|
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...
|
|