4 #include <franka_example_controllers/teleop_gripper_paramConfig.h> 5 #include <franka_gripper/GraspAction.h> 6 #include <franka_gripper/HomingAction.h> 7 #include <franka_gripper/MoveAction.h> 8 #include <franka_gripper/StopAction.h> 11 #include <dynamic_reconfigure/server.h> 14 #include <sensor_msgs/JointState.h> 20 using franka_gripper::GraspAction;
21 using franka_gripper::HomingAction;
22 using franka_gripper::MoveAction;
23 using franka_gripper::StopAction;
44 bool init(
const std::shared_ptr<ros::NodeHandle>& pnh) {
49 "teleop_gripper_node: Could not read parameter gripper_homed. " 58 dynamic_reconfigure::Server<franka_example_controllers::teleop_gripper_paramConfig>>(
63 bool homing_success(
false);
65 ROS_INFO(
"teleop_gripper_node: Homing Gripper.");
74 leader_sub_ = pnh->subscribe(
"leader/joint_states", 1,
78 "teleop_gripper_node: Action Server could not be started. Shutting " 113 dynamic_reconfigure::Server<franka_example_controllers::teleop_gripper_paramConfig>>
117 const franka_example_controllers::teleop_gripper_paramConfig& config,
119 if (dynamic_reconfigure_mutex_.try_lock()) {
120 grasp_force_ = config.grasp_force;
121 move_speed_ = config.move_speed;
122 ROS_INFO_STREAM(
"Dynamic Reconfigure: Gripper params set: grasp_force = " 123 << grasp_force_ <<
" N ; move_speed = " << move_speed_ <<
" m/s");
125 dynamic_reconfigure_mutex_.unlock();
131 leader_homing_client_.
sendGoal(franka_gripper::HomingGoal());
132 follower_homing_client_.
sendGoal(franka_gripper::HomingGoal());
139 ROS_ERROR(
"teleop_gripper_node: HomingAction has timed out.");
144 std::lock_guard<std::mutex> _(subscriber_mutex_);
145 if (!gripper_homed_) {
148 gripper_homed_ =
true;
150 double gripper_width = 2 * msg.position[0];
153 franka_gripper::GraspGoal grasp_goal;
163 ROS_INFO(
"teleop_gripper_node: GraspAction was not successful.");
164 stop_client_.
sendGoal(franka_gripper::StopGoal());
168 franka_gripper::MoveGoal move_goal;
175 ROS_ERROR(
"teleop_gripper_node: MoveAction was not successful.");
176 stop_client_.
sendGoal(franka_gripper::StopGoal());
182 int main(
int argc,
char** argv) {
183 ros::init(argc, argv,
"teleop_gripper_node");
184 auto pnh = std::make_shared<ros::NodeHandle>(
"~");
186 if (teleop_gripper_client.init(pnh)) {
std::mutex subscriber_mutex_
void teleopGripperParamCallback(const franka_example_controllers::teleop_gripper_paramConfig &config, uint32_t)
HomingClient leader_homing_client_
std::unique_ptr< dynamic_reconfigure::Server< franka_example_controllers::teleop_gripper_paramConfig > > dynamic_server_teleop_gripper_param_
bool waitForResult(const ros::Duration &timeout=ros::Duration(0, 0))
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
bool init(const std::shared_ptr< ros::NodeHandle > &pnh)
int main(int argc, char **argv)
HomingClient follower_homing_client_
bool waitForServer(const ros::Duration &timeout=ros::Duration(0, 0)) const
double grasp_epsilon_inner_
ros::Subscriber leader_sub_
double grasp_epsilon_outer_scaling_
Client class for teleoperating a follower gripper from a leader gripper.
GraspClient grasp_client_
double start_pos_grasping_
void sendGoal(const Goal &goal, SimpleDoneCallback done_cb=SimpleDoneCallback(), SimpleActiveCallback active_cb=SimpleActiveCallback(), SimpleFeedbackCallback feedback_cb=SimpleFeedbackCallback())
#define ROS_INFO_STREAM(args)
double start_pos_opening_
void subscriberCallback(const sensor_msgs::JointState &msg)
ros::NodeHandle dynamic_reconfigure_teleop_gripper_param_node_
std::mutex dynamic_reconfigure_mutex_