i am trying to find the inverse kinematics for quadrotor with 2Dof robotic arm, which has first joint rotation axis perpendicular with second joint. So, for the inverse kinematics i use two equations

theta 1 = atan2(z,y)

theta 2 = atan2(x, (sqrt(z^2 + y^2)-L1)), where x,y,z are end effector position

If I use these two solution in jacobean matrix for finding the joint velocities: thetadot = pinv(J)*(x,y,z)dot, at some point i have singular configuration. For finding the determinent of jacobean matrix, i consider the the determinant of the (J'*J) because my jacobean is a 3 * 2 matrix.

So my questions are

  1. are two equations for finding theta 1 and theta 2 correct?
  2. how can I avoid the singular configuration?
  3. when the jacobean matrix is zero, how can i find the joint velocities?
  • $\begingroup$ On Robotics we are fortunate enough to have MathJax support enabled, allowing you to easily create subscripts, superscripts, fractions, square roots, greek letters and more. This allows you to add both inline and block element mathematical expressions in robotics questions and answers. For a quick tutorial, take a look at How can I format mathematical expressions here, using MathJax? $\endgroup$
    – Ben
    Feb 2, 2022 at 17:47
  • $\begingroup$ This paper treats the 2-D case, but perhaps it will give you some ideas. Most of the treatments I have seen are highly abstract, but this author (who is still at MIT after almost 50 years since he wrote the paper) gets "down and dirty". $\endgroup$
    – guero64
    Feb 15, 2022 at 18:03

1 Answer 1

  1. without a daring it is hard to tell if the equations are correct. L1 is not explained, exact configuration is also unclear.

  2. The simplest way is to see if at the considered pose you are at or near a singular pose is to check if determinant is zero or approaching zero. The simplest hack to void a singular pose is to just add a small offset to the point considered in the direction of your path. The offset should be large enough to not trigger the singularity check, i.e. the determinant at the offset point should not be zero or near zero. What near zero is, is your decision. The smaller the threshold, the more precise your robot will be, but, since you get closer to a singular position, your robot's on path velocity will be slower. This is due to the fact, that at the singular point, you would need infinite velocity on at least one axis to keep a constant on path velocity, so as you approach the singular pose the maximum speed of your axis will determine a slower and slower on path velocity. Adding a large offset to the point(s) in question will cause a path deviation on the robot. The larger the path deviation, the less velocity you will use and the more precision you lose. So it is a tradeoff between precision and on path velocity.

  3. You cannot. I mean, even if you can, it does not help you, since at least one axis will need to have infinite velocity to maintain a constant, non-zero on path velocity. You can define a (hyper) sphere around the singular pose and just do not bother with anything inside that sphere. If you would end up inside, just go on path to the next point outside the sphere. Again, how large the sphere is, is up to you, the larger the sphere, the faster your on path velocity will be, but you will have a lower precision.


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.