Manipulability

Warn, stop or slow down a robot as it comes close to a singular pose.

Close to a singular pose a robot loses a direction it can move in, and a small tool motion can need a large joint motion. Manipulability measures how far the robot is from such a pose: it is 0 at a singularity and grows further away. Motorcortex uses it in two ways: a detector warns and stops, and a lookup table slows Cartesian motion down.

Using the standard robot GUI?

The detector is under Manipulability on the robot GUI’s Alarms tab. Press Save Settings to keep your changes. The lookup table has no GUI fields; set it in Motorcortex Desk.

Manipulability panel of the robot GUI: Input 0.056, an Enable switch, Too Low 0.005 and Low 0.015, each with an indicator light
  • Input: the current manipulability.
  • Enable: enable.
  • Too Low and Low: tooLow and low. The lights next to them are isTooLow and isLow.
Arm stretched out singular pose Arm bent far from a singularity manipulability grows Detector warns and stops Lookup slows Cartesian motion down speed factor, 0 to 1 Emergency stop 507 Warning 109 No action 1 0 x[0], y[0] x[1], y[1] 0 tooLow low manipulability, not to scale example: slows down near a singularity standard: 1 everywhere, no slowing down

Find your robot’s values

The value depends on the robot and has no unit, so look at it on your own robot first:

  1. In simulation mode, switch to manual joint mode. The detector is off in joint mode, so it does not stop you.
  2. Watch root/ManipulatorControl/manipulabilityDetector/input.
  3. Move one joint at a time towards a singular pose, such as a straight wrist or a fully stretched arm, and note the value where Cartesian motion should slow down, warn and stop.

Warn and stop

The detector is a window detector at root/ManipulatorControl/manipulabilityDetector/. It works only while the robot is engaged in manual Cartesian mode, or runs a Cartesian motion in automatic mode.

Parameter What it does Standard robot configuration
enable 1 switches the detector on 1
low At or below this value: warning 109, WA_CLOSE_TO_SINGULARITY 0.015
tooLow At or below this value: emergency stop 507, ES_TOO_CLOSE_TO_SINGULARITY 0.005
timeWindow How long, in s, the value must stay below a level before it trips 0
input Output: the current manipulability
isLow, isTooLow Outputs: 1 once a level has tripped, until the errors are reset

high and tooHigh exist too, but are not used.

Switching to manual Cartesian mode in a pose below tooLow gives the emergency stop straight away. Move the robot away from the singularity in manual joint mode first.

Slow down near a singularity

The lookup table at root/ManipulatorControl/manipulabilityGainLookup/ turns the manipulability into a speed factor, normally between 0 and 1, as in the Lookup row of the figure above. It draws straight lines between its points, and keeps the first and last value outside them. The factor slows down:

  • Cartesian jog, while you move towards a singularity. Moving away is not slowed.
  • Cartesian moves in automatic mode.

Joint jog and joint moves are not slowed.

Parameter What it does Standard robot configuration
numPoints How many points of x and y are used, at most 7 2
x The manipulability at each point. Must increase from point to point, or the factor becomes 0 0.005, 0.05
y The speed factor at each point 1, 1: no slowing down
gain Multiplies the result 1
output Output: the speed factor in use
  1. Set numPoints, then x from about tooLow up to where slowing down should stop, and y rising to 1 at the last point.
  2. In simulation mode, jog towards a singular pose in manual Cartesian mode and watch output: the robot should slow down smoothly before low is reached.
  3. Save the parameter tree.