Having gotten the level 2 software to work, and having played around with it, you will by now realize that it is in fact quite difficult to move the arm to a certain position when you can only move one axis at a time. The purpose of the level 3 software is to refine this by introducing commands
The need for the second of these items is a consequence of the first: if, for example, when you move the shoulder the elbow moves automatically to compensate for the direction change, you no longer know (without a little calculation) the position of the elbow. If you are able to make relative movements, however, the need to know the exact numerical position of all the joints disappears.
Now that the Level 2 API has introduced the robot object concept, we extend this in Level 3 to include information on the dynamic state of the robot, which means, in particular, the current angles at which all the axes are set. This then allows us to compute relative moves, and the orientations of the limbs of the robot arm in space. Further, we can arrange to move some of the axes (e.g. the shoulder) and another axis simultaneously but oppositely (the elbow) so that the upper part of the manipulator arm, including the gripper, maintain their absolute orientation in space.
This activity is made possible by the foresighted design of the Level 2 API. There we allowed for the implicit extension of the axis objects of which the robot object is composed, by making them lists which are easily appended with new informationthe dynamic state of the robot.
We also take this opportunity to impose limits on the extents to which we try to move the axes. Arguably, we could have done this at Level 2, but we wanted to keep that simple and in any case it makes sense to manipulate this information along with the dynamic (although it is not really) state of the robot; for example, we must compare dynamic changes with these limits.
Note that the ability to truely place the components into geometrically significant positions cannot happen until we properly codify and calibrate the geometry of the robot arm; this will take place when we get to level 3. However, the calibration requires the facility to make relatively parallel moves, hence we must develop this level of control before the full calibration exercise can take place. We are able to make this relative parallel motion at this low level of control by virtue of the fact that the servo motors in the axes are physically calibrated in the way they convert microsteps into angular displacements; we can be very certain that moving one motor contrary to another but by the same relative amount, that the two motors will both move (oppositely) by exactly the same angles, thus preserving by mechanical construction the relative parallelism of the gripper.