diff --git a/CMakeLists.txt b/CMakeLists.txt
index 940b2159ba3c82e701d5c3ec0b3d85bd459424c9..dc7fd0390a5cbdef9ceaa521b9ca6bce88300082 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -139,6 +139,7 @@ include_directories(
 # )
 add_library(wolf_subscriber_gnss src/wolf_ros_subscriber_gnss.cpp)
 add_library(wolf_subscriber_gnss_fix src/wolf_ros_subscriber_gnss_fix.cpp)
+add_library(wolf_subscriber_gnss_TDCP src/wolf_ros_subscriber_gnss_TDCP.cpp)
 
 ## Add cmake target dependencies of the library
 ## as an example, code may need to be generated before libraries
@@ -167,6 +168,16 @@ target_link_libraries(wolf_subscriber_gnss
 					  ${wolfgnss_LIBRARIES} 
 					  ${iri_gnss_msgs_LIBRARIES}
 					  )
+target_link_libraries(wolf_subscriber_gnss_fix 
+					  ${wolf_LIBRARIES} 
+					  ${wolfgnss_LIBRARIES} 
+					  ${iri_gnss_msgs_LIBRARIES}
+					  )
+target_link_libraries(wolf_subscriber_gnss_TDCP 
+					  ${wolf_LIBRARIES} 
+					  ${wolfgnss_LIBRARIES} 
+					  ${iri_gnss_msgs_LIBRARIES}
+					  )
 
 #############
 ## Install ##
diff --git a/include/wolf_ros_subscriber_gnss_TDCP.h b/include/wolf_ros_subscriber_gnss_TDCP.h
new file mode 100644
index 0000000000000000000000000000000000000000..251db0b02ccce2be60e731d1943d231c851977e4
--- /dev/null
+++ b/include/wolf_ros_subscriber_gnss_TDCP.h
@@ -0,0 +1,60 @@
+/**************************
+ *      WOLF includes     *
+ **************************/
+#include <core/yaml/parser_yaml.hpp>
+#include <core/common/wolf.h>
+#include <core/problem/problem.h>
+#include <core/utils/params_server.hpp>
+#include <gnss/capture/capture_gnss.h>
+#include <gnss/sensor/sensor_gnss.h>
+
+/**************************
+ *      ROS includes      *
+ **************************/
+#include <ros/ros.h>
+#include <iri_gnss_msgs/Observation.h>
+#include <iri_gnss_msgs/Navigation.h>
+#include <iri_gnss_msgs/iri_gnss_msgs_to_gnssutils.h>
+
+/**************************
+ *      STD includes      *
+ **************************/
+#include <iostream>
+#include <iomanip>
+#include <queue>
+
+/**************************
+ *    WOLF-ROS includes   *
+ **************************/
+#include "wolf_ros_subscriber.h"
+#include "subscriber_factory.h"
+#include "gnss_utils/gnss_utils.h"
+
+using namespace wolf;
+
+class SubscriberWrapperGnssTDCP : public SubscriberWrapper
+{
+    protected:
+
+        ros::Subscriber sub_nav_;
+        std::shared_ptr<GNSSUtils::Navigation> last_nav_ptr_;
+        //GNSSUtils::Navigation last_nav_;
+        //GNSSUtils::Observations obs_;
+        //GNSSUtils::ComputePosOutput  get_pos_res_;
+
+        //prcopt_t prcopt_;
+        //bool new_obs_;
+
+    public:
+        // Constructor
+        SubscriberWrapperGnssTDCP(const SensorBasePtr& sensor_ptr);
+
+        virtual void initSubscriber(ros::NodeHandle& nh, const std::string& topic);
+
+        void callbackObservation(const iri_gnss_msgs::Observation::ConstPtr& msg);
+
+        void callbackNavigation(const iri_gnss_msgs::Navigation::ConstPtr& msg);
+
+        static std::shared_ptr<SubscriberWrapper> create(const std::string& _unique_name, const ParamsServer& _params, const SensorBasePtr _sensor_ptr);
+};
+WOLF_REGISTER_SUBSCRIBER(SubscriberWrapperGnssTDCP)
diff --git a/src/wolf_ros_subscriber_gnss_TDCP.cpp b/src/wolf_ros_subscriber_gnss_TDCP.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5653d0617fcfb95e31e3c7243699923020d602d1
--- /dev/null
+++ b/src/wolf_ros_subscriber_gnss_TDCP.cpp
@@ -0,0 +1,54 @@
+#include "../include/wolf_ros_subscriber_gnss_TDCP.h"
+
+using namespace wolf;
+
+// Constructor
+SubscriberWrapperGnssTDCP::SubscriberWrapperGnssTDCP(const SensorBasePtr& sensor_ptr) :
+        SubscriberWrapper(sensor_ptr)
+{
+    // TODO copied from TDCP_ros
+}
+
+void SubscriberWrapperGnssTDCP::initSubscriber(ros::NodeHandle& nh, const std::string& topic)
+{
+    sub_     = nh.subscribe(topic+std::string("_obs"), 1, &SubscriberWrapperGnssTDCP::callbackObservation, this);
+    sub_nav_ = nh.subscribe(topic+std::string("_nav"), 1, &SubscriberWrapperGnssTDCP::callbackNavigation, this);
+}
+
+
+void SubscriberWrapperGnssTDCP::callbackObservation(const iri_gnss_msgs::Observation::ConstPtr& msg)
+{
+    ROS_INFO("callbackObs!");
+    if (last_nav_ptr_==nullptr)
+        return;
+
+    // TODO copied from TDCP_ros
+
+
+
+//    GNSSUtils::ObservationsPtr obs_ptr = std::make_shared<GNSSUtils::Observations>();
+//    GNSSUtils::fillObservation(*obs_ptr, msg);
+//    CaptureGnssPtr new_capture = std::make_shared<CaptureGnss>(TimeStamp(msg->header.stamp.sec, msg->header.stamp.nsec),
+//                                                               sensor_ptr_,
+//                                                               obs_ptr,
+//                                                               last_nav_ptr_);
+//    new_capture->process();
+//
+}
+
+void SubscriberWrapperGnssTDCP::callbackNavigation(const iri_gnss_msgs::Navigation::ConstPtr& msg)
+{
+    ROS_INFO("callbackNav!");
+
+    std::cout << "Ephemeris size: " << msg->eph.size() << "\n";
+    last_nav_ptr_ = std::make_shared<GNSSUtils::Navigation>();
+    GNSSUtils::fillNavigation(*last_nav_ptr_, msg);
+    last_nav_ptr_->print();
+
+    // TODO copied from TDCP_ros
+}
+
+std::shared_ptr<SubscriberWrapper> SubscriberWrapperGnssTDCP::create(const std::string& _unique_name, const ParamsServer& _params, const SensorBasePtr _sensor_ptr)
+{
+    return std::make_shared<SubscriberWrapperGnssTDCP>(_sensor_ptr);
+}