Cooperative Supporting Technologies
Engineers have been used to build complex systems in which the various parts –implicitly- cooperate with one another to achieve a desired goal/functionality. Design methodologies have been created to simplify the design of the various components and make sure they fit with one another and their overall interworking achieve the desired behaviour.
Robots in a production line are cooperating with one another but the cooperation is actually a predefined set of individual goals (robot 1 move the object 90° clockwise, robot 2 solder the object with a component that has to be taken from the moving beltway…). Hence we cannot talk, really, about two autonomous cooperating systems.
In case of autonomous systems different sort of technologies are required in their design and thereafter in making cooperation possible and fruitful.
There should be a way for each autonomous system to internalise a “global” goal and a way to be aware of how that goal can be achieved through cooperation. An example is a thousands of micro robots that are given the goal of creating a shape by aggregating in some specific way that has to be determined by the robots themselves. There is no command to each specific robot to move in a certain position, rather a general instruction to create the shape of a circle, a square and so on.
There are different approaches, from a technology point of view, and a lot of work remains to be done.
One approach is viable when each autonomous system has a significant processing/storage capability to the point of creating a virtual image of the overall context. This may be the case for self-driving cars that can cooperate to avoid unnecessary use of resources (finding the best way to go from point a to point b avoiding clashes, i.e. creating traffic jams). Each car has its own virtual context and can share it with the other cars. Each context includes the specific goal for each car and an overall goal for all cars (avoid the creation of bottlenecks). By having an overall visibility and sharing the same overall goal each car will negotiate the next step with the other cars thus implementing the overall goal through cooperation.
A subset of this approach is characterised by the capability of autonomous systems to engage in a goal orientated conversation to negotiate a set of actions to be performed in parallel or in a sequence to be jointly defined to achieve a goal. This is the approach followed, as an example, by Rethink Robotics with Baxter, an autonomous robot designed with a human friendly interface supporting information exchange with humans in a collaborative framework (a clear step towards Industry 4.0 and beyond).
A completely different approach is the one where each autonomous system participates to a multitude of similar systems (similar in the sense of subscribing to the same set of rules in analysing the context). This is the sort of collaboration seen in swarms. Here the technologies required are the ones for modelling behaviour of thousands and more interacting autonomous systems bound by strong and weak relations (with the latter usually being more important than the former) along the science of “small worlds”. Interactions here are mostly with the context, not with a specific entity in the context. A change in an autonomous system behaviour results in a change in the context that is perceived by other autonomous systems that in turn will change their behaviour accordingly. The set of these “local” changes results in an form of emergent cooperation.
The whole area of cooperative support technologies is in its infancy and it will progress significantly in the next decade as more and more autonomous systems will interact with one another.