ed
probe.cpp
Go to the documentation of this file.
2 
3 #include <ros/node_handle.h>
4 #include <ros/advertise_service_options.h>
5 
7 
8 namespace ed
9 {
10 
11 // ----------------------------------------------------------------------------------------------------
12 
14 {
15 }
16 
17 // ----------------------------------------------------------------------------------------------------
18 
20 {
21 }
22 
23 // ----------------------------------------------------------------------------------------------------
24 
26 {
27  ros::NodeHandle nh;
28 
29  ros::AdvertiseServiceOptions opt_srv =
30  ros::AdvertiseServiceOptions::create<tue_serialization::BinaryService>(
31  "ed/probe/" + name(), boost::bind(&Probe::srvCallback, this, _1, _2),
32  ros::VoidPtr(), &cb_queue_);
33 
34  srv_ = nh.advertiseService(opt_srv);
35 
36  std::cout << "Probe '" << name() << "' initialized." << std::endl;
37 }
38 
39 // ----------------------------------------------------------------------------------------------------
40 
41 void Probe::process(const WorldModel& world, UpdateRequest& req)
42 {
43  world_ = &world;
44  update_req_ = &req;
45 
46  cb_queue_.callAvailable();
47 }
48 
49 // ----------------------------------------------------------------------------------------------------
50 
51 bool Probe::srvCallback(const tue_serialization::BinaryService::Request& ros_req,
52  tue_serialization::BinaryService::Response& ros_res)
53 {
54  std::stringstream ss_req;
55  tue::serialization::convert(ros_req.bin.data, ss_req);
57 
58  std::stringstream ss_res;
60 
61  this->process(*world_, *update_req_, req, res);
62 
63  tue::serialization::convert(ss_res, ros_res.bin.data);
64 
65  return true;
66 }
67 
68 }
ed::WorldModel
Definition: world_model.h:21
ed::UpdateRequest
Definition: update_request.h:24
ed::Probe::srvCallback
bool srvCallback(const tue_serialization::BinaryService::Request &ros_req, tue_serialization::BinaryService::Response &ros_res)
Definition: probe.cpp:51
std::stringstream
ed::Probe::Probe
Probe()
Definition: probe.cpp:13
tue::serialization::OutputArchive
ed::Probe::update_req_
ed::UpdateRequest * update_req_
Definition: probe.h:49
std::cout
tue::serialization::convert
void convert(Archive &a, std::vector< unsigned char > &data)
ed::Probe::cb_queue_
ros::CallbackQueue cb_queue_
Definition: probe.h:51
ed::Probe::initialize
void initialize()
Definition: probe.cpp:25
tue::serialization::InputArchive
ed::Probe::world_
const ed::WorldModel * world_
Definition: probe.h:48
std::endl
T endl(T... args)
ed::Probe::process
void process(const WorldModel &world, UpdateRequest &req)
Definition: probe.cpp:41
ed
Definition: convex_hull.h:8
conversions.h
ed::Plugin::name
const std::string & name() const
Definition: plugin.h:46
ed::Probe::srv_
ros::ServiceServer srv_
Definition: probe.h:53
probe.h
ed::Probe::~Probe
virtual ~Probe()
Definition: probe.cpp:19