Go to the documentation of this file.00001
00002
00003
00004
00005 #include <ros/ros.h>
00006
00007 #include <actionlib/client/simple_action_client.h>
00008 #include <control_msgs/GripperCommandAction.h>
00009
00010 #include <moveit/move_group_interface/move_group.h>
00011 #include <moveit/planning_scene_interface/planning_scene_interface.h>
00012 #include <moveit_msgs/DisplayRobotState.h>
00013 #include <moveit_msgs/DisplayTrajectory.h>
00014
00015
00016 typedef actionlib::SimpleActionClient<control_msgs::GripperCommandAction> GripperClient;
00017
00018 bool gripper_cmd(GripperClient* gripperClient,double gap,double effort) {
00019
00020 control_msgs::GripperCommandGoal openGoal;
00021
00022 openGoal.command.position = gap;
00023 openGoal.command.max_effort = effort;
00024 gripperClient->sendGoal(openGoal);
00025 ROS_INFO("Sent gripper goal");
00026 gripperClient->waitForResult();
00027
00028 if(gripperClient->getState() == actionlib::SimpleClientGoalState::SUCCEEDED) {
00029 ROS_INFO("Gripper done");
00030 return true;
00031 }
00032 else {
00033 ROS_ERROR("Gripper fault");
00034
00035 }
00036 return false;
00037 }
00038
00039 int main(int argc, char **argv) {
00040 ros::init(argc, argv, "gripper_api");
00041
00042 ros::AsyncSpinner spinner(1);
00043 spinner.start();
00044 ros::NodeHandle nodeHandle;
00045
00046
00047 GripperClient gripperClient("/gripper_controller/gripper_cmd", true);
00048
00049 while (!gripperClient.waitForServer(ros::Duration(5.0))){
00050 ROS_INFO("Waiting for the /gripper_controller/gripper_cmd action server to come up");
00051 }
00052
00053 gripper_cmd(&gripperClient,0.14,0);
00054 sleep(5);
00055 gripper_cmd(&gripperClient,0.01,0.2);
00056
00057 }