TBA Score Breakdown 2023

Blue Alliance just released the score breakdown for 2023 matches. One thing I noticed was that it recorded engaged robots and docked robots both as “Docked.” There doesn’t seem to be a designation for “Engaged” anywhere. Is it expected that people can just see how much was scored on the charge station and figure out whether the robot was engaged?

It should show engaged. Can you link the match you’re looking at?

Hmm, unless I’m missing something, I also don’t see where engaged would be in either the FIRST or TBA breakdowns for 2023. @Eugene_Fang, I think this would need to be a TBA calculated item, right?

Game manual 6.4.2:

A ROBOT is ENGAGED if both of the following criteria are met:

In 2023week0_f1m1, the blue alliance had all three robots docked and the charge station was level. Snippet from TBA API:

      "endGameBridgeState": "Level",
      "endGameChargeStationPoints": 30,
      "endGameChargeStationRobot1": "Docked",
      "endGameChargeStationRobot2": "Docked",
      "endGameChargeStationRobot3": "Docked",

Yeah we are just mirroring the FIRST API. The breakdowns on the TBA website show engaged but the api doesn’t. Is the ask for us to provide a TBA derived field for it?

1 Like

I’m not sure I see the value when it’s so easy to extrapolate, but curious about @LawnMOEr365’s use case where getting this data would be helpful.

I guess it’s possible for a robot to be touching but not docked and invalidate the engage? Would the charge station be still reported as level in that case?

My understanding is that if a robot is touching but not docked, then the head ref will manually override the “level” sensors to make all of the docked robots not engaged. This would probably be reflected in the FIRST match results API.

In this case, though, wouldn’t that robot who is touching but not DOCKED be reported as PARKED? The bridge could still be level, but points aren’t awarded unless all robots doing something in the end game are docked and the charge station is level.

This doesn’t sound right to me since points aren’t earned for the charge station being level – they’re awarded for the combo. Why would the ref need to manually override this sensor if it wouldn’t impact the score in any way?

You can have two robots docked, 1 robot parked and touching the charge station, and the charge station is level.

In this case, if the endgame is reported as dock, dock, park + level, you’d need to calculate the engaged status based on the score which is annoying.

Agreed with you on the scenario. Not sure I agree it’s so annoying to calculate, but yeah easier if exposed via API, sure.

If robot A and robot B are both docked on the charge station, while robot C is nowhere nearby, then both robots A and B will be counted as such. They will get points for docking or engaging depending on whether the station is level.

However, if robot C is rubbing against the side of the charge station–still not docked–robots A and B will still be marked as docked, but if the charge station structure is level, the head ref will have to manually override the “level” status to keep A and B from being automatically considered engaged.

Given that the API seems to be reporting exactly what the referees say (ie. docked/parked/nothing) and the level status, I expect the level status is actually encoding all the criteria necessary for a docked robot to also be engaged.

A ROBOT is ENGAGED if both of the following criteria are met:

In this scenario, though Robot C would be parked, no? Meaning the station can still be level (unless the parked robot is doing something to interfere with the level state, violating a rule). The two docked robots would not be engaged because parked robots preclude engagement for the entire alliance, but that doesn’t mean it can’t still be level.

I’m getting flashbacks to 2020 with the level shield generator switch that would show up as “level” in the API even if the level bonus was overridden by refs due to a robot touching the ground. Even worse when the refs didn’t catch that the bonus was still applied when it shouldn’t have been…

That depends on which side of the charge station it’s touching. We saw at least once at Week 0 a robot that was attempting to dock/engage from the middle of the field, didn’t make it in time and rolled back towards the middle of the field. It’s not Parked because it’s not fully within the community by definition, since the edge of the community is the edge of the charge station.

Depending on which side of the charging station robot C is on, it may be either “parked” or “nothing”. Because robot C is touching the charging station and not “docked”, robots A and B cannot be engaged, regardless of whether the charge station is level (level as measured by the sensors and displayed by lights).

I believe the “endgameBridgeState” entry of “level”/“notLevel” reflects whether the criteria for “engaged” are met, not necessarily the physical state of the charging station. In cases such as the above, this requires input from the refs and/or head ref to mark the alliance as “ineligible for engaged” or “notLevel”.

Yeah, okay – this is where we diverge. I guess this is the challenge of trying to reverse engineer an API before the documentation is available. I would never have thought this, but I see how/why you do.

As a bit of evidence supporting my conclusion, consider Quals 12 from the official week zero

Endgame clip, firstinspires.org match results

Note that at the end of the match, the red charging station appears level, but with a red robot touching the edge. The yellow “match under review” banner shows up, indicating that some manual adjustment by the head ref is being made.

From the match results page, note that red is awarded only the points for docked, and the red charging station is “notLevel”. In contrast, blue is level with three marked docked, and is awarded engaged points for all robots.

We also want to mess with the API, where can I find the Score Breakdown?

We had a couple of purposes in mind, but one of the main ones was trying to figure out how good a team is at engaging when they had partners on the station versus by themselves. This thread has been pretty insightful. It shouldn’t be too difficult to figure out the engaged status from the information we have from TBA.

If you go to APIv3 - The Blue Alliance and authorize with your apikey, you can run one of the GET calls that return matches. Each match has a score breakdown.

For example, you can run /event/{event_key}/matches with the 2023week0 event key, and it will return every match from week0 along with the score breakdowns.

So the haven’t released the documentation yet?