Spotlight: Using Foxglove to Build a Winning Autonomous Racecar
Photo credit: ©FSG Lodholz
As teammates on the Chalmers Formula Student team, Anton Rosén and Bernardo Taveira collaborated closely to develop a winning autonomous car for the 2023 season. Bernardo led the Autonomous Systems subgroup, while Anton worked as an engineer for the same team.
As the world’s largest engineering design competition for students, Formula Student brings teams from across the globe to design, manufacture, and race their open-wheel racecars. In addition to combustion cars manned by human drivers, the competition has evolved over the years to now include electric and autonomous vehicles.
For the 2023 season, our Formula Student team here at Chalmers University of Technology built on previous years of experience to create our most capable vehicle yet – in fact, it performed the fastest skidpad at Formula Student East (Hungary) and won the overall competition at Formula Student Germany, the largest and most prestigious competition in our class!
Our performance in the trackdrive event, where we completed 10 laps around a set circuit the fastest, was critical to our win at Formula Student Germany.
Despite being a relatively small team, we achieved this monumental feat in large part due to Foxglove’s help. With Foxglove, we could use one tool to monitor live telemetry data during testing, visualize and inspect logs, and organize large volumes of multimodal data.
Building the 2023 car
Our team has designed and manufactured a new car every year since 2003. In 2015, we transitioned fully to electric powertrains. In 2022, we entered our first car that could compete in both the manual and driverless electric categories.
For 2023, we continued leveling up – we built a car featuring a fully electric powertrain with 4 self-manufactured independent wheel hub motors, a carbon fiber monocoque, and an in-house battery design. It can produce 1250 Nm of torque and accelerate from 0 to 100 km/h in under 3 seconds.
Photo credit: ©FSG Kohler
Our driverless system uses a LiDAR-based perception stack and a high-precision graph-based SLAM algorithm to determine the vehicle's location relative to the track layout. With this information, the car can plan its optimal trajectory.
To actually execute on this plan, the car uses a decoupled controller structure – a feedback-feedforward controller for longitudinal control, and a model predictive controller for lateral control. These systems are implemented as ROS 2 Humble nodes running in individual Docker containers.
Visualizing live data during testing
Without a human driver, it was critical to monitor our racecar’s telemetry data to get feedback on the vehicle’s performance, its handling on the road, and the state of its components. Without this live feedback, it would've been much more difficult to efficiently iterate on our car's performance and safety.
To start a testing session, we set up our telemetry system – an omnidirectional Wi-Fi antenna and router mounted on the car, and a separate larger router in a portable ground station on track. The car served as its own subnetwork and communicated with the outside world only through forwarded ports. The ground station allowed any computer to connect via open ports and receive its telemetry data.
By analyzing data live, we could track vital metrics – like the temperature and voltage of critical components. We could also visualize the vehicle’s decision-making process in real-time – for example, we displayed our planned and predicted trajectories as a series of color-coded ROS markers.
Setting up a live telemetry system would ordinarily require a lot of work and development time – figuring out how the data should be transmitted, received, processed, and finally visualized is not a trivial task. Foxglove's WebSocket bridge made this process incredibly simple. Thanks to this ready-to-use live data connection, anyone on our team could simply open Foxglove and click “Connect” to start seeing live data.
Analyzing data across the team
After testing, we analyze our recorded data to investigate issues or find opportunities for improvement.
Since we record logs from our various sensors and systems to the MCAP file format, we were able to easily import, playback, and analyze the data in Foxglove.
We created Foxglove layouts to help us understand our rich multimodal data faster. These preconfigured and ready-to use visualization workspaces to streamline repeated tasks – like monitoring safety-critical metrics – and help our engineers get actionable insights faster. Using layouts also made it easier than ever to update our analysis protocols across the team – we could add or edit sensors or include new visualization markers, and have those layout changes immediately be available to the entire team.
Whenever we had visualization requirements not met by Foxglove’s out-of-the-box panels, we developed custom extensions tailored to our unique use cases. These bespoke visualizations allowed us to structure our data in more intuitive ways, without being restricted by Foxglove-supported schemas, and helped us process our data more quickly. Like with layouts, our shared extensions automatically get published and distributed to every team member, making it easy for the whole organization to stay in sync.
Managing multiple seasons’ worth of data
In preparation for competitions, we often tested the car multiple times a week. With the incredible volume of data generated, it became easy for information to get lost, forgotten, or overlooked. The problem was exacerbated when referencing data from previous seasons.
Thankfully, Foxglove did wonders in helping us structure and manage this information – while keeping it easily accessible to everyone on our team. We uploaded data from our runs, and used the Foxglove API to automatically tag events including important metadata like run type, test track, and triggered emergency states. We were also able to manually add notes and events via the Foxglove web console, making it easy to discover and share important slices of data.
Foxglove’s Timeline view was also invaluable in helping us get a bird’s eye view of our data. This view allowed us to look at an entire day of testing all at once – making it easier than ever to locate specific events, discover anomalies, and analyze data efficiently. We could also open custom time ranges of data for further analysis – even if these ranges spanned multiple recordings.
In addition to bringing home the Formula Student Germany trophy, our team returned with an immense sense of pride and a wealth of unforgettable shared memories. But after this unbelievable 2023 season, a new year starts. And with a new year comes a new car, a new team, and new ambitions.
Our main priority for the 2024 season has been recruiting team members and getting them up to speed on our accumulated competition experience. This past season's testing sessions and competitions helped us identify weak points in our car and its systems, so we're excited to improve on these to push autonomous racing to its limits.
Until then, we thank everyone involved in this project – all of our wonderful collaborators and amazing sponsors. If you want to follow our journey and learn more about the project, check out the Chalmers Formula Student on Instagram, LinkedIn, and YouTube.
Exciting product updates we’ve shipped since last year’s conference.
Meet us in Detroit and New Orleans This October.
Get blog posts sent directly to your inbox.