2
$\begingroup$

What method is “better” for solving inverse kinematics for a robot arm: matrix algebra or trigonometry?

To define “better”:

  • efficiency/performance vs memory usage
  • generality (how well can it be adapted to different arm configurations)

I know trigonometry/geometric methods get very complicated when solving for more that a few DOF so matrix algebra would probably be the best solution there.

But for 2-3 DOF robot arms which method is preferred?

Update: As others have pointed out and more research has showed me, using matrix algebra compared to trigonometry for increase kinematics doesn’t affect performance. They are just different methods of setting up and solving the inverse kinematic equations. Once you solve the IK equations using either of these methods, it’s implemented the same way in the code. I think I prefer the matrix method for solving IK because it’s a little more general that trigonometry, it scales to more joints more easily, and I’m already using matrices for forward kinematics so it provides a better symmetry.

$\endgroup$
2
  • $\begingroup$ upvote for making the effort to define what "better" means to you $\endgroup$
    – jsotola
    May 9, 2021 at 23:05
  • 1
    $\begingroup$ I am not sure I completely understand the reason for your question. When computing inverse kinematics, you have a set of equations (in algebraic form or in matrix form) representing the robot configuration, and you have to solve for the joint angles. I have never seen an algorithm that can do that for a general case. So you use either approach to find the joint angles - but when implementing these into code, the method you used to determine the joint angle equations doesn’t matter. You work out the efficiencies after solving the equations. $\endgroup$
    – SteveO
    Jun 11, 2021 at 4:14

2 Answers 2

2
$\begingroup$

I believe it is standard to use "Matrix Algebra" i.e. matrix representation for solving kinematics-related problems (more generally, solving system of equations) rather than "Trigonometry". Matrix representation is compact and more efficient computationally speaking.

$\endgroup$
1
$\begingroup$

I may not be the most experienced person to answer your question. However, I wanted to share my experience from a year ago.

On an online course I learned about the Screw Theory, which seemed like a very good way to approach the Robot Arm Kinematics. During an homework/mini-project of the course I needed to calculate the Inverse Kinematics of a 6-DOF robot arm using the Screw Theory and an analytical solution. You may already know this, however I want to explain this solution in few sentences. You calculate the Screw Axes for all of the joints (which was pretty straight-forward and easy, this will not be very hard if we have good visual model of the robot) and construct the Screw Matrix. Then for the given end-effector configuration, you make an initial "guess". Then, you run your algorithm, which was an iterative Newton-Raphson root finding method, to find the solution of the Inverse Kinematics. One draw-back of this method was the initial "guess". If you do not enter a good initial guess, your algorithm never converges to the solution. My potential solution to that was to create a Look-Up table of Forward Kinematics results which than could be used to pick a proper initial guess. However, I felt lazy and never tried it.

Since you asked for a 2-3 DOF Robot Arm, I would go with an Analytical Solution. Especially for SCARA type Robot Arms, Inverse Kinematics calculations are not too hard to handle and can be generalized for certain types. Also, in the end, you are left with equations that yields the joint displacements in terms of the end-effector configurations. Therefore as I said, I would go for an Analytical Solution for a Scara-Type Robot.

Also, maybe you can check "MoveIt for ROS", which provides an amazingly extensive framework for Robotics manipulators.

$\endgroup$
1
  • $\begingroup$ Thanks for your response! I'll check out MoveIt. $\endgroup$
    – Jacob G
    May 13, 2021 at 0:31

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.