00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef PR2_GRIPPER_CONTROLLER_H__
00036 #define PR2_GRIPPER_CONTROLLER_H__
00037
00061 #include <ros/node_handle.h>
00062
00063 #include <pr2_controller_interface/controller.h>
00064 #include <control_toolbox/pid.h>
00065 #include <control_toolbox/pid_gains_setter.h>
00066 #include <boost/scoped_ptr.hpp>
00067 #include <boost/thread/condition.hpp>
00068 #include <realtime_tools/realtime_box.h>
00069 #include <realtime_tools/realtime_publisher.h>
00070 #include <std_msgs/Float64.h>
00071
00072 #include <pr2_controllers_msgs/JointControllerState.h>
00073 #include <pr2_controllers_msgs/Pr2GripperCommand.h>
00074
00075 namespace controller
00076 {
00077
00078 class Pr2GripperController : public pr2_controller_interface::Controller
00079 {
00080 public:
00081
00082 Pr2GripperController();
00083 ~Pr2GripperController();
00084
00085 bool init(pr2_mechanism_model::RobotState *robot, ros::NodeHandle &n);
00086
00087 virtual void starting() {
00088 using namespace pr2_controllers_msgs;
00089 Pr2GripperCommandPtr c(new Pr2GripperCommand);
00090 c->position = joint_state_->position_;
00091 c->max_effort = 0.0;
00092 command_box_.set(c);
00093 }
00094
00098 virtual void update();
00099
00100 pr2_mechanism_model::JointState *joint_state_;
00101 realtime_tools::RealtimeBox<pr2_controllers_msgs::Pr2GripperCommandConstPtr> command_box_;
00102
00103 private:
00104 int loop_count_;
00105 pr2_mechanism_model::RobotState *robot_;
00106 control_toolbox::Pid pid_;
00107 ros::Time last_time_;
00108
00109 ros::NodeHandle node_;
00110
00111 boost::scoped_ptr<
00112 realtime_tools::RealtimePublisher<
00113 pr2_controllers_msgs::JointControllerState> > controller_state_publisher_ ;
00114
00115 ros::Subscriber sub_command_;
00116 void commandCB(const pr2_controllers_msgs::Pr2GripperCommandConstPtr& msg);
00117 };
00118
00119 }
00120
00121 #endif