ROS-UVS  1.0.0
A Minimalistic ROS Library for Visual Constraint Minimization through Uncalibrated Visual Servoing
 All Classes Files Functions Variables
wam_controller.h
Go to the documentation of this file.
1 #ifndef WAM_CONTROLLER_H
2 #define WAM_CONTROLLER_H
3 
4 #include <ros/ros.h>
5 #include <Eigen/Core>
6 #include "sensor_msgs/JointState.h"
7 #include "geometry_msgs/PoseStamped.h"
8 
9 
11 
12 // Hand services
13 #include <std_srvs/Empty.h>
14 #include "wam_srvs/BHandSpreadPos.h"
15 #include "wam_srvs/BHandGraspPos.h"
16 #include "wam_srvs/BHandPinchPos.h"
17 #include "wam_srvs/BHandFingerPos.h"
18 
19 // Arm services
20 #include "wam_srvs/Play.h"
21 #include "wam_srvs/Hold.h"
22 #include "wam_srvs/JointMove.h"
23 
24 // Arm topics
25 #include "wam_msgs/RTJointPos.h"
26 
28  public:
29  double max_rate = 0.01;
30  WamController(std::string robot_ns, ros::NodeHandle nh);
31 
32  // Hand calls
33  bool initialize();
34  bool close_grasp();
35  bool open_grasp();
36  bool open_spread();
37  bool close_spread();
38  bool grasp_pos(double radians);
39  bool spread_pos(double radians);
40  bool pinch_pos(double radians);
41  bool finger_pos(double f1, double f2, double f3);
42  bool reset();
43  bool set_2_finger_grasp();
44  bool set_3_finger_grasp();
45 
46  // Arm calls
47  bool delta_move(const Eigen::VectorXd& delta);
48  bool rt_delta_move(const Eigen::VectorXd& delta);
49  bool joint_move(const Eigen::VectorXd& target_jnt_state);
51  bool play_motion(std::string motion);
52  bool hold_joints(bool hold_joints);
53 
54  geometry_msgs::PoseStamped get_pose() {
55  return last_pose;
56  }
57 
58  Eigen::VectorXd get_jnt_state();
59  Eigen::VectorXd get_used_jnt_state();
60 
61  size_t get_dof() {
62  return last_jnt_state.position.size();
63  }
64 
65  std::vector<int> get_used_joints() {
66  return mapping;
67  }
68 
69  void set_used_joints(std::string);
70  void set_used_joints(std::vector<int> new_joints);
71 
72  void set_target_joint_pose(Eigen::VectorXd target);
73  Eigen::VectorXd map_joints(const Eigen::VectorXd& delta);
74 
75  private:
76  // Hand Services
77  ros::ServiceClient initialize_srvs;
78  ros::ServiceClient close_grasp_srvs;
79  ros::ServiceClient open_grasp_srvs;
80  ros::ServiceClient open_spread_srvs;
81  ros::ServiceClient close_spread_srvs;
82  ros::ServiceClient grasp_pos_srvs;
83  ros::ServiceClient spread_pos_srvs;
84  ros::ServiceClient pinch_pos_srvs;
85  ros::ServiceClient finger_pos_srvs;
86 
87  // Arm Services
88  ros::ServiceClient play_srvs;
89  ros::ServiceClient joint_move_srvs;
90  ros::ServiceClient hold_jnt_srvs;
91  ros::Publisher jnt_rt_pub;
92 
93  ros::Subscriber pose_sub;
94  ros::Subscriber jnt_sub;
95 
96  geometry_msgs::PoseStamped last_pose;
97  sensor_msgs::JointState last_jnt_state;
98 
99  std::vector<int> mapping{0,1,3};
100 
101  template <size_t DOF>
102  Eigen::VectorXd _get_jnt_state();
103 
104  template <size_t DOF>
105  Eigen::VectorXd _map_joints(const Eigen::VectorXd& delta);
106 
107  void pose_cb(geometry_msgs::PoseStampedConstPtr pose) {
108  last_pose = *pose;
109  }
110 
111  void jnt_state_cb(sensor_msgs::JointStateConstPtr state) {
112  last_jnt_state = *state;
113  }
114 
115 };
116 
117 #endif // WAM_CONTROLLER_H
bool joint_move(const Eigen::VectorXd &target_jnt_state)
Definition: wam_controller.cpp:117
bool initialize()
Definition: wam_controller.cpp:31
bool open_grasp()
Definition: wam_controller.cpp:41
bool close_grasp()
Definition: wam_controller.cpp:36
geometry_msgs::PoseStamped get_pose()
Definition: wam_controller.h:54
Definition: robot_controller.h:6
bool spread_pos(double radians)
Definition: wam_controller.cpp:62
bool reset()
Definition: wam_controller.cpp:82
bool open_spread()
Definition: wam_controller.cpp:46
Eigen::VectorXd get_used_jnt_state()
Definition: wam_controller.cpp:205
bool set_2_finger_grasp()
Definition: wam_controller.cpp:88
bool finger_pos(double f1, double f2, double f3)
Definition: wam_controller.cpp:74
Eigen::VectorXd get_jnt_state()
Definition: wam_controller.cpp:179
bool rt_delta_move(const Eigen::VectorXd &delta)
Definition: wam_controller.cpp:135
void set_used_joints(std::string)
Definition: wam_controller.cpp:244
bool hold_joints(bool hold_joints)
Definition: wam_controller.cpp:111
bool move_to_initial_position()
Definition: wam_controller.cpp:165
bool delta_move(const Eigen::VectorXd &delta)
Definition: wam_controller.cpp:126
WamController(std::string robot_ns, ros::NodeHandle nh)
Definition: wam_controller.cpp:6
void set_target_joint_pose(Eigen::VectorXd target)
Definition: wam_controller.cpp:260
bool grasp_pos(double radians)
Definition: wam_controller.cpp:56
Eigen::VectorXd map_joints(const Eigen::VectorXd &delta)
Definition: wam_controller.cpp:214
bool play_motion(std::string motion)
Definition: wam_controller.cpp:105
bool set_3_finger_grasp()
Definition: wam_controller.cpp:97
size_t get_dof()
Definition: wam_controller.h:61
std::vector< int > get_used_joints()
Definition: wam_controller.h:65
Definition: wam_controller.h:27
bool close_spread()
Definition: wam_controller.cpp:51
bool pinch_pos(double radians)
Definition: wam_controller.cpp:68
double max_rate
Definition: wam_controller.h:29