cb_base_navigation
global_planner/visualization.cpp
Go to the documentation of this file.
2 
3 #include <ros/node_handle.h>
4 
5 #include <tf2/utils.h>
6 
7 #include <visualization_msgs/Marker.h>
8 #include <visualization_msgs/MarkerArray.h>
9 
10 namespace cb_global_planner {
11 
13 {
14  ros::NodeHandle nh("~/visualization");
15  goal_positions_marker_pub_ = nh.advertise<visualization_msgs::Marker>("markers/goal_positions", 1);
16  global_plan_marker_pub_ = nh.advertise<visualization_msgs::Marker>("markers/global_plan", 1);
17  global_plan_marker_array_pub_ = nh.advertise<visualization_msgs::MarkerArray>("marker_arrays/global_plan", 1);
18 }
19 
21 {
22  // General properties
23  visualization_msgs::Marker line_strip;
24  line_strip.scale.x = 0.05;
25  line_strip.header.frame_id = frame;
26  line_strip.header.stamp = ros::Time::now();
27  line_strip.color.a = 1;
28  line_strip.color.r = 0;
29  line_strip.color.g = 1;
30  line_strip.color.b = 1;
31  line_strip.id = 0;
32  line_strip.type = visualization_msgs::Marker::LINE_STRIP;
33  line_strip.action = visualization_msgs::Marker::ADD;
34 
35  tf2::toMsg(tf2::Transform::getIdentity(), line_strip.pose);
36 
37  // Push back all pnts
38  for (std::vector<geometry_msgs::PoseStamped>::const_iterator it = plan.begin(); it != plan.end(); ++it)
39  line_strip.points.push_back(it->pose.position);
40 
41  // Publish plan
42  global_plan_marker_pub_.publish(line_strip);
43 }
44 
46 {
47  visualization_msgs::MarkerArray array;
48 
49  visualization_msgs::Marker m;
50 
51  m.scale.x = 0.04;
52  m.scale.y = 0.02;
53  m.scale.z = 0.02;
54 
55  m.header.frame_id = frame;
56  m.header.stamp = ros::Time::now();
57  m.color.a = 1;
58  m.color.r = 1;
59  m.color.g = 0;
60  m.color.b = 1;
61  m.id = 0;
62  m.type = visualization_msgs::Marker::ARROW;
63 
64  tf2::toMsg(tf2::Transform::getIdentity(), m.pose);
65 
66  // Clear the markers
67  static unsigned int prev = 0;
68  m.action = visualization_msgs::Marker::DELETE;
69  for (unsigned int i = 0; i < prev; ++i)
70  {
71  m.id++;
72  array.markers.push_back(m);
73  }
74  global_plan_marker_array_pub_.publish(array);
75 
76  m.action = visualization_msgs::Marker::ADD;
77  array.markers.clear();
78  m.id = 0;
79 
80  // Push back all pnts
81  for (std::vector<geometry_msgs::PoseStamped>::const_iterator it = plan.begin(); it != plan.end(); ++it)
82  {
83  m.pose = it->pose;
84  m.id++;
85  array.markers.push_back(m);
86  }
87 
88  prev = m.id;
89 
90  // Publish plan
91  global_plan_marker_array_pub_.publish(array);
92 }
93 
95 {
96  // General properties
97  visualization_msgs::Marker cube_list;
98  cube_list.scale.x = 0.05;
99  cube_list.scale.y = 0.05;
100  cube_list.scale.z = 0.05;
101  cube_list.header.frame_id = frame;
102  cube_list.header.stamp = ros::Time::now();
103  cube_list.color.a = 1;
104  cube_list.color.r = 1;
105  cube_list.color.g = 0;
106  cube_list.color.b = 1;
107  cube_list.id = 0;
108  cube_list.type = visualization_msgs::Marker::CUBE_LIST;
109  cube_list.action = visualization_msgs::Marker::ADD;
110 
111  tf2::toMsg(tf2::Transform::getIdentity(), cube_list.pose);
112 
113  // Push back all pnts
114  for (std::vector<tf2::Vector3>::const_iterator it = positions.begin(); it != positions.end(); ++it)
115  {
116  geometry_msgs::Point p;
117  p.x = it->x();
118  p.y = it->y();
119  cube_list.points.push_back(p);
120  }
121 
122  // Publish plan
123  goal_positions_marker_pub_.publish(cube_list);
124 }
125 
126 }
std::string
cb_global_planner::Visualization::publishGlobalPlanMarkerArray
void publishGlobalPlanMarkerArray(const std::vector< geometry_msgs::PoseStamped > &plan, const std::string &frame="map")
Publishes a specified plan with poses.
Definition: global_planner/visualization.cpp:45
std::vector< geometry_msgs::PoseStamped >
cb_global_planner::Visualization::publishGlobalPlanMarker
void publishGlobalPlanMarker(const std::vector< geometry_msgs::PoseStamped > &plan, const std::string &frame="map")
Publishes a specified plan.
Definition: global_planner/visualization.cpp:20
cb_global_planner::Visualization::global_plan_marker_array_pub_
ros::Publisher global_plan_marker_array_pub_
Definition: global_planner/visualization.h:63
cb_global_planner::Visualization::goal_positions_marker_pub_
ros::Publisher goal_positions_marker_pub_
Definition: global_planner/visualization.h:63
cb_global_planner::Visualization::Visualization
Visualization()
Constructor for the Visualization object (inits the publishers)
Definition: global_planner/visualization.cpp:12
visualization.h
cb_global_planner::Visualization::global_plan_marker_pub_
ros::Publisher global_plan_marker_pub_
Definition: global_planner/visualization.h:63
std::vector::begin
T begin(T... args)
cb_global_planner
Definition: a_star_planner.cpp:5
std::vector::end
T end(T... args)
cb_global_planner::Visualization::publishGoalPositionsMarker
void publishGoalPositionsMarker(const std::vector< tf2::Vector3 > &positions, const std::string &frame="map")
Publishes the goal area.
Definition: global_planner/visualization.cpp:94