src
grasp_planner_node.cpp
Go to the documentation of this file.
1
/*
2
* Copyright 2015, Fetch Robotics Inc.
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
*
8
* * Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* * Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* * Neither the name of the Fetch Robotics, Inc. nor the names of its
14
* contributors may be used to endorse or promote products derived from
15
* this software without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
* POSSIBILITY OF SUCH DAMAGE.
28
*/
29
30
// Author: Michael Ferguson
31
32
#include <
ros/ros.h
>
33
#include <
actionlib/server/simple_action_server.h
>
34
#include <
simple_grasping/shape_grasp_planner.h
>
35
#include <grasping_msgs/GraspPlanningAction.h>
36
37
class
GraspPlannerNode
38
{
39
typedef
actionlib::SimpleActionServer<grasping_msgs::GraspPlanningAction>
server_t
;
40
41
public
:
42
GraspPlannerNode
(
ros::NodeHandle
n)
43
{
44
// Planner
45
planner_
.reset(
new
simple_grasping::ShapeGraspPlanner
(n));
46
47
// Action for grasp planning
48
server_
.reset(
new
server_t
(n,
"plan"
,
49
boost::bind(&
GraspPlannerNode::executeCallback
,
this
, _1),
50
false
));
51
server_
->start();
52
}
53
54
private
:
55
void
executeCallback
(
const
grasping_msgs::GraspPlanningGoalConstPtr&
goal
)
56
{
57
grasping_msgs::GraspPlanningResult result;
58
planner_
->plan(
goal
->object, result.grasps);
59
server_
->setSucceeded(result);
60
}
61
62
boost::shared_ptr<simple_grasping::ShapeGraspPlanner>
planner_
;
63
boost::shared_ptr<server_t>
server_
;
64
};
65
66
int
main
(
int
argc,
char
* argv[])
67
{
68
ros::init
(argc, argv,
"grasp_planner"
);
69
ros::NodeHandle
nh(
"~"
);
70
GraspPlannerNode
planning(nh);
71
ros::spin
();
72
return
0;
73
}
GraspPlannerNode::executeCallback
void executeCallback(const grasping_msgs::GraspPlanningGoalConstPtr &goal)
Definition:
grasp_planner_node.cpp:55
simple_grasping::ShapeGraspPlanner
A simple grasp planner that uses the bounding box shape to generate viable grasps.
Definition:
shape_grasp_planner.h:46
GraspPlannerNode::server_
boost::shared_ptr< server_t > server_
Definition:
grasp_planner_node.cpp:63
boost::shared_ptr< simple_grasping::ShapeGraspPlanner >
shape_grasp_planner.h
ros::init
ROSCPP_DECL void init(const M_string &remappings, const std::string &name, uint32_t options=0)
ros.h
simple_action_server.h
GraspPlannerNode::GraspPlannerNode
GraspPlannerNode(ros::NodeHandle n)
Definition:
grasp_planner_node.cpp:42
GraspPlannerNode::planner_
boost::shared_ptr< simple_grasping::ShapeGraspPlanner > planner_
Definition:
grasp_planner_node.cpp:62
GraspPlannerNode::server_t
actionlib::SimpleActionServer< grasping_msgs::GraspPlanningAction > server_t
Definition:
grasp_planner_node.cpp:39
pick_and_place.goal
goal
Definition:
pick_and_place.py:86
actionlib::SimpleActionServer
ros::spin
ROSCPP_DECL void spin()
GraspPlannerNode
Definition:
grasp_planner_node.cpp:37
main
int main(int argc, char *argv[])
Definition:
grasp_planner_node.cpp:66
ros::NodeHandle
simple_grasping
Author(s): Michael Ferguson
autogenerated on Wed Apr 26 2023 02:18:53