diff --git a/Makefile b/Makefile
index 9d6eb4b341ed8ac2d9801fb73209fd8487317d28..0346166f34b6ffcd2460fb141e53407941eab72a 100644
--- a/Makefile
+++ b/Makefile
@@ -99,6 +99,7 @@ SUBDIR+=	sot-hrprtc-hrp2
 SUBDIR+=	sot-pattern-generator-v3
 SUBDIR+=	sot-romeo-v3
 SUBDIR+=	sot-talos
+SUBDIR+=	sot-torque-control
 SUBDIR+=	soth
 SUBDIR+=	spark-genom
 SUBDIR+=	talos-data
diff --git a/sot-torque-control/DESCR b/sot-torque-control/DESCR
new file mode 100644
index 0000000000000000000000000000000000000000..fc12790d30a965e386aebcb1266db52138a3b19d
--- /dev/null
+++ b/sot-torque-control/DESCR
@@ -0,0 +1 @@
+Torque control for humanoid robots
\ No newline at end of file
diff --git a/sot-torque-control/Makefile b/sot-torque-control/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..049b7f4df142f4ffa1d4caae8cb4f279feca7a3d
--- /dev/null
+++ b/sot-torque-control/Makefile
@@ -0,0 +1,55 @@
+# robotpkg Makefile for:	wip/sot-torque-control
+# Created:			Olivier Stasse on Wed Feb 21 18:07:40 CET 2018
+#
+
+PKGNAME=		sot-torque-control-${VERSION}
+DISTNAME=		sot-torque-control-${VERSION}
+VERSION=		1.0.0
+
+MASTER_SITES=		${MASTER_SITE_OPENROBOTS:=sot-torque-control/}
+MASTER_REPOSITORY=	${MASTER_REPOSITORY_GITHUB}/stack-of-tasks/sot-torque-control
+CHECKOUT_VCS_OPTS=	--recursive
+
+
+MAINTAINER=	gepetto@laas.fr
+CATEGORIES=	wip
+COMMENT=	Torque control for humanoids
+LICENSE=	2-clause-bsd
+
+WRKSRC=		${WRKDIR}/${DISTNAME:a=}
+
+DYNAMIC_PLIST_DIRS+=	share/doc/sot-torque-control
+
+CMAKE_ARGS+=		-DPYTHON_EXECUTABLE=${PYTHON}
+CMAKE_ARGS+=		-DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE}
+CMAKE_ARGS+=		-DPYTHON_LIBRARY=${PYTHON_LIB}
+CMAKE_ARGS+=		-DPYTHON_SITELIB=${PYTHON_SITELIB}
+CMAKE_ARGS+=		-DCMAKE_INSTALL_LIBDIR=lib
+
+# Build the package in a separate directory
+CONFIGURE_DIRS=		_build
+CMAKE_ARG_PATH=		..
+
+include ../../devel/boost-headers/depend.mk
+include ../../devel/boost-libs/depend.mk
+include ../../math/eigen3/depend.mk
+include ../../wip/py-dynamic-graph-v3/depend.mk
+include ../../wip/dynamic-graph-v3/depend.mk
+include ../../wip/sot-core-v3/depend.mk
+include ../../wip/pinocchio/depend.mk
+include ../../wip/tsid/depend.mk
+include ../../wip/parametric-curves/depend.mk
+include ../../wip/simple-humanoid-description/depend.mk
+include ../../pkgtools/pkg-config/depend.mk
+include ../../mk/sysdep/cmake.mk
+include ../../mk/sysdep/doxygen.mk
+include ../../mk/sysdep/graphviz.mk
+include ../../mk/sysdep/pdflatex.mk
+include ../../mk/sysdep/py-sphinx.mk
+include ../../mk/sysdep/python.mk
+include ../../mk/language/c.mk
+include ../../mk/language/c++.mk
+include ../../mk/robotpkg.mk
+
+pre-configure:
+	${RUN}${MKDIR} ${WRKSRC}/_build
diff --git a/sot-torque-control/PLIST b/sot-torque-control/PLIST
new file mode 100644
index 0000000000000000000000000000000000000000..ac5f1e33a806573aa51fd97d1dcb6579869045ad
--- /dev/null
+++ b/sot-torque-control/PLIST
@@ -0,0 +1,152 @@
+@comment Wed Feb 21 18:24:12 CET 2018
+include/sot/torque-control/config.hh
+include/sot/torque-control/deprecated.hh
+include/sot/torque-control/warning.hh
+include/sot/torque_control/admittance-controller.hh
+include/sot/torque_control/base-estimator.hh
+include/sot/torque_control/commands-helper.hh
+include/sot/torque_control/common.hh
+include/sot/torque_control/control-manager.hh
+include/sot/torque_control/current-controller.hh
+include/sot/torque_control/device-torque-ctrl.hh
+include/sot/torque_control/filter-differentiator.hh
+include/sot/torque_control/free-flyer-locator.hh
+include/sot/torque_control/imu_offset_compensation.hh
+include/sot/torque_control/inverse-dynamics-balance-controller.hh
+include/sot/torque_control/joint-trajectory-generator.hh
+include/sot/torque_control/madgwickahrs.hh
+include/sot/torque_control/motor-model.hh
+include/sot/torque_control/nd-trajectory-generator.hh
+include/sot/torque_control/numerical-difference.hh
+include/sot/torque_control/position-controller.hh
+include/sot/torque_control/se3-trajectory-generator.hh
+include/sot/torque_control/signal-helper.hh
+include/sot/torque_control/torque-offset-estimator.hh
+include/sot/torque_control/trace-player.hh
+include/sot/torque_control/utils/Stdafx.hh
+include/sot/torque_control/utils/causal-filter.hh
+include/sot/torque_control/utils/lin-estimator.hh
+include/sot/torque_control/utils/logger.hh
+include/sot/torque_control/utils/metapod-helper.hh
+include/sot/torque_control/utils/poly-estimator.hh
+include/sot/torque_control/utils/quad-estimator.hh
+include/sot/torque_control/utils/stop-watch.hh
+include/sot/torque_control/utils/trajectory-generators.hh
+include/sot/torque_control/utils/vector-conversions.hh
+lib/libsot-torque-control.so
+lib/libsot-torque-control.so.${PKGVERSION}
+lib/pkgconfig/sot-torque-control.pc
+lib/plugin/admittance-controller.so
+lib/plugin/admittance-controller.so.${PKGVERSION}
+lib/plugin/base-estimator.so
+lib/plugin/base-estimator.so.${PKGVERSION}
+lib/plugin/control-manager.so
+lib/plugin/control-manager.so.${PKGVERSION}
+lib/plugin/current-controller.so
+lib/plugin/current-controller.so.${PKGVERSION}
+lib/plugin/device-torque-ctrl.so
+lib/plugin/device-torque-ctrl.so.${PKGVERSION}
+lib/plugin/filter-differentiator.so
+lib/plugin/filter-differentiator.so.${PKGVERSION}
+lib/plugin/free-flyer-locator.so
+lib/plugin/free-flyer-locator.so.${PKGVERSION}
+lib/plugin/imu_offset_compensation.so
+lib/plugin/imu_offset_compensation.so.${PKGVERSION}
+lib/plugin/inverse-dynamics-balance-controller.so
+lib/plugin/inverse-dynamics-balance-controller.so.${PKGVERSION}
+lib/plugin/joint-torque-controller.so
+lib/plugin/joint-torque-controller.so.${PKGVERSION}
+lib/plugin/joint-trajectory-generator.so
+lib/plugin/joint-trajectory-generator.so.${PKGVERSION}
+lib/plugin/madgwickahrs.so
+lib/plugin/madgwickahrs.so.${PKGVERSION}
+lib/plugin/nd-trajectory-generator.so
+lib/plugin/nd-trajectory-generator.so.${PKGVERSION}
+lib/plugin/numerical-difference.so
+lib/plugin/numerical-difference.so.${PKGVERSION}
+lib/plugin/position-controller.so
+lib/plugin/position-controller.so.${PKGVERSION}
+lib/plugin/se3-trajectory-generator.so
+lib/plugin/se3-trajectory-generator.so.${PKGVERSION}
+lib/plugin/torque-offset-estimator.so
+lib/plugin/torque-offset-estimator.so.${PKGVERSION}
+lib/plugin/trace-player.so
+lib/plugin/trace-player.so.${PKGVERSION}
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/admittance_controller/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/admittance_controller/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/base_estimator/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/base_estimator/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/common_sot_py.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/control_manager/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/control_manager/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/create_entities_utils.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/current_controller/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/current_controller/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/device_torque_ctrl/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/device_torque_ctrl/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/filter_differentiator/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/filter_differentiator/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/force_torque_estimator/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/force_torque_estimator/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/free_flyer_locator/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/free_flyer_locator/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/admittance_ctrl_conf.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/balance_ctrl_conf.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/balance_ctrl_sim_conf.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/base_estimator_conf.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/base_estimator_sim_conf.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/control_manager_conf.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/control_manager_sim_conf.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/current_controller_conf.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/current_controller_sim_conf.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/force_torque_estimator_conf.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/inverse_dynamics_controller_gains.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/joint_pos_ctrl_gains.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/joint_pos_ctrl_gains_sim.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/joint_torque_controller_conf.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/joint_torque_controller_sim_conf.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/motors_parameters.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/motors_parameters_sim.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2/sot_utils.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2_device_pos_ctrl/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/hrp2_device_pos_ctrl/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/identification/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/identification/identification_utils.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/imu_offset_compensation/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/imu_offset_compensation/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/inverse_dynamics_balance_controller/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/inverse_dynamics_balance_controller/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/inverse_dynamics_controller/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/inverse_dynamics_controller/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/joint_torque_controller/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/joint_torque_controller/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/joint_trajectory_generator/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/joint_trajectory_generator/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/madgwickahrs/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/madgwickahrs/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/main.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/main_sim.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/nd_trajectory_generator/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/nd_trajectory_generator/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/numerical_difference/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/numerical_difference/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/position_controller/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/position_controller/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/se3_trajectory_generator/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/se3_trajectory_generator/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/tests/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/tests/robot_data_test.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/tests/test_balance_ctrl_openhrp.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/tests/test_control_manager.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/tests/test_velocity_filters.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/torque_offset_estimator/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/torque_offset_estimator/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/trace_player/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/trace_player/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/utils/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/utils/filter_utils.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/utils/plot_utils.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/utils/sot_utils.py
+${PYTHON_SITELIB}/dynamic_graph/sot/torque_control/wrap.so
diff --git a/sot-torque-control/depend.mk b/sot-torque-control/depend.mk
new file mode 100644
index 0000000000000000000000000000000000000000..12a5bcda7c4688ef1aaba29d3f29deba793172ba
--- /dev/null
+++ b/sot-torque-control/depend.mk
@@ -0,0 +1,28 @@
+# robotpkg depend.mk for:	wip/sot-core
+# Created:			Rohan Budhiraja on Thu, 17 Dec 2015
+#
+
+DEPEND_DEPTH:=		${DEPEND_DEPTH}+
+SOT_TORQUE_CONTROL_DEPEND_MK:=	${SOT_TORQUE_CONTROL_DEPEND_MK}+
+
+ifeq (+,$(DEPEND_DEPTH))
+DEPEND_PKG+=		sot-core-v3
+endif
+
+ifeq (+,$(SOT_TORQUE_CONTROL_DEPEND_MK)) # -------------------------------------------
+
+PREFER.sot-torque-control?=	robotpkg
+
+SYSTEM_SEARCH.sot-torque-control=\
+	include/sot/torque_control/admittance-controller.hh      	\
+	lib/libsot-torque-control.so					\
+	'lib/pkgconfig/sot-torque-control.pc:/Version/s/[^0-9.]//gp'
+
+DEPEND_USE+=		sot-torque-control
+
+DEPEND_ABI.sot-torque-control?=	sot-torque-control>=3.0.0
+DEPEND_DIR.sot-torque-control?=	../../wip/sot-torque-control
+
+endif # SOT_CORE_DEPEND_MK -------------------------------------------------
+
+DEPEND_DEPTH:=		${DEPEND_DEPTH:+=}
diff --git a/sot-torque-control/distinfo b/sot-torque-control/distinfo
new file mode 100644
index 0000000000000000000000000000000000000000..bf93cdb50f4c5cbf6a5f8855756d8bc64411094a
--- /dev/null
+++ b/sot-torque-control/distinfo
@@ -0,0 +1,3 @@
+SHA1 (sot-torque-control-1.0.0.tar.gz) = c48b6e4cc4aa3a72d9b02f68b23d1095e4b51128
+RMD160 (sot-torque-control-1.0.0.tar.gz) = 55ae474fa3beb6ac7bba59a23c6ad6c893122322
+Size (sot-torque-control-1.0.0.tar.gz) = 1992663 bytes