The robot software is organized hierarchically, where each higher level hides the details of a cruder lower level with equivalent procedures which are more refined in use. By this we mean that the higher levels treat robot motions in more abstract ways so it is easier to understand the meaning of the instructions at high level, and these higher levels will actually move the manipulator arm in more gentle, optimized motions.
For each level a GUI is provided which both exercises the features made available by that layer, and also is used to work out some of the parameterizations of the robot which are needed by that layer. In this latter respect, the user will be making simple changes to the source code for that level, so that the level understands the robot better and can perform more optimally.