The final software is included with the final webots world within the 'final_comp' folder here
- Overall system
- Controller structure
- Robot manager - Path planning, low level robot states
- Environment manager - Mapping and low level decision making
- State manager - High level decision making
This section will provide an overview of the control flow of the full system, including a simplified version of subsystem diagram and decision tree
The controller structure is based off of a 'master'/'slave' system, whereby the master controller has almost full control over the low level actuation of both robots. The following diagram illustrates the overarching flow of information within the system:
A significantly simplified overall decision process for the system is show below - a more complicated and extensive graphical representation of the binary decision tree is shown here: TODO: ADD IN LINKS.
Throughout this whole process, the main focus has been on creating a well integrated phsically reliable system – something that will actully work in reality. Notably, we have included significant sensor noise (and after the first competition restricted range). As such, our algorithms reflect the robust and adaptable control needed to function in a real-world situation:
- We utilise mapping with known poses to continuously update our environments binary occupancy grid. As such, we are able to react even to non-static environments.
- Our unique approach to detecting blocks given a noisy an often-incomplete occupancy grid is to perform a difference of gaussian blob detection algorithm. As such, we are able to rapidly generate highly accurate maps of the environment from real world equivalent sensor data.
- We use A* to then generate the fastest paths to our target
- We approximate differential drive vehicle dynamics using spline curves to generate a more optimal path condusive to our mechanical design
- We use adaptive systems that allow the robot to safely path plan out non-driveable area (Dijkstra)
- We employ approach vector weighting to find the optimal approach angle for each block under more difficult conditions
- We leverage the occupancy grids binary entropy (Finding the highest regions of uncertainty) in order to explore for new blocks.
- The modular controller allows for rapid debugging and easy prototying as a result of the binary tree datastructure which we use to generate robot states and transitions.
Click for more details on mapping and exploration
Click for more details on path planning and low level robot control
Click for more details on the overall strategy and decision tree