Flatland
debug_visualization.h
1 /*
2  * ______ __ __ __
3  * /\ _ \ __ /\ \/\ \ /\ \__
4  * \ \ \L\ \ __ __ /\_\ \_\ \ \ \____ ___\ \ ,_\ ____
5  * \ \ __ \/\ \/\ \\/\ \ /'_` \ \ '__`\ / __`\ \ \/ /',__\
6  * \ \ \/\ \ \ \_/ |\ \ \/\ \L\ \ \ \L\ \/\ \L\ \ \ \_/\__, `\
7  * \ \_\ \_\ \___/ \ \_\ \___,_\ \_,__/\ \____/\ \__\/\____/
8  * \/_/\/_/\/__/ \/_/\/__,_ /\/___/ \/___/ \/__/\/___/
9  * @copyright Copyright 2017 Avidbots Corp.
10  * @name debug_visualization.h
11  * @brief Transform box2d types into published visualization messages
12  * @author Joseph Duchesne
13  *
14  * Software License Agreement (BSD License)
15  *
16  * Copyright (c) 2017, Avidbots Corp.
17  * All rights reserved.
18  *
19  * Redistribution and use in source and binary forms, with or without
20  * modification, are permitted provided that the following conditions
21  * are met:
22  *
23  * * Redistributions of source code must retain the above copyright
24  * notice, this list of conditions and the following disclaimer.
25  * * Redistributions in binary form must reproduce the above
26  * copyright notice, this list of conditions and the following
27  * disclaimer in the documentation and/or other materials provided
28  * with the distribution.
29  * * Neither the name of the Avidbots Corp. nor the names of its
30  * contributors may be used to endorse or promote products derived
31  * from this software without specific prior written permission.
32  *
33  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
34  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
35  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
36  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
37  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
38  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
39  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
40  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
41  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
42  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
43  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
44  * POSSIBILITY OF SUCH DAMAGE.
45  */
46 
47 #ifndef FLATLAND_SERVER_DEBUG_VISUALIZATION_H
48 #define FLATLAND_SERVER_DEBUG_VISUALIZATION_H
49 
50 #include <Box2D/Box2D.h>
51 #include <flatland_msgs/DebugTopicList.h>
52 #include <ros/ros.h>
53 #include <visualization_msgs/MarkerArray.h>
54 #include <map>
55 #include <string>
56 #include <vector>
57 
58 #include "flatland_server/body.h"
59 
60 namespace flatland_server {
61 struct DebugTopic {
62  ros::Publisher publisher;
63  bool needs_publishing;
64  visualization_msgs::MarkerArray markers;
65 };
66 
68  private:
70 
71  public:
72  std::map<std::string, DebugTopic> topics_;
73  ros::NodeHandle node_;
74  ros::Publisher topic_list_publisher_;
75 
79  static DebugVisualization& Get();
80 
84  void Publish();
85 
95  void Visualize(std::string name, b2Body* body, float r, float g, float b,
96  float a);
97 
107  void Visualize(std::string name, b2Joint* joint, float r, float g, float b,
108  float a);
109 
119  void VisualizeLayer(std::string name, Body* body);
120 
125  void Reset(std::string name);
126 
136  void BodyToMarkers(visualization_msgs::MarkerArray& markers, b2Body* body,
137  float r, float g, float b, float a);
138 
148  void JointToMarkers(visualization_msgs::MarkerArray& markers, b2Joint* joint,
149  float r, float g, float b, float a);
150 
155  void AddTopicIfNotExist(const std::string& name);
156 
160  void PublishTopicList();
161 };
162 }; // namespace flatland_server
163 #endif // FLATLAND_SERVER_DEBUG_VISUALIZATION_H
Definition: debug_visualization.h:61
Definition: body.h:55
Definition: debug_visualization.h:67
Definition: body.h:61