I am using a six joint robotic arm (XArm 6). I would like to know what would be the best possible way to reduce singularities. I read that there are majorly three types of singularity for example

  1. Wrist Singularity - Happens between sixth and fourth joints.
  2. Elbow Singularity - Happens because of workspace
  3. Shoulder Singularity - First and sixth joints.

I read somewhere that there are minimum chances of singularity with less than six degree of freedom robotic arm. Please suggest if that is true. I was thinking of freezing or making changes in URDF such that sixth joint would be treated as fixed, any suggestion on that? What would be other things I can try to reduce the chances of my arm caught up into singularity.

enter image description here


1 Answer 1


My suggestion is to add constraints to the motion planner (see here how to set them in MoveIt -please be sure to read the tutorial related to your ROS/ROS2 distribution!-), rather than editing the robot URDF.

Editing the URDF, you are pretending your robot can not move a certain joint (or joint combinations), thus limiting its action. Giving constraints to the motion planner gives you the possibility to exploit all the capabilities of your hardware, and just prevent it from ending up in configurations that you (for any reason, not necessarily singularities) do not want to reach.

E.g. your idea of treating the sixth joint as fixed can be achieved setting a proper JointConstraint.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.