As an experimental project, ACME is under constant development. This means that even the current design is subject to change. As a result, we decided to implement the simulator at a low level, placing a minimum of constraints on the further development of ACME. It should be possible to use our simulation even in a changed ACME environment.
Our goal was to simulate the RCCL connection to the real robots. ACME distinguishes internally between a RCCL server and a RCCL client. In simulation mode, the two RCCL connection objects (client and server) are replaced by a simulation client/server. Since the simulation classes implement the same interface as the original RCCL classes, a simulation is programmatically transparent to the end user.
The simulation server dispatches motions according to their target device (e.g. Puma robot or Linear Stage). Each device corresponds to a DeviceSimulation subclass. Objects of this class perform the necessary kinematic computations on each motion, then pass the processed motion to the viewer. The viewer object extracts the necessary information (currently, the desired joint values) and hands it to the appropriate scene graph object for rendering and collision detection.