Skip to content

Conversation

@zachwaffle4
Copy link
Contributor

The struct format follows wpilib's struct format.
To be used effectively, we would need to add struct implementations for most of RoadRunner's geometry classes (which I'd be willing to do, especially because they mostly have equivalents in WPIMath already).

The point of this PR is mostly to allow for sending data using structs to AdvantageScope, but I also added support to decode the structured data on the front end. On the frontend it just looks like somebody invoked the toString method of a Kotlin dataclass (obivously except using the struct schema instead the constructor arguments).

@rbrott
Copy link
Member

rbrott commented Sep 13, 2025

What do you see as the value proposition for dash here? Is the hope to save communication bandwidth for dash or turn telemetry packets into a universal API for third-party FTC telemetry?

The point of this PR is mostly to allow for sending data using structs to AdvantageScope, but I also added support to decode the structured data on the front end.

I suppose this is what I don't understand in particular. Why should dash care/know about AdvantageScope?

@zachwaffle4
Copy link
Contributor Author

What do you see as the value proposition for dash here? Is the hope to save communication bandwidth for dash or turn telemetry packets into a universal API for third-party FTC telemetry?

More of the second one.

I suppose this is what I don't understand in particular. Why should dash care/know about AdvantageScope?

AdvantageScope is currently able to accept telemetry packets from FTC Dashboard/its webserver; right now a telemetry packet is just a string key + string value, but this PR also allows packets to include a struct schema and a list of byte arrays encoded according to the schema. AdvantageScope is able to parse that and use published pose data to draw on the field, for example.

@j5155
Copy link

j5155 commented Sep 17, 2025

My main reason for adding FTC Dashboard support to AdvantageScope was so it could be used as a drop in frontend for existing code bases with the minimum of library and robot code changes. I don't know that it totally makes sense for Dash to support it's own binary struct format? That seems like something better served by dedicated libraries on existing standards, like PsiKit.

The current parsing telemetry option does also already allow for struct publishing and parsing, if inefficiently.

@zachwaffle4
Copy link
Contributor Author

The binary struct format here is the same format that WPILib and AdvantageKit and PsiKit already use.

@zachwaffle4
Copy link
Contributor Author

@rbrott bump

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants