After some thinking process, I’ve split the robot into 4 subsystems
- Main Controller
- Physical Transportation Subsystem
- Power Subsystem
- Cat Interaction Mechanism
To illustrate the structure, I used the Block Definition Diagram of SysML (I hope, correctly):
As you can see, the CAN interface is already part of the architecture. It is so, because I want to reuse it in my other robot that already uses CAN but.
Meanwhile, I’m not sure 100% about the interface detail for the Cat Interaction Mechanism… Probably I’ll remove it, since I don’t have a reason to decide about it right now, and according to the Clean Architecture principles, decisions about details should be delayed as much as possible.
Next time I'm going to develop white boxes for the subsystems.