WildRank 2022: Oops!... I Did It Again

On behalf of the WildStang Robotics Program I would like to introduce our brand new scouting app WildRank! Sound familiar? As a student I co-developed the first two WildRank scouting apps for Android. In the 3 seasons since I’ve rejoined the team as a mentor I have been working on a new platform compatible for use on our students’ district-provided iPads.

Philosophy

Single Cross Platform App

Since each student has an iPad the goal was for first-class support there. But since I don’t know Swift and some would prefer to use another platform the primary goal was to be cross-platform. The most obvious solution was to develop WildRank as a web app.

Offline

Many existing scouting apps use the web, but since we are using school-distributed iPads, most users will not have a cellular connection. The second goal was to limit the required data connection to as little as humanly possible. WildRank is an offline PWA developed built with client-side HTML/CSS/JS. For data transfer it supports zip archive exports or network-based transfer. Many other forms of data transfer were investigated, such as QR codes and audio, but none were effective enough for our needs.

Touch Friendly

Again, each student has an iPad; most users are going to poking the screen with their fingers. I wanted the interface to be as touch friendly as possible. A series of modified HTML elements were designed to be compatible with both mouse and touch.

Zero-Code Configuration

The goal with WildRank Android was to limit the need to write code to implement a new game every year. For an experienced programmer the work was trivial, but for others it was still code. This time I wanted a true zero-code experience. The core configuration of WildRank is done using two JSON files. While very simple, JSON still has a learning curve and will feel like code to some. Therefore, interfaces were also developed to build and edit these files via the application.

Deployment

WildRank will see its first live matches when WildStang attends the Central Illinois Regional week 3. The combined WildStang and Plus One scouting team will also be using WildRank at the Midwest Regional during week 6. If you see us there feel free to stop by and check it out. You can run your own instance either via the included docker-compose file or python web server.

Links

8 Likes

Hi all, going to touch on some of the key features of our system for this year – if you want me to elaborate on anything or have other questions feel free to ask!

Config building – Building a scouting config requires no programming experience, simply make your categories and add one of our premade data types to it!

Config Builder

Data transfer – Offline data transfer can be done through exporting data to a zip file and having a single user import all of these to merge the data. This is the approach we plan on using at competitions this year. Alternately, teams can choose to connect scouters to a server and upload data directly.

Cycles – In addition to taking data in the context of a full match, data can be grouped into cycles for more detailed analytics.

Cycles

Smart stats – Smart stats let us create new data categories on-the-fly by relating data we’ve already collected. For this season, we have the ability to add categories together with the sum function, display percentages of a total or a ratio of two categories, or counts of data in a cycle when only certain cycle characteristics are selected (for example, number of high hub scores from a certain location).

Pivot tables – The primary way to view data categories is through the pivot table feature. This page allows you to pick and choose what data is displayed from what has been collected, and which column the table is sorted by.

Coach values – Coach values gives a drive coach the ability to pick a few key statistics to be displayed in a match preview screen for quick reference when planning strategies.

Coach Values

Pick lists – Pick lists can be created directly from a pivot table or smart stat page to pre-sort the team list by any stat, or you can make one from scratch! Multiple pick lists can be created and saved, and a team marked as picked on one list will be marked picked on all lists.

2 Likes

Hello!

I really appreciate the work you’ve done on this - I have a slight issue where if I try to preload the event with the TBA key correctly placed in the keys.js file it still gives me a No API key found error. Would you be able to tell me how to fix this?


For reference to my post

Just knowledge from the past:

The match schedule for 2022 events do not exist yet.
What happens if you try to load from an event that happened in 2019?

(Keeping in mind I used OG wildrank and wildrank v2, have not used the newer stuff)

@Anthony_Galea

Also nice to see you’re back @mail929 , Nathan was my primary contact with you guys but all the same.

Implementing WRv2 for data collection this year w/ 2767. Cheers!

2 Likes

I tried pulling a match schedule from an already completed 2020 event (2020 macomb community college, and I did fix the event key after in the web app because it was wrong but it still gave the error), so that might be what’s causing issues?

Yeah, so in older versions, iirc, everything is parsed from the match schedule. This leads to stuff not working if the match schedule doesn’t exist.

All that is probably in this thread somewhere:

If you preload an event with no matches yet, it should return a pop-up saying “no matches received”.

Liam might have better guidance on how to troubleshoot, but my guess is it’s an issue related to the TBA key

1 Like

Was hoping you’d see this thread, crazy to hear you’re still using v2!

With this version, matches, teams, and rankings are all individually pulled so if you get > 0 and < 3 you’d see an orange indicator instead of red.

@Anthony_Galea your problem is definitely a lack of an api key somehow. Can you PM me what you get as a result of navigating to http://localhost/scripts/keys.js?

An alternative is setting the API key as an environment variable. That can be done like TBA_KEY="blah" python3 python/post_server.py

If it ain’t broke …

The data collection schemas v2 offers are great for this game. Going to be “abusing” the cycle for fun and profit (hopefully, granularity has been deemed important this year by us for high levels of play). Now I have the data science background to wrangle more in depth data visualizations rollup and drilldown analysis should be pretty smooth. We’ll how this season goes, but may get some more public facing documentation of what can be done with carefully chosen data deeper than just simple descriptive stats. The notes app in V2 is the best implementation for a single lead scout I have ever used. There is a reason I keep coming back.

Anyway, lots of memories with WR. First time using V1 in Duluth (NL) 2015… Little rough, got a lot better the following year though with V2. Ik you said one of your goals was for limiting code in the current version, but this year a v2 implementation has come me together rather easily. It’s good stuff, still holding up years later.

As an aside: was it the ipad availability through the school that pushed you away from the moto tablets?

wait we had data broken into cycles in 2016?

why on earth do I not remember this…I’m going to have to rewrite so many “cycles are new to us this year” comments…

This version unfortunately does not live up to v2. One of my (many) off-season goals is to improve notes from the background feature it currently is.

They actually started rolling out iPads the year we made v1 (2013-14) and fully rolled them out the year after we graduated (2015). The implementation of technology in the classroom was part of the original catalyst. I wasn’t there for the return to paper but from my understanding it was multi-faceted. Those Moto Xooms were very long in the tooth and as happens with FIRST most of the experience graduated.

Yes, 2015, refactoring the “stacks” code

We figured it out, it was due to the app’s caching, so here are a few notes on keeping your pages up to date.

  • Hard refreshing is the first thing to try after making changes, ctrl + F5 on Linux/Windows should trigger it but sometime multiple tries are required
  • App storage can be reset with the “Reset App” button in the Administrator role
  • Finally developer tools can be used to really clear everything out, ctrl + shift + i will get you there. Then under the “Application” tab click the arrow next to Cookies then right click the url below and select clear.

For any potential developers out there to force the browser to look for new changes change the CACHE_NAME variable in pwa.js when you make changes

Oh yeah. I do tend to forget about 2015 a lot…

The new cycle implementation is much more powerful in my opinion, but it sounds like you know exactly what you want and how to do it. Nothing really needs to be more than it has to be.

Hopefully we can compare notes and see how both our systems work out!

Yeah, sounds good! Would love to get linked back in with WR dev.
2015 was a year… Played with 111 a lot though. I think 876 and 111 were vs eachother in elims for Peoria and played again at St Louis w/ an alliance of 111 and pwnage. The st Louis decision was based influenced on 111’s good scouting iirc.

Yeah, the refactored stacks code is more than enough, the important bit is the granularity it affords. I am sure I could do a lot more with it in the team summary data views but really just using summaries for averages and ratios for the drivecoach . All the heavier lifting is done on my laptop where I have better control of the database.

1 Like

Nice! I can’t wait to see it in action at CIR!

2 Likes

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.