Hello,
I’m working as part of a team that is trying to model a highly autonomous system using Capella and ARCADIA. We’re having a lot of trouble trying to work out the best way to model the parts of the system that perform intelligent decision making, e.g. prioritising one available action over a very large set of possible actions.
We’ve been reading this paper, which presents a model that appears like a greatly less complex version of our own:
In this model, there are four functions which may need to be performed, and an optional ‘heat the engine’ function which is only performed if the engine starts off cool. The paper describes performing the required actions in a different order depending on whether the engine is initially hot or cool. It also states that “Capella does not provide the exact equivalent of SysML control flows
between activities” and that “sequencing order is mostly contextual (and sequence diagrams and functional chains are meant to reflect that)”.
If we pretend that this model is actually describing an autonomous car servicing system rather than a human performing these actions, where would a description of the logic to decide what order to perform each action in live, and what format would this be in? (There are far too many actions in our system to model every possible scenario as complete scenario diagrams like this paper does, so we would like to model small, concise scenarios and describe which one is prioritised).
If I were using SysML, I would probably draw something like this for a low number of functions (actions), which describes the logic that the system uses to determine which function to perform first. I’ve made the control flows bold to distinguish them easily.
(I am assuming that the activities here set the system’s ‘oil_changed’ and ‘coolent_added’ variables to True once run, and these are initialised as False. I’m also assuming that performing the oil change will always take enough time to result in a cool engine.)
Only, ARCADIA doesn’t seem to have any ‘flowchart’ style diagram like this where intelligent decisions can be described.
There are also state machines in ARCADIA, which currently seem to be our only means of controlling a large number of functions and scenarios. Only, we are finding it tricky to define guards and triggers without variables in the model.
Are we going about this in the correct way? Please can anyone advise?
Thanks.