diff --git a/VirtualRobot/Nodes/RobotNode.cpp b/VirtualRobot/Nodes/RobotNode.cpp
index 3435cf43d263f91e6c538edaefb543167317fc44..97214534294620c2c596c82aef79471dc1070c3d 100644
--- a/VirtualRobot/Nodes/RobotNode.cpp
+++ b/VirtualRobot/Nodes/RobotNode.cpp
@@ -637,6 +637,11 @@ namespace VirtualRobot
         return false;
     }
 
+    bool RobotNode::isHemisphereJoint() const
+    {
+        return false;
+    }
+
     void RobotNode::setLimitless(bool limitless)
     {
         this->limitless = limitless;
@@ -860,6 +865,11 @@ namespace VirtualRobot
         jointLimitHi = hi;
     }
 
+    bool RobotNode::isJoint() const
+    {
+        return isRotationalJoint() or isTranslationalJoint() or isHemisphereJoint();
+    }
+
     void RobotNode::setMaxTorque(float maxTo)
     {
         maxTorque = maxTo;
diff --git a/VirtualRobot/Nodes/RobotNode.h b/VirtualRobot/Nodes/RobotNode.h
index be5c842b560447db8366d630ee8af409d384098a..f0188efac5f6026be1b95aa4bf4a2217554837f8 100644
--- a/VirtualRobot/Nodes/RobotNode.h
+++ b/VirtualRobot/Nodes/RobotNode.h
@@ -224,8 +224,10 @@ namespace VirtualRobot
         */
         virtual void setJointLimits(float lo, float hi);
 
+        bool isJoint() const;
         virtual bool isTranslationalJoint() const;
         virtual bool isRotationalJoint() const;
+        virtual bool isHemisphereJoint() const;
 
         /**
          * @param limitless wheter this node has joint limits or not.