Offseason Project Proposal

Hello CD community,
A couple friends and me are looking to work on some sort of open-source library for the first community. The team consists of cognitive science and computer science majors, so our focus is going to be around machine learning. Is there anything that the community feels like is missing and that would be helpful for their build season. Please let us know in this thread.

Automate scouting. Take the pain out of it for most teams and you’ll increase competitiveness across the board.

How about this:

Build an application that collects all of the current competition season’s data, then use it to run a monte carlo simulation containing thousands of simulated matches (similar to FRC Insights so far…) but then uses a dozen different match strategies with your alliance to calculate which strategy is most likely to produce a winning result (and therefore, where teams should start in Auto, how much time they should dedicate to a specific game element effort, and which robots on the alliance perform which activities).

The winning-est result from the simulation, if accepted by the alliance, is then integrated into the robot code which will provide Telemetry to the driver indicating which game element they should be focusing on and for how much longer before they transition to a different effort. This logic can be re-evaluated in real time as the second driver (or the FMS) inputs game progress information such as current score or, in Power Up’s case, who currently has possession of an element and by how much margin.

So interestingly enough we did get a form of this working at champs. Based on a camera feed we were able to get automatic data collection for certain categories. Such as cubes picked up, current ownership, cubes in vault, usage of powerups. Our biggest issue aside from collecting data, was getting a consistent camera positions.

Automate interesting live stream features.

  • Automated Post Match Instant Replay
  • Automated graphic overlays (possibly using OvrStream)

What about a virtual coach for new mentors and teams?

It could provide timely advice on what steps teams should be doing at which times… I know a lot of rookie teams get swamped with material in the fall and end up missing key things like the first round of FIRST Choice (and even if they don’t miss it, they don’t know what to choose). It could be combined with video guides on how to fill out the various paperwork and forms, and tips on things like “Discuss a field trip to championships with your admin team now. You might think that it is unlikely that you will qualify, but in the event that you do, having admin on-board from Day One will often make your life much easier.” (NB: This is particularly true for teams that have to cross international boundaries.)

I’m not quite sure how machine learning fits into that… perhaps it can identify patterns in the questions being asked and the tasks that get neglected and find ways to proactively improve communications on those topics?

I’ve also wondered about the possibility of designing a “Field Positioning System” that uses fixed cameras mounted on the robot to identify the robot’s position and orientation based on vision. I’ve always thought the lights in the ceiling might provide a useful clue to orientation.

Also in the vision processing area… can you identify a robot? It would be very useful for autonomous (in some games) to be able to pick out a robot from the background, determine the alliance, perhaps predict it’s path and then actively avoid the machine. It would be an interesting challenge given the variety of sizes and shapes that “robots” come in, but you might be able to cheat by identifying things that aren’t robots and categorizing the remaining objects as robots… or by adding an inexpensive thermal IR camera and noting different heat signatures… or looking for a team number on the bumper… or the robot signal light… or…

Jason

I don’t like pimping my own work… BUT… I’ve been working on building a sort of conversational advisor for teams. The current build is available at https://schreiaj.github.io/frc-assistant/ Currently only the Drivetrain -> Skid Steer -> KoP chain is nearly as implemented as a functional path. The intended content is located here https://github.com/schreiaj/frc-assistant/blob/master/FRC_Assistant.png

The part I worked hard to get right early was in making sure it was easy for people to contribute information, even non technical folks. I used an interactive fiction tool so that content is mostly free text with some minimal markup requirements and the rest is generated off of that automatically by off the shelf tools. The drivetrain section is located in this file https://github.com/schreiaj/frc-assistant/blob/master/ink/Drivetrain.ink

If you’re looking for things that would be helpful, I’d LOVE help filling the content out.

Whoa! How COOL is that? Populating the database is going to be a big effort (and keeping it up to date an even bigger task!) but if the community joins in, it might be one of those FRC things that is “only a little bit impossible.”*

Jason

*I’ve been using that term to describe the FRC challenge to people for about six months now, but trying to figure out where I’d heard it before. It finally dawns on me that it’s a rip of of, “He’s only a little bit dead.” from the Princess Bride.

Hence the asking for help. I was planning on tackling it like eating an elephant (one bite at a time). But really, that’s why I spent so much time making it easy for folks to contribute content.