Planet exploration
Details
Project Type: University/group project
Technologies: Unity + C#
Source code (C# scripts only): https://github.com/JoniBife/Planet-Exploration
Technical report
About
This project shows the behavior of a multi-agent system where a group of intelligent rovers of two types search and collect different kinds of resources spread throughout the surface of an unknown planet. One type of rover focuses on searching(i.e. scout) while the other on collecting(i.e. collector).
Interesting technical achievements
Procedural scene generation. The user can specify the radius of the planet, the number of rovers of each type, the number of resources of each type and a timescale to speedup the process of gathering the resources. Given this parameters our application will generate a planet with all resources placed randomly on its surface and the rovers will collect all the resources, no matter their configuration.
Reactive architecture. In this version of the project we used reactive agents for both rovers with a subsumption architecture. The scouts wander around the planet until they find a resource/broken rover (i.e. a point of interest). Then they go back to base while broadcasting the location. The collectors will wait in base for a task from the scout, when they receive one they go to the point of interest’s location, accomplish the task and go back to base waiting for further tasks.
Hybrid architecture (deliberative and reactive). In this version of the project the scouts travel the surface of the planet and create a map of the resources position and any other rovers that have run out of fuel or are broken. This map is then given to the collectors who build a path to collect as many resources as they can and fix other broken rovers, in the most efficient way.
While both arechitectures were able to successfully accomplish the task of collecting all resources the hybrid architecture was the one that performed the best, especially on very large planets, filled with resources.