diff --git a/Makefile b/Makefile
index c744a2ed5fb7486290061f31bfa5c5df71e980f6..ced4591030ed6f2a85889e1535b794774970958e 100644
--- a/Makefile
+++ b/Makefile
@@ -94,6 +94,7 @@ SUBDIR+=	py-morse
 SUBDIR+=	py-mraa
 SUBDIR+=	py-parametric-curves
 SUBDIR+=	py-sot-core-v3
+SUBDIR+=	py-sot-dyninv-v3
 SUBDIR+=	py-sot-pattern-generator-v3
 SUBDIR+=	py-sot-tools-v3
 SUBDIR+=	py-sot-torque-control
diff --git a/py-sot-dyninv-v3/DESCR b/py-sot-dyninv-v3/DESCR
new file mode 100644
index 0000000000000000000000000000000000000000..bd978166e2ccd883dd7cc520b650d86c3f0b5eae
--- /dev/null
+++ b/py-sot-dyninv-v3/DESCR
@@ -0,0 +1,3 @@
+This sofware provides the solver and features to resolve the inverse of the dynamics of a free-floating robot, in
+contact with its environment. The basics are provided by the sot core, and the computation of the dynamics of the robot
+can be computed by a third party lib, for example sot-dynamic. (python bindings)
diff --git a/py-sot-dyninv-v3/Makefile b/py-sot-dyninv-v3/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..518a0d2d9d44fcca650f592f6c3e046982755977
--- /dev/null
+++ b/py-sot-dyninv-v3/Makefile
@@ -0,0 +1,37 @@
+# robotpkg Makefile for:	wip/py-sot-dyninv-v3
+# Created:			Rohan Budhiraja on Thu, 08 Sep 2016
+#
+
+ORG=			stack-of-tasks
+NAME=			sot-dyninv
+VERSION=		3.1.0
+
+DISTNAME=		${NAME}-${VERSION}
+PKGNAME=		${PKGTAG.python-}${NAME}-v3-${VERSION}
+
+MASTER_SITES=		${MASTER_SITE_OPENROBOTS:=${NAME}/}
+MASTER_REPOSITORY=	${MASTER_REPOSITORY_GITHUB}${ORG}/${NAME}
+CHECKOUT_VCS_OPTS+=	--recursive
+
+CATEGORIES=		wip
+COMMENT=		Resolve the inverse of the dynamics of a free-floating robot (python bindings)
+LICENSE=		2-clause-bsd
+MAINTAINER=		gepetto-soft@laas.fr
+
+CONFLICTS+=		py[0-9][0-9]-${NAME}
+
+DYNAMIC_PLIST_DIRS+=	share/doc/${NAME}
+
+include ../../wip/soth/depend.mk
+
+include ../../${CATEGORIES}/${NAME}-v3/depend.mk
+include ../../wip/dynamic-graph-v3/depend.mk
+include ../../wip/py-dynamic-graph-v3/depend.mk
+include ../../wip/sot-core-v3/depend.mk
+include ../../wip/py-sot-core-v3/depend.mk
+include ../../pkgtools/pkg-config/depend.mk
+include ../../mk/sysdep/cmake.mk
+include ../../mk/sysdep/doxygen.mk
+include ../../mk/language/c.mk
+include ../../mk/language/c++.mk
+include ../../mk/robotpkg.mk
diff --git a/py-sot-dyninv-v3/PLIST b/py-sot-dyninv-v3/PLIST
new file mode 100644
index 0000000000000000000000000000000000000000..01d040ed7edb9043ce6d5af6415351e34ec1c05d
--- /dev/null
+++ b/py-sot-dyninv-v3/PLIST
@@ -0,0 +1,43 @@
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/dynamic_integrator/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/dynamic_integrator/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/zmp_estimator/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/zmp_estimator/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/pseudo_robot_dynamic/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/pseudo_robot_dynamic/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/robot_dyn_simu/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/robot_dyn_simu/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/controller_pd/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/controller_pd/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_dyn_pd/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_dyn_pd/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_dyn_joint_limits/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_dyn_joint_limits/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_dyn_limits/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_dyn_limits/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_dyn_inequality/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_dyn_inequality/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_dyn_passing_point/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_dyn_passing_point/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/solver_op_space/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/solver_op_space/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/solver_dyn_reduced/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/solver_dyn_reduced/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/solver_kine/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/solver_kine/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_joint_limits/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_joint_limits/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_inequality/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_inequality/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_weight/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/task_weight/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/feature_projected_line/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/feature_projected_line/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/contact_selecter/wrap.so
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/contact_selecter/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/__init__.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/meta_task_dyn_6d.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/meta_task_dyn_passing_point.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/meta_tasks_dyn.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/meta_tasks_dyn_relative.py
+${PYTHON_SITELIB}/dynamic_graph/sot/dyninv/robot_specific.py
+${PYTHON_SITELIB}/dynamic_graph/tutorial/sot-concept.py
diff --git a/py-sot-dyninv-v3/depend.mk b/py-sot-dyninv-v3/depend.mk
new file mode 100644
index 0000000000000000000000000000000000000000..8a1b2bac2a7ff638ed2b7783591d23a0f1aeaf03
--- /dev/null
+++ b/py-sot-dyninv-v3/depend.mk
@@ -0,0 +1,26 @@
+# robotpkg depend.mk for:	wip/py-sot-dyninv-v3
+# Created:			Rohan Budhiraja on Thu, 08 Sep 2016
+#
+
+DEPEND_DEPTH:=		${DEPEND_DEPTH}+
+PY_SOT_DYNINV_V3_DEPEND_MK:=	${PY_SOT_DYNINV_V3_DEPEND_MK}+
+
+ifeq (+,$(DEPEND_DEPTH))
+DEPEND_PKG+=		py-sot-dyninv-v3
+endif
+
+ifeq (+,$(PY_SOT_DYNINV_V3_DEPEND_MK)) # -------------------------------------------
+
+PREFER.py-sot-dyninv-v3?=	robotpkg
+
+SYSTEM_SEARCH.py-sot-dyninv-v3=\
+	'${PYTHON_SYSLIBSEARCH}/dynamic_graph/sot/dyninv/contact_selecter/wrap.so'
+
+DEPEND_USE+=		py-sot-dyninv-v3
+
+DEPEND_ABI.py-sot-dyninv-v3?=	${PKGTAG.python-}sot-dyninv-v3>=3.0.0
+DEPEND_DIR.py-sot-dyninv-v3?=	../../wip/py-sot-dyninv-v3
+
+endif # PY_SOT_DYNINV_V3_DEPEND_MK -------------------------------------------------
+
+DEPEND_DEPTH:=		${DEPEND_DEPTH:+=}
diff --git a/py-sot-dyninv-v3/distinfo b/py-sot-dyninv-v3/distinfo
new file mode 100644
index 0000000000000000000000000000000000000000..1c02f3fd167724bb1fab6f984aa7fdc3d38f6d6a
--- /dev/null
+++ b/py-sot-dyninv-v3/distinfo
@@ -0,0 +1,3 @@
+SHA1 (sot-dyninv-3.1.0.tar.gz) = 22b97b1765db7729d161d656e3d7f5f26939151f
+RMD160 (sot-dyninv-3.1.0.tar.gz) = c10d26cdb7927700ad8526c234af72d6ef3ff27b
+Size (sot-dyninv-3.1.0.tar.gz) = 918447 bytes