Drake

This Joint allows two bodies to rotate relatively to one another around a common axis. More...
#include <drake/multibody/multibody_tree/joints/revolute_joint.h>
Public Types  
template<typename Scalar >  
using  Context = systems::Context< Scalar > 
Public Member Functions  
RevoluteJoint (const std::string &name, const Frame< T > &frame_on_parent, const Frame< T > &frame_on_child, const Vector3< double > &axis)  
Constructor to create a revolute joint between two bodies so that frame F attached to the parent body P and frame M attached to the child body B, rotate relatively to one another about a common axis. More...  
const Vector3< double > &  revolute_axis () const 
Returns the axis of revolution of this joint as a unit vector. More...  
void  AddInTorque (const systems::Context< T > &context, const T &torque, MultibodyForces< T > *forces) const 
Adds into forces a given torque for this joint that is to be applied about the joint's axis. More...  
Does not allow copy, move, or assignment  
RevoluteJoint (const RevoluteJoint &)=delete  
RevoluteJoint &  operator= (const RevoluteJoint &)=delete 
RevoluteJoint (RevoluteJoint &&)=delete  
RevoluteJoint &  operator= (RevoluteJoint &&)=delete 
Contextdependent value access  
These methods require the provided context to be an instance of MultibodyTreeContext. Failure to do so leads to a std::logic_error.  
const T &  get_angle (const Context< T > &context) const 
Gets the rotation angle of this mobilizer from context . More...  
const RevoluteJoint< T > &  set_angle (Context< T > *context, const T &angle) const 
Sets the context so that the generalized coordinate corresponding to the rotation angle of this joint equals angle . More...  
const T &  get_angular_rate (const Context< T > &context) const 
Gets the rate of change, in radians per second, of this joint's angle (see get_angle()) from context . More...  
const RevoluteJoint< T > &  set_angular_rate (Context< T > *context, const T &angle) const 
Sets the rate of change, in radians per second, of this this joint's angle to theta_dot . 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)  
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...  
virtual  ~Joint () 
const std::string &  name () const 
Returns the name of this joint. More...  
const Body< T > &  parent_body () const 
Returns a const reference to the parent body P. More...  
const Body< 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  num_dofs () const 
Returns the number of degrees of freedom for this joint. 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...  
Joint (const Joint &)=delete  
Joint &  operator= (const Joint &)=delete 
Joint (Joint &&)=delete  
Joint &  operator= (Joint &&)=delete 
Protected Member Functions  
void  DoAddInOneForce (const systems::Context< T > &, int joint_dof, const T &joint_tau, MultibodyForces< T > *forces) const override 
Joint<T> override called through public NVI, Joint::AddInForce(). More...  
Protected Member Functions inherited from Joint< T >  
void  DoSetTopology (const MultibodyTreeTopology &) 
const JointImplementation &  get_implementation () const 
Returns a const reference to the internal implementation of this joint. More...  
Friends  
template<typename >  
class  RevoluteJoint 
class  JointTester 
This Joint allows two bodies to rotate relatively to one another around a common axis.
That is, 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 frames F and M to rotate with respect to each other about an axis â. The rotation angle's sign is defined such that child body B rotates about axis â according to the right hand rule, with thumb aligned in the axis direction. Axis â is constant and has the same measures in both frames F and M, that is, â_F = â_M
.
T  The scalar type. Must be a valid Eigen scalar. 
Instantiated templates for the following kinds of T's are provided:
They are already available to link against in the containing library. No other values for T are currently supported.
using Context = systems::Context<Scalar> 

delete 

delete 

inline 
Constructor to create a revolute joint between two bodies so that frame F attached to the parent body P and frame M attached to the child body B, rotate relatively to one another about a common axis.
See this class's documentation for further details on the definition of these frames and rotation angle. The first three arguments to this constructor are those of the Joint class constructor. See the Joint class's documentation for details. The additional parameter axis
is:
[in]  axis  A vector in ℝ³ specifying the axis of revolution for this joint. Given that frame M only rotates with respect to F and their origins are coincident at all times, the measures of axis in either frame F or M are exactly the same, that is, axis_F = axis_M . In other words, axis_F (or axis_M ) is the eigenvector of R_FM with eigenvalue equal to one. This vector can have any length, only the direction is used. This method aborts if axis is the zero vector. 

inline 
Adds into forces
a given torque
for this
joint that is to be applied about the joint's axis.
The torque is defined to be positive according to the righthandrule with the thumb aligned in the direction of this
joint's axis. That is, a positive torque causes a positive rotational acceleration according to the righthandrule around the joint's axis.

inlineoverrideprotectedvirtual 
Joint<T> override called through public NVI, Joint::AddInForce().
Therefore arguments were already checked to be valid. For a RevoluteJoint, we must always have joint_dof = 0
since there is only a single degree of freedom (get_num_dofs() == 1). joint_tau
is the torque applied about the joint's axis, on the body declared as child (according to the revolute joint's constructor) at the origin of the child frame (which is coincident with the origin of the parent frame at all times). The torque is defined to be positive according to the righthandrule with the thumb aligned in the direction of this
joint's axis. That is, a positive torque causes a positive rotational acceleration (of the child body frame) according to the righthandrule around the joint's axis.
Implements Joint< T >.

inline 
Gets the rotation angle of this
mobilizer from context
.
[in]  context  The context of the MultibodyTree this joint belongs to. 
this
joint stored in the context
.

inline 
Gets the rate of change, in radians per second, of this
joint's angle (see get_angle()) from context
.
[in]  context  The context of the MultibodyTree this joint belongs to. 
this
joint's angle as stored in the context
.

delete 

delete 
Returns the axis of revolution of this
joint as a unit vector.
Since the measures of this axis in either frame F or M are the same (see this class's documentation for frames's definitions) then, axis = axis_F = axis_M
.

inline 
Sets the context
so that the generalized coordinate corresponding to the rotation angle of this
joint equals angle
.
[in]  context  The context of the MultibodyTree this joint belongs to. 
[in]  angle  The desired angle in radians to be stored in context . 
this
joint.

inline 
Sets the rate of change, in radians per second, of this this
joint's angle to theta_dot
.
The new rate of change theta_dot
gets stored in context
.
[in]  context  The context of the MultibodyTree this joint belongs to. 
[in]  theta_dot  The desired rate of change of this joints's angle in radians per second. 
this
joint.

friend 

friend 