We located three points in each territory of the City of Miasmador that the robot would navigate between: a point in front of the gearbox, a point in front of the lever and the intersection of the two perpendicular lines from these two points to the respective walls (which we termed "pivots"). The robot would be able to freely navigate between any two territories by navigating between the pivots.
Illustration of points for bottom-right territory (Map courtesy of 6.270 organizers)
We divided the game into three time periods:
Since teams were not allowed to capture territories in the first 10 seconds but would gain more points (30 compared to 10) for exploring a new territory, we decided to make the robot go a full round around the field during this period to get the maximum possible points (150) for the period. Since Scavenger was a polite robot, we followed the driving convention for the game and drove counter-clockwise. We were able to navigate a full circle around the field in the exploration round for most of our trials.
In the next 80 seconds, our robot captured territories, mined balls and deposited balls. Before each of the actions was executed, tests were conducted to determine if the actions could be completed successfully (this depended on the position of the opponent and the rate limit of the various territories). The territory to be captured was determined using the function determineCaptureTerritoryPeriod2(). The priority of determination was mainly in this order: (1) avoid the opponent; (2) be in a territory where balls could be mined; (3) be in an opponent's territory or an uncaptured territory to capture it. The priority slightly varied depending on the exact position of the opponent.
In the final 30 seconds, our robot calculated the territory with the highest potential points in the given amount of time. It continued to capture territories, mine balls and deposit balls. A higher emphasis was given to depositing balls, followed by mining balls, to maximize the points that could be obtained given that some tasks were more time-consuming than others (and that some territories were further away than others). In particular, we lowered the threshold for the number of balls to be collected before the robot would deposit balls, and increased the likelihood that the robot would mine balls from a territory where it could deposit them immediately after. This determination was done using determineCaptureTerritoryPeriod3().