Tesseract
Motion Planning Environment
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Private Member Functions | Friends | List of all members
tesseract_scene_graph::JointSafety Class Reference

Parameters for Joint Safety Controllers. More...

#include <joint.h>

Public Types

using Ptr = std::shared_ptr< JointSafety >
 
using ConstPtr = std::shared_ptr< const JointSafety >
 

Public Member Functions

 JointSafety ()=default
 
 JointSafety (double soft_upper_limit, double soft_lower_limit, double k_position, double k_velocity)
 
void clear ()
 
bool operator== (const JointSafety &rhs) const
 
bool operator!= (const JointSafety &rhs) const
 

Public Attributes

double soft_upper_limit { 0 }
 
double soft_lower_limit { 0 }
 
double k_position { 0 }
 
double k_velocity { 0 }
 

Private Member Functions

template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Friends

class boost::serialization::access
 
std::ostream & operator<< (std::ostream &os, const JointSafety &safety)
 

Detailed Description

Parameters for Joint Safety Controllers.

Member Typedef Documentation

◆ ConstPtr

◆ Ptr

Constructor & Destructor Documentation

◆ JointSafety() [1/2]

tesseract_scene_graph::JointSafety::JointSafety ( )
default

◆ JointSafety() [2/2]

tesseract_scene_graph::JointSafety::JointSafety ( double  soft_upper_limit,
double  soft_lower_limit,
double  k_position,
double  k_velocity 
)
inline

Member Function Documentation

◆ clear()

void tesseract_scene_graph::JointSafety::clear ( )
inline

◆ operator!=()

bool tesseract_scene_graph::JointSafety::operator!= ( const JointSafety rhs) const

◆ operator==()

bool tesseract_scene_graph::JointSafety::operator== ( const JointSafety rhs) const

◆ serialize()

template<class Archive >
void tesseract_scene_graph::JointSafety::serialize ( Archive &  ar,
const unsigned int  version 
)
private

Friends And Related Function Documentation

◆ boost::serialization::access

friend class boost::serialization::access
friend

◆ operator<<

std::ostream & operator<< ( std::ostream &  os,
const JointSafety safety 
)
friend

Member Data Documentation

◆ k_position

double tesseract_scene_graph::JointSafety::k_position { 0 }

◆ k_velocity

double tesseract_scene_graph::JointSafety::k_velocity { 0 }

◆ soft_lower_limit

double tesseract_scene_graph::JointSafety::soft_lower_limit { 0 }

◆ soft_upper_limit

double tesseract_scene_graph::JointSafety::soft_upper_limit { 0 }

IMPORTANT: The safety controller support is very much PR2 specific, not intended for generic usage.

Basic safety controller operation is as follows

current safety controllers will take effect on joints outside the position range below:

position range: [JointSafety::soft_lower_limit + JointLimits::velocity / JointSafety::k_position, JointSafety::soft_uppper_limit - JointLimits::velocity / JointSafety::k_position]

if (joint_position is outside of the position range above) velocity_limit_min = -JointLimits::velocity + JointSafety::k_position * (joint_position - JointSafety::soft_lower_limit) velocity_limit_max = JointLimits::velocity + JointSafety::k_position * (joint_position - JointSafety::soft_upper_limit) else velocity_limit_min = -JointLimits::velocity velocity_limit_max = JointLimits::velocity

velocity range: [velocity_limit_min + JointLimits::effort / JointSafety::k_velocity, velocity_limit_max - JointLimits::effort / JointSafety::k_velocity]

if (joint_velocity is outside of the velocity range above) effort_limit_min = -JointLimits::effort + JointSafety::k_velocity * (joint_velocity - velocity_limit_min) effort_limit_max = JointLimits::effort + JointSafety::k_velocity * (joint_velocity - velocity_limit_max) else effort_limit_min = -JointLimits::effort effort_limit_max = JointLimits::effort

Final effort command sent to the joint is saturated by [effort_limit_min,effort_limit_max]

Please see wiki for more details: http://www.ros.org/wiki/pr2_controller_manager/safety_limits


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