Capstone Project: Introduction


Github repository for the project here.


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.
I intend to make weekly updates, detailing my progress as I get work done on the project. You'll be able to view updates at the repository here and my website here.
⇠ BaristaVR Dev Update #1
Capstone Project Update #1: Creating a Road System ⇢