The basic components are: the WheelchairManager, that controls one Rolland. There is one instance of it per Rolland, and the coordination is done by the TransportationManager (non-basic). He gets the requests which transport is required from where to where. It knows about the different wheelchairs, the routes the different wheelchairs have planned, does conflict detection, conflict resolution by changing routes, issues stop commands to wheelchairs. Then there is the IlluminationManager (basic), who controls the lamps in the different places as well as the HeatingManager (basic). The PersonalManager coordinates the actions for typical actions, like “going to bed”: it issues the transportation requests, sends illumination and heating allocation/deallocation requests, etc. Maybe we need a RoomManager tracking who is where, a necessary information for Heating and IlluminationManager, but this is also very close to the information required by the TransportationManager, who needs to know who (including wheelchairs) is where for locking status of position in the route graph.
Controlling multiple wheelchairs such that no conflicts occur (deadlocks, collisions) is a known problem in the area of AGVS (Autonomous Guided Vehicle Systems). This page gives an overview of some for the transportation scenario relevant approaches.