diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 1943a400c320c50cc59acb3ea9ab8803b8e03650..e7e224afab7a28b5af7cb455ecdadba070bc8ba3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -433,6 +433,9 @@ IF (OpenCV_FOUND)
         )
 ENDIF(OpenCV_FOUND)
 
+# Add the capture sub-directory
+ADD_SUBDIRECTORY(captures)
+
 IF (cereal_FOUND)
   ADD_SUBDIRECTORY(serialization/cereal)
 ENDIF(cereal_FOUND)
@@ -472,7 +475,8 @@ ENDIF(YAMLCPP_FOUND)
 ADD_LIBRARY(${PROJECT_NAME} 
             SHARED 
             ${SRCS_BASE} 
-            ${SRCS} 
+            ${SRCS}
+            ${SRCS_CAPTURE}
             #${SRCS_DTASSC} 
             ${SRCS_WRAPPER}
             )
@@ -522,6 +526,8 @@ INSTALL(FILES ${HDRS}
     DESTINATION include/iri-algorithms/wolf)
 #INSTALL(FILES ${HDRS_DTASSC}
 #    DESTINATION include/iri-algorithms/wolf/data_association)
+INSTALL(FILES ${HDRS_CAPTURE}
+    DESTINATION include/iri-algorithms/wolf/captures)
 INSTALL(FILES ${HDRS_WRAPPER}
     DESTINATION include/iri-algorithms/wolf/ceres_wrapper)
 INSTALL(FILES ${HDRS_SOLVER}
diff --git a/src/captures/CMakeLists.txt b/src/captures/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..216253c75230057b83739b16319802c0f4d2f69c
--- /dev/null
+++ b/src/captures/CMakeLists.txt
@@ -0,0 +1,9 @@
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
+
+# Forward var to parent scope
+
+SET(HDRS_CAPTURE ${HDRS_CAPTURE}
+                 ${CMAKE_CURRENT_SOURCE_DIR}/capture_velocity.h PARENT_SCOPE)
+
+SET(SRCS_CAPTURE ${SRCS_CAPTURE}
+                 ${CMAKE_CURRENT_SOURCE_DIR}/capture_velocity.cpp PARENT_SCOPE)
diff --git a/src/captures/capture_velocity.cpp b/src/captures/capture_velocity.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..45384d37e0178ad2a56f0de760181b0d7d9a9fe2
--- /dev/null
+++ b/src/captures/capture_velocity.cpp
@@ -0,0 +1,42 @@
+#include "capture_velocity.h"
+
+namespace wolf {
+
+CaptureVelocity::CaptureVelocity(const TimeStamp& _ts,
+                                 const SensorBasePtr& _sensor_ptr,
+                                 const Eigen::VectorXs& _velocity,
+                                 Size _delta_size, Size _delta_cov_size,
+                                 FrameBasePtr _origin_frame_ptr) :
+  CaptureMotion(_ts, _sensor_ptr, _velocity,
+                _delta_size, _delta_cov_size, _origin_frame_ptr)
+{
+  setType("VELOCITY");
+}
+
+CaptureVelocity::CaptureVelocity(const TimeStamp& _ts,
+                                 const SensorBasePtr& _sensor_ptr,
+                                 const Eigen::VectorXs& _velocity,
+                                 const Eigen::MatrixXs& _velocity_cov,
+                                 Size _delta_size, Size _delta_cov_size,
+                                 FrameBasePtr _origin_frame_ptr,
+                                 StateBlockPtr _p_ptr,
+                                 StateBlockPtr _o_ptr,
+                                 StateBlockPtr _intr_ptr) :
+  CaptureMotion(_ts, _sensor_ptr, _velocity, _velocity_cov,
+                _delta_size, _delta_cov_size, _origin_frame_ptr,
+                _p_ptr, _o_ptr, _intr_ptr)
+{
+  setType("VELOCITY");
+}
+
+const Eigen::VectorXs& CaptureVelocity::getVelocity() const
+{
+  return getData();
+}
+
+const Eigen::MatrixXs& CaptureVelocity::getVelocityCov() const
+{
+  return getDataCovariance();
+}
+
+} // namespace wolf
diff --git a/src/captures/capture_velocity.h b/src/captures/capture_velocity.h
new file mode 100644
index 0000000000000000000000000000000000000000..5b360783382e6f0b3d0b9d33870392c6a02ae8b8
--- /dev/null
+++ b/src/captures/capture_velocity.h
@@ -0,0 +1,59 @@
+/**
+ * \file capture_velocity.h
+ *
+ *  Created on: Oct 20, 2016
+ *  \author: Jeremie Deray
+ */
+
+#ifndef _WOLF_CAPTURE_VELOCITY_H_
+#define _WOLF_CAPTURE_VELOCITY_H_
+
+//wolf includes
+#include "capture_motion.h"
+
+namespace wolf {
+
+WOLF_PTR_TYPEDEFS(CaptureVelocity);
+
+/**
+ * @brief The CaptureVelocity class
+ *
+ * Represents a velocity.
+ */
+class CaptureVelocity : public CaptureMotion
+{
+protected:
+
+  using NodeBase::node_type_;
+
+public:
+
+  /**
+   * \brief Constructor
+   **/
+  CaptureVelocity(const TimeStamp& _ts,
+                  const SensorBasePtr& _sensor_ptr,
+                  const Eigen::VectorXs& _velocity,
+                  Size _delta_size, Size _delta_cov_size,
+                  FrameBasePtr _origin_frame_ptr);
+
+  CaptureVelocity(const TimeStamp& _ts,
+                  const SensorBasePtr& _sensor_ptr,
+                  const Eigen::VectorXs& _velocity,
+                  const Eigen::MatrixXs& _velocity_cov,
+                  Size _delta_size, Size _delta_cov_size,
+                  FrameBasePtr _origin_frame_ptr,
+                  StateBlockPtr _p_ptr = nullptr,
+                  StateBlockPtr _o_ptr = nullptr,
+                  StateBlockPtr _intr_ptr = nullptr);
+
+  virtual ~CaptureVelocity() = default;
+
+  const Eigen::VectorXs& getVelocity() const;
+
+  const Eigen::MatrixXs& getVelocityCov() const;
+};
+
+} // namespace wolf
+
+#endif /* _WOLF_CAPTURE_VELOCITY_H_ */