diff --git a/src/parsers/urdf/model.cpp b/src/parsers/urdf/model.cpp
index 5ec63c01c6144392a29100a24f1e6c5faf6fc52b..57ea3e30cbc5ffdcec4bb63b3bdea7a89508a232 100644
--- a/src/parsers/urdf/model.cpp
+++ b/src/parsers/urdf/model.cpp
@@ -38,7 +38,7 @@ namespace se3
                              const SE3 & placement,
                              const std::string & body_name)
       {
-        if (Y == NULL) {
+        if (Y == NULL || Y->mass < Eigen::NumTraits<double>::epsilon()) {
           model.addFrame(Frame(body_name, jid, placement, BODY));
         } else {
           model.appendBodyToJoint(jid, convertFromUrdf(*Y), placement, body_name);