diff --git a/CMakeLists.txt b/CMakeLists.txt
index bddcdef0349f720859a73b497b917cd1f86df451..e92922516d8c0b8c38f6dd51173dc7c36b15127c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -80,6 +80,8 @@ add_message_files(
         FILES
         Trajectory.msg
         Waypoint.msg
+        StampedVelocity.msg
+        StampedInZone.msg
 )
 
 ## Generate services in the 'srv' folder
@@ -204,4 +206,8 @@ target_link_libraries(${PROJECT_NAME}_safety_zone_spawner ${catkin_LIBRARIES})
 
 target_link_libraries(${PROJECT_NAME}_safety_zone_monitor ${catkin_LIBRARIES})
 
-target_link_libraries(${PROJECT_NAME}_acceleration_publisher ${catkin_LIBRARIES})
\ No newline at end of file
+target_link_libraries(${PROJECT_NAME}_acceleration_publisher ${catkin_LIBRARIES})
+
+catkin_install_python(PROGRAMS scripts/plotter.py
+        DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
+)
\ No newline at end of file
diff --git a/launch/simulation_rosrag_test.launch b/launch/simulation_rosrag_test.launch
index 7dbd74a800a2ecf7b34ba4998d45c69a3d97de28..280283a84815fe4ba45b91840828c160dfd9f1c5 100644
--- a/launch/simulation_rosrag_test.launch
+++ b/launch/simulation_rosrag_test.launch
@@ -13,6 +13,9 @@
     <node name="safety_zone_monitor" pkg="panda_mqtt_connector" type="safety_zone_monitor" respawn="false" output="screen"/>
     <node name="MqttRosConnectionTestNode" pkg="panda_mqtt_connector" type="MqttRosConnectionTestNode" respawn="false" output="screen"/>
     <node name="acceleration_publisher" pkg="panda_mqtt_connector" type="acceleration_publisher" respawn="false" output="screen"/>
-    <node name="transform-riz" pkg="topic_tools" type="transform" args="/panda_mqtt_connector/robot_in_zone /panda_mqtt_connector/riz std_msgs/Float64 -- 'm.data*-1'" />
-    <node name="rqt_plot" pkg="rqt_plot" type="rqt_plot" respawn="false" output="screen" args="/gazebo/link_states/pose[10]/position/x:y:z /panda_mqtt_connector/velocity/data /panda_mqtt_connector/max_velocity/data /panda_mqtt_connector/riz" />
+    <node name="plotter" pkg="panda_mqtt_connector" type="plotter.py" respawn="false" output="screen"/>
+    <node name="transform_riz" pkg="topic_tools" type="transform" args="--wait-for-start /panda_mqtt_connector/robot_in_zone /panda_mqtt_connector/robot_in_zone_number std_msgs/Float64 -- 'm.zone*-1'" />
+    <node name="rqt_plot" pkg="rqt_plot" type="rqt_plot" respawn="false" output="screen"
+          args="/gazebo/link_states/pose[10]/position/x:y:z /panda_mqtt_connector/velocity /panda_mqtt_connector/max_velocity /panda_mqtt_connector/robot_in_zone_number"
+    />
 </launch>
diff --git a/msg/StampedInZone.msg b/msg/StampedInZone.msg
new file mode 100644
index 0000000000000000000000000000000000000000..a7f236b917c901a53dab39f9eae1dec12d2b1979
--- /dev/null
+++ b/msg/StampedInZone.msg
@@ -0,0 +1,3 @@
+# information if robot is in zone with a time stamp
+Header header
+bool zone
\ No newline at end of file
diff --git a/msg/StampedVelocity.msg b/msg/StampedVelocity.msg
new file mode 100644
index 0000000000000000000000000000000000000000..90fc133804ae827c08a7c763823a3f2d2093505a
--- /dev/null
+++ b/msg/StampedVelocity.msg
@@ -0,0 +1,3 @@
+# a velocity with a time stamp
+Header header
+float64 velocity
\ No newline at end of file
diff --git a/scripts/plotter.py b/scripts/plotter.py
new file mode 100755
index 0000000000000000000000000000000000000000..bb3445c85085f38d7e6ca8623fd0922a466e8c27
--- /dev/null
+++ b/scripts/plotter.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+from matplotlib import pyplot as plt
+import rospy
+from panda_mqtt_connector.msg import StampedVelocity
+
+def plot_x(msg):
+    plt.plot(msg.header.stamp.to_sec(), msg.velocity, '*')
+    plt.axis("equal")
+    plt.draw()
+    plt.pause(0.00000000001)
+
+if __name__ == '__main__':
+
+    rospy.init_node("plotter")
+    rospy.Subscriber("panda_mqtt_connector/velocity", StampedVelocity, plot_x)
+    plt.ion()
+    plt.show()
+    rospy.spin()
diff --git a/src/SafetyZoneMonitor.h b/src/SafetyZoneMonitor.h
index 1e12abd5e3681e7ed4f595354a765d99b4b28243..85ff823d663aac1bb9d45fc0c8dfda1aefe1e57e 100644
--- a/src/SafetyZoneMonitor.h
+++ b/src/SafetyZoneMonitor.h
@@ -7,7 +7,7 @@
 
 #include <geometry_msgs/Point.h>
 #include <gazebo_msgs/LinkStates.h>
-#include <std_msgs/Bool.h>
+#include <panda_mqtt_connector/StampedInZone.h>
 #include "ros/ros.h"
 
 
@@ -52,8 +52,6 @@ public:
 
     counter++;
 
-//    ROS_ERROR_STREAM("initialized " << initialized << " result " << res << " counter " << counter);
-
     std::vector<std::string> names{msg.name};
 
     for (int link_number = 0; link_number < names.size(); ++link_number) {
@@ -64,9 +62,10 @@ public:
             if (!res || !initialized) {
               initialized = true;
               res = true;
-              std_msgs::Bool result;
-              result.data = true;
-              ROS_ERROR_STREAM("entered zone [" << zone.zone.x << "," << zone.zone.y << "] in run " << counter);
+              panda_mqtt_connector::StampedInZone result;
+              result.zone = true;
+              result.header.stamp = ros::Time::now();
+              ROS_INFO_STREAM("entered zone [" << zone.zone.x << "," << zone.zone.y << "] in run " << counter);
               publisher->publish(result);
             }
             return;
@@ -76,11 +75,12 @@ public:
     }
     // no part of the robot is in a zone
     if (res || !initialized) {
-      ROS_ERROR_STREAM("left zone in run " << counter);
+      ROS_INFO_STREAM("left zone in run " << counter);
       initialized = true;
       res = false;
-      std_msgs::Bool result;
-      result.data = false;
+      panda_mqtt_connector::StampedInZone result;
+      result.zone = false;
+      result.header.stamp = ros::Time::now();
       publisher->publish(result);
     }
   }
diff --git a/src/acceleration_publisher.cpp b/src/acceleration_publisher.cpp
index c6e7572345f853b50e8039b6d17d28fda60dcad5..8844cabb0adc0939eaf3f4b429364d419ce367bc 100644
--- a/src/acceleration_publisher.cpp
+++ b/src/acceleration_publisher.cpp
@@ -7,10 +7,8 @@
 
 #include <ros/ros.h>
 
-#include <ros/ros.h>
 #include <tf2_ros/transform_listener.h>
-#include <geometry_msgs/TransformStamped.h>
-#include <std_msgs/Float64.h>
+#include <panda_mqtt_connector/StampedVelocity.h>
 
 namespace acceleration_publisher {
 }
@@ -25,7 +23,7 @@ int main(int argc, char **argv) {
   ros::init(argc, argv, "acceleration_publisher");
   ros::NodeHandle n("panda_mqtt_connector");
 
-  ros::Publisher vel = n.advertise<std_msgs::Float64>("velocity", 10);
+  ros::Publisher vel = n.advertise<panda_mqtt_connector::StampedVelocity>("velocity", 10);
 
   tf2_ros::Buffer tfBuffer;
   tf2_ros::TransformListener tfListener(tfBuffer);
@@ -46,21 +44,22 @@ int main(int argc, char **argv) {
                                                   "panda_hand", past,
                                                   "world", ros::Duration(1.0));
 
+      panda_mqtt_connector::StampedVelocity msg;
+
+      double dx = transformStamped.transform.translation.x;
+      double dy = transformStamped.transform.translation.y;
+      double dz = transformStamped.transform.translation.z;
+
+      double velocity = sqrt(dx*dx + dy*dz + dz*dz)/dt.toSec();
+      msg.header.stamp = now - (dt * .5);
+      msg.velocity = velocity;
+      vel.publish(msg);
+
     } catch (tf2::TransformException &ex) {
       ROS_WARN("%s", ex.what());
       ros::Duration(1.0).sleep();
       continue;
     }
-
-    std_msgs::Float64 msg;
-
-    double dx = transformStamped.transform.translation.x;
-    double dy = transformStamped.transform.translation.y;
-    double dz = transformStamped.transform.translation.z;
-
-    double velocity = sqrt(dx*dx + dy*dz + dz*dz)/dt.toSec();
-    msg.data = velocity;
-    vel.publish(msg);
   }
 
   return 0;
diff --git a/src/safety_zone_monitor.cpp b/src/safety_zone_monitor.cpp
index 21b129b5da0507fda336be2e6edd96bfe4af3785..948309e48e23737730547f6ab1ca2f08a3c97960 100644
--- a/src/safety_zone_monitor.cpp
+++ b/src/safety_zone_monitor.cpp
@@ -8,7 +8,7 @@
 #include <ros/ros.h>
 #include <shape_msgs/SolidPrimitive.h>
 #include <geometry_msgs/Pose.h>
-#include <std_msgs/Bool.h>
+#include <panda_mqtt_connector/StampedInZone.h>
 #include "SafetyZoneMonitor.h"
 
 namespace safety_zone_monitor {
@@ -73,7 +73,7 @@ int main(int argc, char **argv) {
     exit(-1);
   }
 
-  ros::Publisher zoneStatePublisher = n.advertise<std_msgs::Bool>("robot_in_zone", 1000);
+  ros::Publisher zoneStatePublisher = n.advertise<panda_mqtt_connector::StampedInZone>("robot_in_zone", 1000);
 
   SafetyZoneMonitor monitor{size, zoneStatePublisher};