diff --git a/pinocchio/distinfo b/pinocchio/distinfo
index f5a3ab99c5c675fea6aa718c3af6021197c1a833..acdbb89a5bae24759f20419438c1476800835e4c 100644
--- a/pinocchio/distinfo
+++ b/pinocchio/distinfo
@@ -5,5 +5,6 @@ SHA1 (patch-aa) = 48bd99335980d76f285645f33d10ab5cd0db0749
 SHA1 (patch-ab) = 96f1ea798f0e3fcb2dbef755476a959727550eb0
 SHA1 (patch-ac) = 75eb20d87148706b27c1d3601f9a379fbf666bc0
 SHA1 (patch-ad) = 55fcdbcd58e5261af4fc94aab05056548f52ccc1
-SHA1 (patch-ae) = e28fca9974a5b5c4c06465fa46901dcd91e4324b
+SHA1 (patch-ae) = a43745a6a0275b24c36141fd30fbaf512cceb1ac
 SHA1 (patch-af) = 55412f6a9e2d96a7980d6f2efa0d42499610d8df
+SHA1 (patch-ag) = 13b6805a7c00a751f6ba58b9ece8c28c996cf771
diff --git a/pinocchio/patches/patch-ae b/pinocchio/patches/patch-ae
index d3c2cea077687ed119eb3b82a83436e49c44d448..69ab4fecb4d28e408499b4dc6778b2aab256706e 100644
--- a/pinocchio/patches/patch-ae
+++ b/pinocchio/patches/patch-ae
@@ -8,7 +8,7 @@ which is the version of Ubuntu 14.04
  ADD_OPTIONAL_DEPENDENCY("eigenpy >= 1.3.0")
  #ADD_OPTIONAL_DEPENDENCY("metapod >= 1.0.7")
 -ADD_REQUIRED_DEPENDENCY("urdfdom >= 0.2.10")
-+ADD_REQUIRED_DEPENDENCY("urdfdom >= 0.2.3")
++ADD_REQUIRED_DEPENDENCY("urdfdom >= 0.2.0")
  #ADD_OPTIONAL_DEPENDENCY("lua5.1")
  ADD_OPTIONAL_DEPENDENCY("hpp-fcl >= 0.4.1")
  IF(HPP_FCL_FOUND AND URDFDOM_FOUND)
diff --git a/pinocchio/patches/patch-ag b/pinocchio/patches/patch-ag
new file mode 100644
index 0000000000000000000000000000000000000000..d06874567dd70d816b219b9f9b12abf6476babc3
--- /dev/null
+++ b/pinocchio/patches/patch-ag
@@ -0,0 +1,49 @@
+Handle the API of urdfdom with version less than 0.3.0
+
+--- CMakeLists.txt~	2016-06-23 14:06:07.084967753 +0200
++++ CMakeLists.txt	2016-06-23 14:05:45.768700958 +0200
+@@ -67,6 +67,14 @@
+ ADD_REQUIRED_DEPENDENCY("urdfdom >= 0.2.0")
+ #ADD_OPTIONAL_DEPENDENCY("lua5.1")
+ ADD_OPTIONAL_DEPENDENCY("hpp-fcl >= 0.4.1")
++
++# Special care of urdfdom less than 0.3.0
++IF(URDFDOM_FOUND)
++  IF(${URDFDOM_VERSION} VERSION_LESS "0.3.0")
++    add_definitions(-DURDFDOM_COLLISION_WITH_GROUP_NAME)
++  ENDIF(${URDFDOM_VERSION} VERSION_LESS "0.3.0")
++ENDIF(URDFDOM_FOUND)
++
+ IF(HPP_FCL_FOUND AND URDFDOM_FOUND)
+   ADD_REQUIRED_DEPENDENCY("assimp >= 2.0")
+ if (NOT ${ASSIMP_VERSION} VERSION_LESS "2.0.1150")
+--- src/multibody/parser/urdf-with-geometry.hxx~	2016-05-27 14:31:10.000000000 +0200
++++ src/multibody/parser/urdf-with-geometry.hxx	2016-06-23 14:05:29.812501233 +0200
+@@ -124,7 +124,13 @@
+         {
+           fcl::CollisionObject collision_object = retrieveCollisionGeometry((*i)->geometry, package_dirs, mesh_path);
+           SE3 geomPlacement = convertFromUrdf((*i)->origin);
++
++#ifdef URDFDOM_COLLISION_WITH_GROUP_NAME
++          std::string collision_object_name = (*i)->group_name ;
++#else
+           std::string collision_object_name = (*i)->name ;
++#endif
++
+           geom_model.addCollisionObject(model.parents[model.getBodyId(link_name)], collision_object, geomPlacement, collision_object_name, mesh_path); 
+           
+         }
+@@ -143,7 +149,13 @@
+         {
+           fcl::CollisionObject visual_object = retrieveCollisionGeometry((*i)->geometry, package_dirs, mesh_path);
+           SE3 geomPlacement = convertFromUrdf((*i)->origin);
++
++#ifdef URDFDOM_COLLISION_WITH_GROUP_NAME
++          std::string visual_object_name = (*i)->group_name ;
++#else
+           std::string visual_object_name = (*i)->name ;
++#endif
++
+           geom_model.addVisualObject(model.parents[model.getBodyId(link_name)], visual_object, geomPlacement, visual_object_name, mesh_path); 
+           
+         }