Capstone Project: Introduction
This semester I’ll be graduating with my M.S. in Computer Science with a concentration in Artificial Intelligence at Fordham University. For my last semester, I’ll be responsible for completing a capstone project which will serve as a culmination of everything I’ve learned since beginning my venture into the field, and will hopefully be representative of my abilities.
The project I’ve decided on is a traffic simulator made in Unity, with drivers powered by neural networks. The goal of the project is to create a game that will simulate the behavior of a traffic system, and allow users to place custom roads and traffic patterns to see how the cars will behave.
Though few people saw it, I began a similar project a few years ago, although it differed in that I tried to manually program the cars’ behavior, rather than using a neural network. It ended up being really quite difficult to get the cars to behave in the way I wanted them to, and the project sits gathering cobwebs in my projects directory.
All of that aside, I’m rather excited to get some work done on this project. I feel that it’s a really nice intersection of what I’m familiar with (programming, and development in Unity) and what I’m interested in learning more about (implementing neural networks to solve complex problems). I think it’s also a good opportunity to make weekly updates to reflect my progress and keep myself accountable for the work I’ve said I would do.
In short, the project will be broken up into the following sections:
February | March | April | May | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Task | Week 1 | Week 2 | Week 3 | Week 4 | Week 1 | Week 2 | Week 3 | Week 4 | Week 1 | Week 2 | Week 3 | Week 4 | Week 1 |
Simulation Setup | |||||||||||||
ML-Agents Setup | |||||||||||||
ML-Agents Training & Testing | |||||||||||||
Integrate ML-Agents into Simulation | |||||||||||||
Polish | |||||||||||||
User Testing | |||||||||||||
Done! |
- Simulation Setup (weeks 1 - 4):
- During this stage, I’ll be creating a modular road placing system which will allow me to create training and testing environments for the ML-Agents, and will allow the user to create their own environments.
- For this, I’ll need to implement a way for the drivers to recognize where to drive (pathing system), a way for road pieces (and their respective paths) to connect together, and a level editor to easily place and connect everything.
- ML-Agents Setup (weeks 3 - 5):
- Here, I need to create an ML-Agent car controller with relevant percepts and actions. I’ll also need to create robust testing scenarios for the ML-Agents to learn from.
- I’ve recently been seeing videos on using “Curriculum Learning” with ML-Agents to incrementally teach an agent harder and harder tasks. I think I’ll be using this to train the agents for the simulation.
- ML-Agents Training & Testing (weeks 5 - 9):
- In this stage (which truthfully I foresee being the most difficult), I’ll need to train (and troubleshoot) the ML-Agents in the training scenes I will have set up in the previous step.
- The end goal is to have a network capable of navigating agents through the city streets, obeying traffic laws and avoiding hitting other vehicles.
- Integrate ML-Agents into Simulation (weeks 9 - 10):
- Once I’ve successfully trained the agents and have a network capable of navigating arbitrary traffic environments, I’ll need to integrate the drivers into the rest of the simulation.
- This will include spawning them in preset and user-generated scenes, and ensuring they initalize correctly and begin navigating without issue.
- Polish (weeks 9 - 11):
- This stage is little more than converting the mess of a project I will have completed into a polished, usable product.
- I’d like to add tutorials, refine project assets, and potentially add more features to the end product if time permits.
- User Testing (weeks 10 - 11):
- During the final stage of polishing the project describe above, I’ll need to test the project in a variety of scenarios to ensure it is working as intended.
- I’ll likely give the program out to a number of friends and peers to try out and let me know of any feedback for fixing or improving it.
- Done! (hopefully week 12)
- I’m hoping that by the first week of May, I’ll have a fully functional, polished, and usable project that I can present to my class and be proud to display.