CZ3004/SC2079: MDP

Algorithm Simulator

This is the simulator for the first task of MDP. Specifically, the first task involves 4-8 10cm x 10cm x 20cm (W x L x H) obstacles that are placed in a 2m x 2m area. The area can be divided into 10cm x 10cm squares, and the obstacles will be placed in one of those squares. One of the four sides of the obstacle has a symbol card pasted on it (refer to the symbol recognition section to find out more). The objective is to navigate the robot to each symbol card and recognize it successfully in the shortest time possible. The algorithm team is in charge of the path finding and navigation, which is what the simulator below is for.

The algorithm and simulator repositories can be found here:

Algorithm has been tested to be able to handle all the edge cases that we can think of, but of course it is far from perfect. As teams are given 2 minutes of preparation time before the robot is supposed to start and after the reveal of the obstacle positions, we conduct an extensive search of all possible paths to find the shortest possible. As such, for situations where there are 7-8 obstacles, the time taken to run the algorithm can be upwards of 1 minute on a 2023 Macbook Pro M2 Max. For the simulator below, it is recommended against running a 7-8 obstacle simulation as it will take a long time to load. Please obtain the source code from the link above and run it locally if you wish to simulate 7-8 obstacles.

Robot Position

Add Obstacles


Some Thoughts

By making most of my source code and this simulator available, I hope that MDP will change to not be so boring and repetitive where teams just reinvent the wheel every single semester, or that future teams will be able to build on top of this and make it better.

I find that MDP is also incredibly luck-based where one or two skilled persons in a team can pretty much change the entire outcome for the group. If you are unlucky as to get a group of inexperienced people, you have to start from scratch and go blindly into the module, and work like hell within just 6 weeks to get something viable. This should not be the case, and I hope that my repositories can be used as the baseline for future teams to build on top of.

Post graduation update: SCSE does NOT care that you reuse code from past semesters (Just take a look at the Android controllers from the past few semesters). At least from what my juniors told me, the entire codebase across all my MDP-related repositories is still entirely reusuable for 2023 Semester 1.