diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0a823c1cee43acfca416ffdda48f2bf9c5949fa0..a91c9491441b36a1837e0cf515162e2b84acc8a5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,6 +23,7 @@ find_package(catkin REQUIRED COMPONENTS message_generation roscpp nav_msgs geome
 add_message_files(
   FILES
   BumperState.msg
+  Encoders.msg
 )
 #uncomment if you have defined services
 #add_service_files(
diff --git a/RosAria.cpp b/RosAria.cpp
index 4dfe42c5df08442f93687823c8a4f6820084a4c8..d11adbaff432ac5f518cadf92997d760ca075fe4 100644
--- a/RosAria.cpp
+++ b/RosAria.cpp
@@ -20,6 +20,7 @@
 #include "tf/transform_datatypes.h"
 #include <dynamic_reconfigure/server.h>
 #include <rosaria/RosAriaConfig.h>
+#include "rosaria/Encoders.h"
 #include "std_msgs/Float64.h"
 #include "std_msgs/Float32.h"
 #include "std_msgs/Int8.h"
@@ -133,6 +134,9 @@ class RosAriaNode
 
     // whether to publish aria lasers
     bool publish_aria_lasers;
+
+    ros::Publisher encoder_pub;
+    rosaria::Encoders encoders;
 };
 
 void RosAriaNode::readParameters()
@@ -337,11 +341,15 @@ RosAriaNode::RosAriaNode(ros::NodeHandle nh) :
   disable_srv = n.advertiseService("disable_motors", &RosAriaNode::disable_motors_cb, this);
   
   veltime = ros::Time::now();
+
+  encoder_pub = n.advertise<rosaria::Encoders>("encoders",1);
 }
 
 RosAriaNode::~RosAriaNode()
 {
   // disable motors and sonar.
+  robot->stopEncoderPackets();
+
   robot->disableMotors();
   robot->disableSonar();
 
@@ -520,6 +528,8 @@ int RosAriaNode::Setup()
   if (cmdvel_timeout_param > 0.0)
     cmdvel_watchdog_timer = n.createTimer(ros::Duration(0.1), &RosAriaNode::cmdvel_watchdog, this);
 
+  robot->requestEncoderPackets();
+
   ROS_INFO_NAMED("rosaria", "rosaria: Setup complete");
   return 0;
 }
@@ -690,6 +700,12 @@ void RosAriaNode::publish()
       sonar_pub.publish(cloud);
     }
   } // end if sonar_enabled
+  // send the encoder information
+  encoders.left_encoder=robot->getLeftEncoder();
+  encoders.right_encoder=robot->getRightEncoder();
+  encoders.header.stamp=ros::Time::now();
+  encoders.header.frame_id=frame_id_odom;
+  encoder_pub.publish(encoders);
 }
 
 bool RosAriaNode::enable_motors_cb(std_srvs::Empty::Request& request, std_srvs::Empty::Response& response)
diff --git a/msg/Encoders.msg b/msg/Encoders.msg
new file mode 100644
index 0000000000000000000000000000000000000000..2dae2405d147d89bf924e8901f8feafac711717b
--- /dev/null
+++ b/msg/Encoders.msg
@@ -0,0 +1,3 @@
+Header header
+int64 left_encoder
+int64 right_encoder