From f25e4a59fb847b1ca459370a8ee8eda1272d121a Mon Sep 17 00:00:00 2001
From: jvongehr <joel-jerome.vongehr@stud.hs-bochum.de>
Date: Mon, 30 Aug 2021 11:56:54 +0200
Subject: [PATCH] added msg type img; poc for receiving msgs & drawing

---
 CMakeLists.txt       | 16 ++++++++++++++--
 msg/img.msg          |  4 ++++
 src/turtlesim_xl.cpp | 26 ++++++++++++++++++++++----
 3 files changed, 40 insertions(+), 6 deletions(-)
 create mode 100644 msg/img.msg

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2dda4a2..51cf1db 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,17 @@
 cmake_minimum_required(VERSION 3.0.2)
 project(turtlesim_xl)
 
-find_package(catkin REQUIRED COMPONENTS geometry_msgs message_generation rosconsole roscpp roscpp_serialization roslib rostime std_msgs std_srvs)
+find_package(catkin REQUIRED COMPONENTS 
+  geometry_msgs 
+  message_generation 
+  rosconsole 
+  roscpp 
+  roscpp_serialization 
+  roslib 
+  rostime 
+  std_msgs 
+  std_srvs
+)
 
 find_package(Qt5Widgets REQUIRED)
 find_package(Boost REQUIRED COMPONENTS thread)
@@ -10,13 +20,15 @@ include_directories(include ${catkin_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
 link_directories(${catkin_LIBRARY_DIRS})
 
 add_message_files(DIRECTORY msg FILES
-                  Color.msg Pose.msg)
+                  Color.msg Pose.msg img.msg)
+
 add_service_files(DIRECTORY srv FILES
                   Kill.srv
                   SetPen.srv
                   Spawn.srv
                   TeleportAbsolute.srv
                   TeleportRelative.srv)
+
 generate_messages(DEPENDENCIES geometry_msgs std_msgs std_srvs)
 
 catkin_package(CATKIN_DEPENDS geometry_msgs message_runtime std_msgs std_srvs)
diff --git a/msg/img.msg b/msg/img.msg
new file mode 100644
index 0000000..02795b4
--- /dev/null
+++ b/msg/img.msg
@@ -0,0 +1,4 @@
+int64 x
+int64 y
+# uint64[] img
+string imgPath
\ No newline at end of file
diff --git a/src/turtlesim_xl.cpp b/src/turtlesim_xl.cpp
index 14f1623..584f20d 100644
--- a/src/turtlesim_xl.cpp
+++ b/src/turtlesim_xl.cpp
@@ -32,9 +32,13 @@
 #include <ros/ros.h>
 
 #include "turtlesim/turtle_frame.h"
+#include <turtlesim_xl/img.h>
 
 class TurtleApp : public QApplication
 {
+  turtlesim_xl::img shapeData;
+  ros::Subscriber shapeSub;
+  turtlesim::TurtleFrame* frame;
 public:
   ros::NodeHandlePtr nh_;
 
@@ -42,18 +46,32 @@ public:
     : QApplication(argc, argv)
   {
     ros::init(argc, argv, "turtlesim", ros::init_options::NoSigintHandler);
+    ros::NodeHandle n;
     nh_.reset(new ros::NodeHandle);
+    // turtlesim::TurtleFrame fr;
+    // frame = &fr;
+    frame = new turtlesim::TurtleFrame();
+
+    shapeSub = n.subscribe("/shapeData", 10, &TurtleApp::updateShape, this);
   }
 
   int exec(std::string shape = "rectangle")
   {
-    turtlesim::TurtleFrame frame;
-    frame.setShape(shape);
-    frame.drawShape();
-    frame.show();
+    frame->setShape(shape);
+    ROS_INFO("Offset before calling draw: x = %d; y = %d", shapeData.x, shapeData.y);
+    frame->drawShape();
+    frame->show();
 
     return QApplication::exec();
   }
+
+private:
+  void updateShape(turtlesim_xl::img data) {
+      shapeData = data;
+      ROS_INFO("NEW SHAPE DATA SAVED");
+      frame->setShape("triangle");
+      frame->drawShape();
+  }
 };
 
 int main(int argc, char** argv)
-- 
GitLab