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 
80  QTimer* update_timer_;
81  QImage path_image_;
82  QPainter path_painter_;
83 
84  uint64_t frame_count_;
85 
87 
92 
93  typedef std::map<std::string, TurtlePtr> M_Turtle;
95  uint32_t id_counter_;
96 
97  QVector<QImage> turtle_images_;
98 
99  float meter_;
102 };
103 
104 }
turtlesim::TurtleFrame::TurtleFrame
TurtleFrame(QWidget *parent=0, Qt::WindowFlags f=0)
Definition: turtle_frame.cpp:45
turtlesim
Definition: turtle.h:53
turtlesim::TurtleFrame::~TurtleFrame
~TurtleFrame()
Definition: turtle_frame.cpp:129
ros.h
turtlesim::TurtleFrame::killCallback
bool killCallback(turtlesim::Kill::Request &, turtlesim::Kill::Response &)
Definition: turtle_frame.cpp:148
turtlesim::TurtleFrame::id_counter_
uint32_t id_counter_
Definition: turtle_frame.h:95
turtlesim::TurtleFrame::update_timer_
QTimer * update_timer_
Definition: turtle_frame.h:80
turtlesim::TurtleFrame::reset_srv_
ros::ServiceServer reset_srv_
Definition: turtle_frame.h:89
turtlesim::TurtleFrame::spawnTurtle
std::string spawnTurtle(const std::string &name, float x, float y, float angle)
Definition: turtle_frame.cpp:168
turtlesim::TurtleFrame::spawnCallback
bool spawnCallback(turtlesim::Spawn::Request &, turtlesim::Spawn::Response &)
Definition: turtle_frame.cpp:134
turtlesim::TurtleFrame::path_image_
QImage path_image_
Definition: turtle_frame.h:81
f
f
turtlesim::TurtleFrame::last_turtle_update_
ros::WallTime last_turtle_update_
Definition: turtle_frame.h:86
turtlesim::TurtleFrame::spawn_srv_
ros::ServiceServer spawn_srv_
Definition: turtle_frame.h:90
ros::ServiceServer
turtlesim::TurtleFrame::clearCallback
bool clearCallback(std_srvs::Empty::Request &, std_srvs::Empty::Response &)
Definition: turtle_frame.cpp:266
turtlesim::TurtleFrame::path_painter_
QPainter path_painter_
Definition: turtle_frame.h:82
turtlesim::TurtleFrame::clear
void clear()
Definition: turtle_frame.cpp:202
turtlesim::TurtleFrame::width_in_meters_
float width_in_meters_
Definition: turtle_frame.h:100
turtle.h
turtlesim::TurtleFrame::onUpdate
void onUpdate()
Definition: turtle_frame.cpp:216
turtlesim::TurtleFrame::kill_srv_
ros::ServiceServer kill_srv_
Definition: turtle_frame.h:91
ros::WallTime
turtlesim::TurtleFrame::frame_count_
uint64_t frame_count_
Definition: turtle_frame.h:84
turtlesim::TurtleFrame::updateTurtles
void updateTurtles()
Definition: turtle_frame.cpp:242
turtlesim::TurtleFrame::height_in_meters_
float height_in_meters_
Definition: turtle_frame.h:101
turtlesim::TurtleFrame::turtles_
M_Turtle turtles_
Definition: turtle_frame.h:94
turtlesim::TurtleFrame::paintEvent
void paintEvent(QPaintEvent *event)
Definition: turtle_frame.cpp:228
turtlesim::TurtleFrame::clear_srv_
ros::ServiceServer clear_srv_
Definition: turtle_frame.h:88
turtlesim::TurtleFrame::turtle_images_
QVector< QImage > turtle_images_
Definition: turtle_frame.h:97
turtlesim::TurtleFrame::M_Turtle
std::map< std::string, TurtlePtr > M_Turtle
Definition: turtle_frame.h:93
turtlesim::TurtleFrame::resetCallback
bool resetCallback(std_srvs::Empty::Request &, std_srvs::Empty::Response &)
Definition: turtle_frame.cpp:273
turtlesim::TurtleFrame::nh_
ros::NodeHandle nh_
Definition: turtle_frame.h:78
turtlesim::TurtleFrame::meter_
float meter_
Definition: turtle_frame.h:99
turtlesim::TurtleFrame::private_nh_
ros::NodeHandle private_nh_
Definition: turtle_frame.h:79
turtlesim::TurtleFrame::hasTurtle
bool hasTurtle(const std::string &name)
Definition: turtle_frame.cpp:163
ros::NodeHandle
turtlesim::TurtleFrame
Definition: turtle_frame.h:52


turtlesim
Author(s): Josh Faust, Dirk Thomas
autogenerated on Sat Apr 12 2025 02:28:03