Ticket #125 (new feature) | |||||||||||||||||||||
Opened 7 months ago Skiller Dependency Enforcement
Description
Currently skills can be executed in an arbitrary combination, trusting the developer to know what he is doing. That especially means that there can be conflicting executions of a skill, e.g. two calls to goto in different directions.
Skill dependency information is already defined for each skill, but currently not enforced. The idea is now to use this information to ensure that there is always only at most one running instance of a skill, unless a skill is marked stateless. This is especially relevant when aiming for a higher level of parallelism in ticket #125.
The dependency information will be enforced on execution of a skill and cause a failure if an already-running (sub-)skill is called.
The decision has to be made if the dependency checking is done on initial execution of a skill (e.g. check if all skills the to-be-executed skill depends on can be called), or to check only if a sub-skill is actually called. The former should give more stable results, e.g. more errors are detected at design time and this should depend on the more coarse agent state, while the latter is more precise and will allow the execution of two skills which share a common dependency and only fail if the try to execute it at the same time. Currently there is a tendency to implement the former.
This solution would create a dependency tree and ensure that any node is unique in the tree, effectively allowing this to be implemented as a list/array.
Particular skills might be marked such that they are not regarded for dependency checks. These are stateless skills, for example the Nao skill to switch LEDs. An appropriate header field has to be added.
Note: See
TracTickets for help on using
tickets.
| This list contains all users that will be notified about changes made to this ticket. These roles will be notified: Reporter, Subscriber, Participant
| ||||||||||||||||||||

