This is a list of tasks that need to be done as well as possible enhancements
- Implement proper MDP algorithm
- Add reward propogation into hex_grid
- Define list of robot actions
- Change Robot.choose_next_pose to choose based on rewards
- Allow for robots of varying sizes
- Asynchronously scan and update map while choosing actions in another thread
- Dynamically increase horizon if no reward within horizon
- Synchronously create multiple robots with perfect communication
- Design map merging technique
- Design basic collision avoidance
- Update Markov Decision Process for all robots to operate synchronously
- Allow robots to operate asynchronously
- Modify MDP to allow for imperfect communication
- Create Voronoi diagram of map (NO LONGER USED)
- Modify MDP using distributed value functions for imperfect communication
- Add RangeFinder that works more realistically
- Make dynamically growing map i.e. no previous knowledge of map size
- Add negative reward to obstacles so robots stays away from them (by adding noise to movements in MDP)
- Add collision checking to world so robots don't accidentally enter objects
- Improve efficiency
- Add comprehensive unit testing
- Add comprehensive integration testing