# Manipulability Measures of Serial Robots?

I need to create a dataset of dexterous workspaces for a significantly large number of serial robots with varying DoFs. My question is if there is an efficient way of measuring a robot's manipulability. Most solutions that I have found are based on inverse kinematics, which in my particular case would take too long. Are there any time-efficient alternatives?

The most common manipulability measure is by Yoshikawa  which is purely kinematic, ie. it ignores dynamics such as inertia and motor torques. It is simply $$\sqrt{\det( J J^T)}$$ where $$J$$ is the manipulator Jacobian that gives spatial velocity in world coordinates. The measure says something about how spherical the 6D velocity ellipsoid is.

The measure is a bit problematic because it is a norm of mixed units (m/s and rad/s). It can be more insightful to take the translational 3x3 part (upper left sub matrix) or the rotational 3x3 part (lower right sub matrix). This is discussed in §8.2.2 of .

Using the Robotics Toolbox for MATLAB we can easily compute this measure

>> mdl_puma560  % define a robot model and some poses
>> p560.maniplty(qn)
Manipulability: translation 0.111181, rotation 2.44949
>> p560.maniplty(qz)
Manipulability: translation 0.0842946, rotation 0
>> p560.maniplty(qs)
Manipulability: translation 0.00756992, rotation 2.44949
>> p560.maniplty(qr)
Manipulability: translation 0.00017794, rotation 0


where qr = [0, 1.5708, -1.5708, 0, 0, 0], qs = [0, 0, -1.5708, 0, 0, 0] and qn = [0, 0.7854, 3.1416, 0, 0.7854, 0].

We can see that pose qn (elbow up, wrist pointing down) is quite well conditioned whereas qr (arm straight up) is close to singular.

If you have Denavit-Hartenberg models for all your robots then this would be an easy task to automate.

Taking dynamics into account involves measures based on the force ellipsoid and is discussed in §9.2.7 of . It requires that you know the inertial parameters of the robot which in general is not the case. Use the 'asada' option to the maniplty method to compute this.

 A geometrical representation of manipulator dynamics and its application to arm design. H. Asada H, 1983, J.Dyn.Syst.-T ASME 105:131.

• This might seem like a stupid question, but could you clarify what qn,qz,qs, and qr stand for? More specifically how they are generated. I know that in general the vector q=[q1,q2...qn] is used to describe a robot's joint configurations, however I was wondering if there is a significance to the generated configurations. I am using DH-parameters in order to model my robots. My idea is to randomly generate different configurations and to calculate the manipulability in the points reachable by these configurations. I should also note that I am working with joint limitations. – user22875 Apr 28 at 11:21
• The reason for the above comment was because it wasn't working quite as I had expected. I only just recently realised that it was because the rest of my code was working with degrees for the angles theta and alpha. Upon converting those to radians, the results became appeared more realistic. Thank you for the helpful and insightful answer. Out of curiosity, I would nevertheless be interested in the significance of qn, qz, qs, and qr if you would be willing to shed some light on that. – user22875 Apr 28 at 11:46
• Never use degrees, it always leads to confusion and errors. – Peter Corke Apr 28 at 20:09
• They are various robot configurations, just cryptically named. qr is the ready position, arm straight up; qz is all zeros and has the upper arm horizontal and the lower arm vertical; qs is the arm straight out and horizontal; qn is nominal, elbow up, wrist pointing down, as if for picking up from a table, reasonably far away from singularities. – Peter Corke Aug 5 at 9:47