Artificial Intelligence

On the AI part of the wiki you will find all the theory and reasoning behind the structure and implementation of the code for our AI. Our codebase is fully open source and can be found on Github. In the code you can find some additional documentation that is related to specific parts of code. We also created a GitHub Pages that shows this code related documentation more comprehensively.

The Artificial Intelligence (AI) system used within RoboTeam Twente (RTT) is referred to as Skill, Tactic, Role, Play (the R of Role is silent as it is a differing interpretation of the original Skill, Tactic, (Role,) Play (STP) that will be explained later). It is a hierarchical architecture first introduced into the Small Size League (SSL) RoboCup in 2003 by the team CMDragons.

  • AI Artificial Intelligence.
  • AP Application Manager.
  • RTT RoboTeam Twente.
  • SM State Machine.
  • SSL Small Size League.
  • STP Skill, Tactic, (Role,) Play.
  • (E)TDP (Extended) Team Discription Paper.

In short, the structure of STP is as followed; Skills are the building blocks of Tactics, Tactics are the building blocks of Roles, Roles are the building blocks of Plays. Every part of STP has there own function which should not overlap and be as short as possible. All decisions are made in the AP or in the Play. AP runs the loop (Algorithm 5) every tick. In this tick, the following happens:

  1. [ApplicationManager] Update theworld to all modules (excluding the play).
  2. [ApplicationManager] Check if current play is valid, if yes skip to step 7, or that the interface changed it, if yes skip to step 6.
  3. [PlayChecker] Get all valid plays.
  4. [PlayEvaluator] Determine the scores of the valid plays.
  5. [PlayDecider] Pick the best scored play.
  6. [ApplicationManager] Change the odd play to the new play.
  7. [ApplicationManager] Update the world to the current play.
  8. [ApplicationManager] Run update of the current play.
  9. [Play] Calculate all the STPInfos.
  10. [Play] Run all Roles updates.
  11. [Role] Run current Tactics.
  12. [Tactic] Run current Skills.
  13. [Skill] Create command for Robot.
  14. [ApplicationManager] Send robot commands.