This season I have built a leaderboard page that allows us to openly share the results of races as they happen, present the cumulative results which aren’t available in the console and estimate who might be getting into the AWS DeepRacer Championships this year.
It is available at https://drboard.breadcentric.uk, and has recently received a few new functions. Read on to learn how it’s been done and what it offers.
One of the things we take pride in as AWS DeepRacer Community are our tools. From the beginning of racing we have been pushing the limits of what’s possible with DeepRacer. We’ve expanded the original log analysis tooling and built more of it, we’ve built and are expanding tools for training outside of the DeepRacer console, we’ve built robotics projects on DeepRacer and some diagnostic firmware, we even have made a timer that anyone can use for their events.
The community leaderboard overcomes a few limitations of the official leaderboard provided by AWS:
- we share results information which is public, but its reach is limited because AWS leaderboards are in the AWS Console
- we provide both virtual and summit race results in one place
- we have added two cumulative leaderboards with points as set out in the AWS DeepRacer League terms and conditions
- we provide out own Community leaderboard
- we estimate who has possibly won which rewards and mark it in the leaderboard to give you an idea of who is actually still fighting for an additional prize
I have used this project as an opportunity to learn a few things:
- For the front end I have started learning React in TypeScript. The central element uses AG Grid Community Edition to present the data
- The page is served through CloudFront from an S3 bucket
- The data is stored in Aurora PostgreSQL. I started with DynamoDB which was initially very convenient, but I am a relational brain and with migration I could greatly improve how I serve the data
- The data is refreshed using Lambdas in Python, triggered by CloudWatch Events
- The lambda uses bits of another Community Tool, deepracer-utils, which you can use to add DeepRacer support to AWS CLI and boto3
As hard as I tried, there is a limit in how much esthetics I can put into a visual tool. I hope you can tolerate the not most amazing UX out there. With that, let’s have a look at what you can actually do in the page
There are three types of leaderboards available:
- Virtual race leaderboards, named with months,
- Summit race leaderboards, named with cities where they happened,
- Cumulative leaderboards, named with… “cumulative” in the name.
Virtual race leaderboards
Every 30 minutes up to date results are being fetched from the race using the deepracer-utils and boto3. The country and region association has been scraped from the AWS DeepRacer Console page and put into simple tables that I can do joins on.
Each racer has a user_id associated with them in the race data which allows me to connect their results between the races.
The columns with data are sortable and in most cases searchable so that you can do some basic analysis of the results. You can sort by multiple columns using the Shift key and clicking, and the menu on each column opens a filter.
Summit race leaderboards
The summit results have been manually obtained from the AWS Summit leaderboards. The leaderboards at the summit just show the racer name and their best time but the api provides more information so I have done some extra work to expose it in a meaningful way.
The only exception is the Shanghai Summit. Organisers did not use the standard leaderboard and therefore I have only receive information on the top three racers. Their times have been made up.
The Summit racers do not have user_ids so there is some disconnect between the summits and virtual racing. I compensate that with help of the AWS Community, making some manual effort to detect the racers and associate them with their virtual race results. It’s not perfect, but should be sufficient.
This season racers get points for their results. For the first place you get 10 points, second – 9, third – 8 and so on, from tenth on you get a single point for participation. This happens on the global level on on the per region levels.
Based on the points gathered, the top point scorer in the global cumulative leaderboard wins an exotic car ride experience in Las Vegas, and the top point scorer that hasn’t qualified just yet wins a ticket to Las Vegas to fight in the championships. Then remaining racers are looked at using the regional point gathering and top point scorers without a qualification in each region also win their spots in the championships.
While the regional points calculation is done in the AWS DeepRacer Console, it’s not the case with the global one so we are the only source of this information. It is being updated at the end of each monthly race.
Community cumulative leaderboard
To add some fun to all of this I have added our own Community cumulative leaderboard where you win absolutely nothing but you can brag about being third just like TonnyJ is. And it’s a very valid brag: he’s been very consistent, participating in every monthly race and clocked times that were very solid, only below the superhuman results from Rosscomp1 and JJ. But you won’t see it that well in the pointed leaderboards from AWS rules.
Here are the rules for the community leaderboard:
- in each race your points are -1 multiplied by your best time in milliseconds
- if you did not participate, you will get -1 multiplied by the average time in that race
- points are summed up, top point scorer (least negative point scorer) is at the top
Disclaimer: What I display as the prize information is guesswork. I apply T&Cs criteria without knowing if prizes have been claimed in the past or passed on. Therefore there may be inaccuracies.
Based on our calculations we are able to work out who likely won their spots in the finals or won some big fat vouchers. This data is assigned to users in the database and you can see it in leaderboards in the Prize column as little icons. You can put your pointer over them to see details of the prizes a person probably has.
You can also visit https://drboard.breadcentric.uk/prizes2023 to see who has qualified into the championships so far.
Hope you are enjoying the information provided in the leaderboard and I hope it will help you plan your victory. If you have any suggestions, feel free to reach out to me, Tomasz Ptak in the Community Slack: http://join.deepracing.io