Classes | Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
velocity_controllers::JointPositionController Class Reference

Joint Position Controller. More...

#include <joint_position_controller.h>

Inheritance diagram for velocity_controllers::JointPositionController:
Inheritance graph
[legend]

Classes

struct  Commands
 Store position and velocity command in struct to allow easier realtime buffer usage. More...
 

Public Member Functions

void getGains (double &p, double &i, double &d, double &i_max, double &i_min)
 Get the PID parameters. More...
 
void getGains (double &p, double &i, double &d, double &i_max, double &i_min, bool &antiwindup)
 Get the PID parameters. More...
 
std::string getJointName ()
 Get the name of the joint this controller uses. More...
 
double getPosition ()
 Get the current position of the joint. More...
 
bool init (hardware_interface::VelocityJointInterface *robot, ros::NodeHandle &n)
 The init function is called to initialize the controller from a non-realtime thread with a pointer to the hardware interface, itself, instead of a pointer to a RobotHW. More...
 
 JointPositionController ()
 
void printDebug ()
 Print debug info to console. More...
 
void setCommand (double pos_target)
 Give set position of the joint for next update: revolute (angle) and prismatic (position) More...
 
void setCommand (double pos_target, double vel_target)
 Give set position of the joint for next update: revolute (angle) and prismatic (position) Also supports a target velocity. More...
 
void setGains (const double &p, const double &i, const double &d, const double &i_max, const double &i_min, const bool &antiwindup=false)
 Get the PID parameters. More...
 
void starting (const ros::Time &time)
 This is called from within the realtime thread just before the first call to update. More...
 
void update (const ros::Time &time, const ros::Duration &period)
 Issues commands to the joint. Should be called at regular intervals. More...
 
 ~JointPositionController ()
 
- Public Member Functions inherited from controller_interface::Controller< hardware_interface::VelocityJointInterface >
 Controller ()
 
virtual bool init (hardware_interface::VelocityJointInterface *, ros::NodeHandle &, ros::NodeHandle &)
 
virtual ~Controller ()
 
- Public Member Functions inherited from controller_interface::ControllerBase
 ControllerBase ()
 
bool isRunning ()
 
bool isRunning ()
 
bool startRequest (const ros::Time &time)
 
bool startRequest (const ros::Time &time)
 
virtual void stopping (const ros::Time &)
 
virtual void stopping (const ros::Time &)
 
bool stopRequest (const ros::Time &time)
 
bool stopRequest (const ros::Time &time)
 
void updateRequest (const ros::Time &time, const ros::Duration &period)
 
void updateRequest (const ros::Time &time, const ros::Duration &period)
 
virtual ~ControllerBase ()
 

Public Attributes

realtime_tools::RealtimeBuffer< Commandscommand_
 
Commands command_struct_
 
hardware_interface::JointHandle joint_
 
urdf::JointConstSharedPtr joint_urdf_
 
- Public Attributes inherited from controller_interface::ControllerBase
 CONSTRUCTED
 
 INITIALIZED
 
 RUNNING
 
enum controller_interface::ControllerBase:: { ... }  state_
 

Private Member Functions

void enforceJointLimits (double &command)
 Check that the command is within the hard limits of the joint. Checks for joint type first. Sets command to limit if out of bounds. More...
 
void setCommandCB (const std_msgs::Float64ConstPtr &msg)
 Callback from /command subscriber for setpoint. More...
 

Private Attributes

boost::scoped_ptr< realtime_tools::RealtimePublisher< control_msgs::JointControllerState > > controller_state_publisher_
 
int loop_count_
 
control_toolbox::Pid pid_controller_
 
ros::Subscriber sub_command_
 

Additional Inherited Members

- Public Types inherited from controller_interface::ControllerBase
typedef std::vector< hardware_interface::InterfaceResourcesClaimedResources
 
- Protected Member Functions inherited from controller_interface::Controller< hardware_interface::VelocityJointInterface >
std::string getHardwareInterfaceType () const
 
virtual bool initRequest (hardware_interface::RobotHW *robot_hw, ros::NodeHandle &root_nh, ros::NodeHandle &controller_nh, ClaimedResources &claimed_resources)
 

Detailed Description

Joint Position Controller.

This class controls positon using a pid loop.

ROS

Parameters
typeMust be "velocity_controllers::JointPositionController"
jointName of the joint to control.
pidContains the gains for the PID loop around position. See: control_toolbox::Pid

Subscribes to:

Publishes:

Definition at line 85 of file joint_position_controller.h.

Constructor & Destructor Documentation

velocity_controllers::JointPositionController::JointPositionController ( )

Definition at line 49 of file joint_position_controller.cpp.

velocity_controllers::JointPositionController::~JointPositionController ( )

Definition at line 53 of file joint_position_controller.cpp.

Member Function Documentation

void velocity_controllers::JointPositionController::enforceJointLimits ( double &  command)
private

Check that the command is within the hard limits of the joint. Checks for joint type first. Sets command to limit if out of bounds.

Parameters
command- the input to test

Definition at line 254 of file joint_position_controller.cpp.

void velocity_controllers::JointPositionController::getGains ( double &  p,
double &  i,
double &  d,
double &  i_max,
double &  i_min 
)

Get the PID parameters.

Definition at line 104 of file joint_position_controller.cpp.

void velocity_controllers::JointPositionController::getGains ( double &  p,
double &  i,
double &  d,
double &  i_max,
double &  i_min,
bool &  antiwindup 
)

Get the PID parameters.

Definition at line 110 of file joint_position_controller.cpp.

std::string velocity_controllers::JointPositionController::getJointName ( )

Get the name of the joint this controller uses.

Definition at line 120 of file joint_position_controller.cpp.

double velocity_controllers::JointPositionController::getPosition ( )

Get the current position of the joint.

Returns
current position

Definition at line 125 of file joint_position_controller.cpp.

bool velocity_controllers::JointPositionController::init ( hardware_interface::VelocityJointInterface robot,
ros::NodeHandle n 
)
virtual

The init function is called to initialize the controller from a non-realtime thread with a pointer to the hardware interface, itself, instead of a pointer to a RobotHW.

Parameters
robotThe specific hardware interface used by this controller.
nA NodeHandle in the namespace from which the controller should read its configuration, and where it should set up its ROS interface.
Returns
True if initialization was successful and the controller is ready to be started.

Reimplemented from controller_interface::Controller< hardware_interface::VelocityJointInterface >.

Definition at line 58 of file joint_position_controller.cpp.

void velocity_controllers::JointPositionController::printDebug ( )

Print debug info to console.

Definition at line 115 of file joint_position_controller.cpp.

void velocity_controllers::JointPositionController::setCommand ( double  pos_target)

Give set position of the joint for next update: revolute (angle) and prismatic (position)

Parameters
command

Definition at line 131 of file joint_position_controller.cpp.

void velocity_controllers::JointPositionController::setCommand ( double  pos_target,
double  vel_target 
)

Give set position of the joint for next update: revolute (angle) and prismatic (position) Also supports a target velocity.

Parameters
pos_target- position setpoint
vel_target- velocity setpoint

Definition at line 143 of file joint_position_controller.cpp.

void velocity_controllers::JointPositionController::setCommandCB ( const std_msgs::Float64ConstPtr &  msg)
private

Callback from /command subscriber for setpoint.

Definition at line 248 of file joint_position_controller.cpp.

void velocity_controllers::JointPositionController::setGains ( const double &  p,
const double &  i,
const double &  d,
const double &  i_max,
const double &  i_min,
const bool &  antiwindup = false 
)

Get the PID parameters.

Definition at line 99 of file joint_position_controller.cpp.

void velocity_controllers::JointPositionController::starting ( const ros::Time time)
virtual

This is called from within the realtime thread just before the first call to update.

Parameters
timeThe current time

Reimplemented from controller_interface::ControllerBase.

Definition at line 152 of file joint_position_controller.cpp.

void velocity_controllers::JointPositionController::update ( const ros::Time time,
const ros::Duration period 
)
virtual

Issues commands to the joint. Should be called at regular intervals.

Implements controller_interface::ControllerBase.

Definition at line 167 of file joint_position_controller.cpp.

Member Data Documentation

realtime_tools::RealtimeBuffer<Commands> velocity_controllers::JointPositionController::command_

Definition at line 178 of file joint_position_controller.h.

Commands velocity_controllers::JointPositionController::command_struct_

Definition at line 179 of file joint_position_controller.h.

boost::scoped_ptr< realtime_tools::RealtimePublisher< control_msgs::JointControllerState> > velocity_controllers::JointPositionController::controller_state_publisher_
private

Definition at line 187 of file joint_position_controller.h.

hardware_interface::JointHandle velocity_controllers::JointPositionController::joint_

Definition at line 176 of file joint_position_controller.h.

urdf::JointConstSharedPtr velocity_controllers::JointPositionController::joint_urdf_

Definition at line 177 of file joint_position_controller.h.

int velocity_controllers::JointPositionController::loop_count_
private

Definition at line 182 of file joint_position_controller.h.

control_toolbox::Pid velocity_controllers::JointPositionController::pid_controller_
private

Internal PID controller.

Definition at line 183 of file joint_position_controller.h.

ros::Subscriber velocity_controllers::JointPositionController::sub_command_
private

Definition at line 189 of file joint_position_controller.h.


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


velocity_controllers
Author(s): Vijay Pradeep
autogenerated on Thu Apr 11 2019 03:08:48