- Introduction
- Problem Statement
- Objective
- Expectations
- Methodology
- Architecture + ROS
- Simulation
- Visualisation
- Strategy
- Basic Actions
- Strategic Actions
- Supporting functions
- Results and Analysis
- Project organisation
- Conclusions (Omar)
- References (empty)
This project is about designing and simulating the RoboCup challenge - the football match with robots as players. The simulation involves two teams of five robots competing against each other. The robots are designed as two-wheel differential drive machines with an internal logic processor and a capability to communicate with different robots. Our design is presented in a simulated environment that takes into account all constraints of the challenge. The main building blocks of this project are the following:
- Robot Operating System (ROS) - a platform that combines all the design's components into one distributed system that treats each executable program as a thread in the given system.
- Python - a programming language used to develop the executable programs representing the robot's decision-making process, planning and actions.
- PyGame - a visualisation framework to display the main components of the environment: football field (e.g., goals, line separators), robot structures (chassis size, scale, orientation and form).
All of these tools allowed us to work as a team and structure our solution as fast-paced sprints alongside long-term milestones.
The project focuses on designing with a team of collaborative robots that can compete with opponents in a simulated game. This problem was split into several sub-problems to be tackled one by one:
- System Architecture - finding an optimal system design to represent and structure our execution flow.
- Simulation + Visualization - implementing an efficient representation of the problem through simulation of the physical elements of the environment and visualising its different components appropriately.
- Strategy and Decision Making - implementing from scratch the theory behind the strategy and decision-making on a team level.
The main objective is to generate appropriate solutions for the sub-problems stated above. Dividing the project into sub-modules allows us to interpret the solution as a bottom-up approach and facilitates assigning tasks to each team member. As stated earlier, the project outline is split into short-term sprints and long-term milestones. Hence, each sub-module is linked with a milestone and each sprint focuses on achieving a specific milestone.
The robot teams are expected to complete a full football match with all rules followed and actions supported with behavioural reactions and impulsive response in the environment.
- Team 0 is expected to be a semi-smart team. It means that the players will make a minimal effort - enough to cooperate and compete, but not as effective as a high-performing team.
- Team 1 is expected to have superior decision-making and strategy, and to have the advantage in both scoring and ball possession in a football match.
Hence, our main expectation is that Team 1 will win each match and overperform all Team 0's strategies.
We have chosen Python as it is the most popular scripting language with great community support and a number of open-source libraries. Moreover, Python is a general-purpose language, which means any practice of it comes under the category of "Transferable learning" (i.e., the knowledge of the programming language carries over to application in other growing fields such as A.I. and Data Science).
In addition to Python, we have decided to use Robot Operating System (ROS) as a backend infrastructure for the project. ROS is the fastest-growing framework for robotics application with a great open community and many available packages. Specific reasons why we selected ROS are further discussed in the Architecture section.