Hey, my name is Alanna! I am a final-year Creative Computing student. I have a particular interest in API development and Data visualisation. During my time at IADT, I worked on various projects, ranging from designing web APIs to making 3D games in Unity. As much as I loved working on each project, I discovered my interest lies in data handling and manipulation! This is why my final year project revolved around the simulation of traffic and road generation.
This video demonstrates the functionality of this application and discusses the general principles behind it. It also contains a brief introduction to the issue being examined and the thought process involved in handling it. Additionally, it briefly discusses the technologies used throughout the application's development and details the steps involved in creating new traffic flow for each network.
Unity can handle live data feeds, which ensures up-to-the-minute data transfer. The vehicles are updated synchronically between Unity and SUMO every 0.2 frames to remove or create new vehicles entering or leaving the simulation, making the initial rendering less taxing on the machine. This process also updates the vehicle's position in unison with what is happening in SUMO. This makes vehicles able to react to traffic congestion and lights correctly in Unity.
The road network is taken from OpenStreetMap to ensure the accuracy of road information. This includes details like speed limits, road lengths, and road shapes. Thanks to the information retrieved from OpenStreetMap, I can generate the roads and junctions by using a combination of different methodologies and algorithms. For example, windy roads are handled by an Ear Clipping Algorithm, which works by dividing the road polygon into triangles and progressively cutting them into smaller and smaller shapes. The junctions are managed by the Delaunay Triangulation. This algorithm starts by creating a large triangle that encompasses the junction polygon. It then subdivides this large triangle into smaller triangles within the polygon.
The traffic lights are displayed in Unity, with their positions and statuses updated in real-time. In SUMO, each traffic light is linked to a junction, which allows me to retrieve the position of the Traffic Lights. The direction of the traffic light is then calculated by determining the center vector from the associated lane polygon to the center of the associated junction polygon. This vector is then used to find a perpendicular line, which represents the traffic lights' direction. The orientation angle is then calculated based on this direction vector.
My local neighbourhood inspired me to create the traffic simulation. Crossing a heavily trafficked road locally that safely leads out of the neighbourhood is challenging. We are rather enclosed, surrounded by fencing and a river, which gives us few options for getting out of the neighbourhood. The purpose of this project was to simulate the road network and show where the issues may arise, but also make it possible for people in the same situation to visualise their roads to promote change.
In my thesis, I investigate methods for creating and visualise traffic simulations to enable people to develop their own local traffic simulations. My research involves building a prototype using Unity to visualize the simulation and SUMO Traffic Simulator to handle the simulation logic. The simulation was tested on my local network, specifically a sample piece of the Dundrum network, it became evident that the placement of traffic lights near junctions contributes to most of the bottlenecks when traffic starts to build up. This indicates a need to reconsider the proximity of where traffic lights should be placed.