Distributed Processing

Distributed Processing can easily be achieved in ArmarX with the ArmarXManager and ManagedIceObject.

Lifecyle of a ManagedIceObject managed by the ArmarXObjectScheduler

The ArmarXManager is an administrative class that manages the complete lifecylcle of one or more ManagedIceObjects. ManagedIceObjects are objects that should be reachable via network and offer an implementation of an interface (e.g. armarx::KinematicUnitInterface). An new component that should be reachable via Ice just needs to inherit from ManagedIceObject and the Slice Interface it whishes to offer. Afterwards it needs to be added to an ArmarXManager, which checks all the dependencies of the object and schedules it afterwards for starting. The ArmarXManager can easily instantiated by specifying the IceGridRegistry parameters (host and port). This is done automatically if the armarx::Application is used. In case configurable objects are needed the armarx::Component class can be used, which is just an extension of ManagedIceObject with Properties.