world_model_visualizer_rviz.cpp
Go to the documentation of this file.
1 
19 
20 namespace world_model
21 {
22 
24 {
25  for (visualization_msgs::Marker &marker: marker_array_.markers) {
26  marker.action = visualization_msgs::Marker::DELETE;
27  }
29  marker_array_.markers.clear();
30  marker_id_ = 0;
31 }
32 
33 void WorldModelVisualizerRVIZ::addFoundObjectVisualization(const asr_msgs::AsrObject &pbd_object, const bool &visualizeSampledPoses)
34 {
35  visualization_msgs::Marker marker;
36  marker.header = pbd_object.header;
37 
38  if (pbd_object.type == "CompactObject")
39  {
40  marker.type = visualization_msgs::Marker::SPHERE;
41  marker.scale.x = marker.scale.y = marker.scale.z = 0.01;
42  }
43  else
44  {
45  marker.type = visualization_msgs::Marker::MESH_RESOURCE;
46  if (pbd_object.colorName == "textured")
47  marker.mesh_use_embedded_materials = true;
48  typedef boost::filesystem::path fs_path;
49  fs_path mesh_resource = fs_path(pbd_object.meshResourcePath).replace_extension(".dae");
50  marker.mesh_resource = mesh_resource.string();
51  marker.scale.x = marker.scale.y = marker.scale.z = 0.001;
52  }
53  marker.color = pbd_object.color;
54  marker.action = visualization_msgs::Marker::ADD;
55 
56  // Add first the marker of the detected pose
57  marker.ns = pbd_object.providedBy + "_detected";
58 
59  if(!pbd_object.sampledPoses.size()){
60  std::cerr << "Got a AsrObject without poses." << std::endl;
61  std::exit(1);
62  }
63 
64  marker.pose = pbd_object.sampledPoses.front().pose;
65  addMarker(marker);
66 
67  // Add now the other poses
68  marker.ns = pbd_object.providedBy + "_sampled";
69  if (visualizeSampledPoses) {
70  bool isNotFirst = false;
71  for (const geometry_msgs::PoseWithCovariance &current_pose : pbd_object.sampledPoses)
72  {
73  if (isNotFirst)
74  {
75  marker.pose = current_pose.pose;
76  addMarker(marker);
77  }
78  else
79  {
80  isNotFirst = true;
81  }
82  }
83  }
84 
85  //Visualize Orientation-Axis(X-Axis)
86  visualization_msgs::Marker axisMarker;
87  axisMarker.header = pbd_object.header;
88 
89  axisMarker.type = visualization_msgs::Marker::ARROW;
90  axisMarker.scale.y = axisMarker.scale.z = 0.01;
91  axisMarker.scale.x = 0.1;
92  Eigen::Quaterniond orientation;
93  tf::quaternionMsgToEigen(pbd_object.sampledPoses.front().pose.orientation, orientation);
94  Eigen::Quaterniond transformed_X_Axis = Eigen::AngleAxisd(0.0, Eigen::Vector3d::UnitX()) * orientation;
95  tf::quaternionEigenToMsg(transformed_X_Axis, axisMarker.pose.orientation);
96  axisMarker.pose.position = pbd_object.sampledPoses.front().pose.position;
97  axisMarker.color.a = 1.0;
98  axisMarker.color.r = 0.0;
99  axisMarker.color.g = 0.0;
100  axisMarker.color.b = 1.0;
101  axisMarker.action = visualization_msgs::Marker::ADD;
102  axisMarker.ns = "ObjectOrientation_XAxis";
103  addMarker(axisMarker);
104 }
105 
106 }
void publish(const boost::shared_ptr< M > &message) const
void addMarker(visualization_msgs::Marker &marker)
void addFoundObjectVisualization(const asr_msgs::AsrObject &pbd_object, const bool &visualizeSampledPoses)


asr_world_model
Author(s): Aumann Florian, Borella Jocelyn, Hutmacher Robin, Karrenbauer Oliver, Meißner Pascal, Schleicher Ralf, Stöckle Patrick, Trautmann Jeremias
autogenerated on Thu Jan 9 2020 07:20:01