Second Place Solution in Summer 2025 Simulation Racing Series
Written by Prathyush Belligundu from Monta Vista High School and Laura Wang from Aragon High School.
Github Repo: https://github.com/jellybeanisyummy/ROARCompetition
Table of Contents
Introduction
Our solution builds off Derek Chen’s Fall 2024 first-place submission. While keeping the same overall framework, we focused on improving lap time consistency by tuning section markers, adjusting μ values for different track areas, and refining throttle/brake behavior.
Map Visualization
A big part of knowing where to begin editing the code was understanding the current behavior of the car. To do so, we created 2 methods of visualizing the data collected during a test run, which the user would be able to toggle between.
To understand where speed could be safely increased, we used the map visualizer to highlight throttle and brake regions across the lap. The visualization (see figure 1) showed exactly where the car slowed down, coasted, or accelerated. Switching between the braking and throttling of different laps was also beneficial to observing how consistent the car was between laps.
This also helped us to set one of our goals as decreasing the length of sections where the car was braking, specifically in sections 1, 4, and 9, as well as better notice that the car was doing a brake-throttle-brake before large turns, which we also hoped to resolve.
We also had another map (see figure 2) that showed the speed that the car was driving at, allowing us to realize that the car doesn’t reach its maximum speed very often, and only after long straight paths. We were also able to use information from the specific speeds to notice that turns like the one in section 2 could be much more aggressive, and tune accordingly. However, there was an extreme drop in speed from section 9 into section 0 that we were unable to improve, especially due to the extreme nature of the turn.
Speed Control Improvements
The controller calculates target speed from curve radius using a friction coefficient μ. We adjusted μ values for specific sections:
- Higher μ in smoother sections to carry more speed, making the car more aggressive
- Lower μ in sharp turns (like S9) to prevent sliding
These adjustments made the controller more adaptive to different track conditions
Each key stands for one section, and each value is the value of the μ to be used in that section. Previously, this had been a list. However, we changed it to a dictionary so that we could add a section in (eg. section 10) without having to redo the mu values for all other sections all throughout the code.
Braking and Throttle Refinements
As mentioned previously, we had noticed a brake-throttle-brake behavior in the car, and hoped to address that issue, which would hopefully lead to shortened braking times. After researching how Formula 1 drivers typically turn, we learned that they employed trail braking, where the car brakes before the turn, then slowly releases the brakes until the apex of the curve, where the brakes are fully released. This allows for later braking and better control of the car. We hoped to use this in sections 1, 4, and 9 to get rid of the brake-throttle-brake behavior.
However, the trail braking would require a change in the waypoints, otherwise the car would crash, and due to time constraints, we weren’t able to change the waypoints. The attempt at utilizing trail braking is in the Github Repository on its own branch. Although we weren’t able to make this idea fully functional, we hope future contestants will be able to implement this idea and further improve their times.
Conclusion
By building on Derek Chen’s original solution, our submission added visualization-driven waypoint tuning, μ adjustments, and refined braking logic. The combination of these changes allowed the car to maintain higher average speeds while staying under control, resulting in faster and more consistent laps.