dummy_evidence_publisher.cpp
Go to the documentation of this file.
1 /*
2  * dummy_evidence_publisher.cpp
3  *
4  * Created on: Mar 2, 2012
5  * Author: sdries
6  */
7 
8 /*
9  * msg_converter.cpp
10  *
11  * Created on: Dec 14, 2011
12  * Author: Jos Elfring, Sjoerd van den Dries
13  */
14 
15 #include <ros/ros.h>
16 
17 #include "wire_msgs/WorldEvidence.h"
18 #include "wire_msgs/ObjectEvidence.h"
19 
20 #include "problib/pdfs/PDF.h"
21 
22 #include "problib/conversions.h"
23 
24 #include <map>
25 
26 using namespace std;
27 
29 
31 
32 double x_person = 0;
33 double x_vel_person = 0.5;
34 
35 void addEvidence(wire_msgs::WorldEvidence& world_evidence, double x, double y, double z, const string& class_label) {
36  wire_msgs::ObjectEvidence obj_evidence;
37 
38  obj_evidence.certainty = 1.0;
39 
40  // setting position property
41  wire_msgs::Property posProp;
42  posProp.attribute = "position";
43  pbl::PDFtoMsg(pbl::Gaussian(pbl::Vector3(x, y, z), pbl::Matrix3(0.001, 0.001, 0.001)), posProp.pdf);
44  obj_evidence.properties.push_back(posProp);
45 
46  // setting class label property
47  wire_msgs::Property classProp;
48  classProp.attribute = "class_label";
49  pbl::PMF classPMF;
50  classPMF.setProbability(class_label, 0.2);
51  pbl::PDFtoMsg(classPMF, classProp.pdf);
52  obj_evidence.properties.push_back(classProp);
53 
54  // Add to array
55  world_evidence.object_evidence.push_back(obj_evidence);
56 }
57 
58 
60  ros::Time time_now = ros::Time::now();
61  double dt = (time_now - time_last_cycle_).toSec();
62 
63  x_person += dt * x_vel_person;
64 
65  wire_msgs::WorldEvidence world_evidence;
66  world_evidence.header.stamp = ros::Time::now();
67  world_evidence.header.frame_id = "/map";
68 
69  addEvidence(world_evidence, 5, 4, 3, "body");
70  addEvidence(world_evidence, 5, 4, 4, "face");
71  addEvidence(world_evidence, 1, 2, 3, "cup");
72  addEvidence(world_evidence, 3, 2.5, 1, "cup");
73  addEvidence(world_evidence, 2, 2, 3, "test_class");
74  //addEvidence(world_evidence, x_person, 2, 1+x_person, "cup", "");
75 
76  // Publish results
77  EVIDENCE_PUB.publish(world_evidence);
78 
79  time_last_cycle_ = time_now;
80 
81  ROS_INFO("Published evidence with size %zu", world_evidence.object_evidence.size());
82 }
83 
87 int main(int argc, char **argv) {
88 
89  // Initialize ros and create node handle
90  ros::init(argc,argv,"dummy_evidence_publisher");
91  ros::NodeHandle nh;
92 
93  // Subscriber/publisher
94  EVIDENCE_PUB = nh.advertise<wire_msgs::WorldEvidence>("/world_evidence", 100);
95 
96  ros::Rate r(20);
97 
98  time_last_cycle_ = ros::Time::now();
99  while (ros::ok()) {
101  r.sleep();
102  }
103 
104  return 0;
105 }
ros::Publisher EVIDENCE_PUB
void publish(const boost::shared_ptr< M > &message) const
void addEvidence(wire_msgs::WorldEvidence &world_evidence, double x, double y, double z, const string &class_label)
ros::Time time_last_cycle_
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
void generateEvidence()
int main(int argc, char **argv)
#define ROS_INFO(...)
ROSCPP_DECL bool ok()
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
void setProbability(const std::string &value, double p)
static Time now()
double x_person
double x_vel_person
void PDFtoMsg(const PDF &pdf, problib::PDF &msg)


wire_core
Author(s): Sjoerd van den Dries, Jos Elfring
autogenerated on Fri Apr 16 2021 02:32:27