Search code examples
umlmulti-agent

Component diagram for a cooperative multi-robot system


I would like to make a component diagram for a multiple robot coordination system.

I would like to show on the component diagram that the sub-component "Perception" of each "Robot" component communicates through an interface with each other. Indeed, the sensors of all robots are used in order to estimate the position/velocity of each robot, it is a cooperative sensing.

How can I do that ? Should I have an interface which would be both provided and required by the component "Robot" ?

Thanks.


Solution

  • For this type of system you are in position to use full power of UML and make really effective documentation. You will most likely need some (or all) of the following diagrams:

    1. Component diagram - to show the "big picture" and the main parts of your system ant their interfaces and dependencies. Components are "black boxes" here and will be detailed in the following diagram
    2. Composite structure - are perfect to open up the components and show their internal structure. You can take "black boxes" and their interfaces as kind of input to this work. Each component (except the external ones) should be modelled internally. This kind of diagrams lets you use the whole-part paradigm to model internal structure as a network of interconnected elements. Previously detected interfaces will be used here to show how they are actually implemented.
    3. Class diagrams. If you need to further specify the elements of internal structure (their attributes, methods, associations, etc), this is the diagram to draw.
    4. State machines. In embedded real-time systems, lots of classes are active and have states. Identify those classes (or even components) and use state diagrams to show their internal logic.
    5. Sequences and interactions. These diagrams will help you to specify how different elements of your system work together to implement different scenarios.
    6. Deployment diagram. As robot is a piece of hardware and these components run on it (or them, if there are more than one hardware node) you might want to show how the components are distributed over the hardware structure.
    7. You could also have a look on timing diagram, relativelly new one, designed especially for real-time systems. It might come on handy if you need to express time restrictions, durations, etc.

    If you are new to UML, I would recommend to start with components and deployment. They are relativelly easy to learn. As you feel understanding and need to express your ideas further, dive in the composite structure and states. And finally classes.

    Have fun!

    EXAMPLE

    This is how I understand your model and its elements. This extends my comments.

    Explanations are in comments and in the diagram notes.

    A component diagram:

    enter image description here

    A component instances' diagram: enter image description here

    Note that the first diagram should be extended with the "connectivity rules" that define all valid connectivity possibilities. Is there only one CentralManager? Must each Robot be connected to CentralManager? Can a Robot talk to itself? And so on...

    These and other questions should be modelled separatelly. On class diagrams benavior diagams, according to concrete details.