turtle_frame.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2009, Willow Garage, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Willow Garage, Inc. nor the names of its
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #include <QFrame>
31 #include <QImage>
32 #include <QPainter>
33 #include <QPaintEvent>
34 #include <QTimer>
35 #include <QVector>
36 
37 // This prevents a MOC error with versions of boost >= 1.48
38 #ifndef Q_MOC_RUN // See: https://bugreports.qt-project.org/browse/QTBUG-22829
39 # include <ros/ros.h>
40 
41 # include <std_srvs/Empty.h>
42 # include <turtlesim/Spawn.h>
43 # include <turtlesim/Kill.h>
44 # include <map>
45 
46 # include "turtle.h"
47 #endif
48 
49 namespace turtlesim
50 {
51 
52 class TurtleFrame : public QFrame
53 {
54  Q_OBJECT
55 public:
56  TurtleFrame(QWidget* parent = 0, Qt::WindowFlags f = 0);
57  ~TurtleFrame();
58 
59  std::string spawnTurtle(const std::string& name, float x, float y, float angle);
60  std::string spawnTurtle(const std::string& name, float x, float y, float angle, size_t index);
61 
62 protected:
63  void paintEvent(QPaintEvent* event);
64 
65 private slots:
66  void onUpdate();
67 
68 private:
69  void updateTurtles();
70  void clear();
71  bool hasTurtle(const std::string& name);
72 
73  bool clearCallback(std_srvs::Empty::Request&, std_srvs::Empty::Response&);
74  bool resetCallback(std_srvs::Empty::Request&, std_srvs::Empty::Response&);
75  bool spawnCallback(turtlesim::Spawn::Request&, turtlesim::Spawn::Response&);
76  bool killCallback(turtlesim::Kill::Request&, turtlesim::Kill::Response&);
77 
79  QTimer* update_timer_;
80  QImage path_image_;
81  QPainter path_painter_;
82 
83  uint64_t frame_count_;
84 
86 
91 
92  typedef std::map<std::string, TurtlePtr> M_Turtle;
93  M_Turtle turtles_;
94  uint32_t id_counter_;
95 
96  QVector<QImage> turtle_images_;
97 
98  float meter_;
101 };
102 
103 }
bool hasTurtle(const std::string &name)
f
bool spawnCallback(turtlesim::Spawn::Request &, turtlesim::Spawn::Response &)
ros::ServiceServer kill_srv_
Definition: turtle_frame.h:90
bool clearCallback(std_srvs::Empty::Request &, std_srvs::Empty::Response &)
void paintEvent(QPaintEvent *event)
ros::ServiceServer clear_srv_
Definition: turtle_frame.h:87
ros::NodeHandle nh_
Definition: turtle_frame.h:78
TurtleFrame(QWidget *parent=0, Qt::WindowFlags f=0)
bool killCallback(turtlesim::Kill::Request &, turtlesim::Kill::Response &)
bool resetCallback(std_srvs::Empty::Request &, std_srvs::Empty::Response &)
ros::ServiceServer spawn_srv_
Definition: turtle_frame.h:89
ros::ServiceServer reset_srv_
Definition: turtle_frame.h:88
std::string spawnTurtle(const std::string &name, float x, float y, float angle)
ros::WallTime last_turtle_update_
Definition: turtle_frame.h:85
QVector< QImage > turtle_images_
Definition: turtle_frame.h:96
std::map< std::string, TurtlePtr > M_Turtle
Definition: turtle_frame.h:92


turtlesim
Author(s): Josh Faust, Dirk Thomas
autogenerated on Sun Oct 18 2020 13:09:45