AdvantageScope 2024: Log Analysis & Robot Telemetry (Continued!)

For those unfamiliar, AdvantageScope is a robot diagnostics, log review/analysis, and data visualization application developed by Team 6328. It was released initially for the 2022 season, then split from its sister project AdvantageKit for the 2023 season. AdvantageScope enables a variety of visualizations for any WPILib project, both live over the network and by opening robot log files. We are humbled by the community response to this project, and AdvantageScope now has almost 6,000 downloads :heart:.

For a more complete picture of what’s possible with AdvantageScope, my conference from the 2023 Championship provides more examples and detailed explanations:

Also check out the documentation for an explanation of each visualization available in AdvantageScope.

The Big News

We are pleased to announce that for the 2024 season, AdvantageScope will be included in the WPILib installer. We’re excited for the potential of this tool once it becomes available to all FRC teams by default! AdvantageScope is not included in the first 2024 WPILib beta, but it will be available soon.

Development will continue in the Mechanical-Advantage/AdvantageScope repository on GitHub, and you will still be able to download the app directly from 6328. This version of AdvantageScope may include updates and new features before they become available through WPILib (and you’ll get some 6328 robot models to try out on the 3D field). Otherwise there will be no functional difference between the 6328 and WPILib distributions.

What’s New?

For a full 2024 changelog, check the GitHub release. Here are a few of the most notable new features:

Cinematic Mode

Cinematic mode is an alternative 3D rendering mode that includes shadows, lighting, and reflections for a more realistic look. The default rendering mode is unchanged, since cinematic mode requires a decent GPU to run smoothly. The comparison below shows the difference in quality between the cinematic and standard rendering modes (standard is equivalent to AdvantageScope 2023).

TBA Video Download

Powered by The Blue Alliance.

AdvantageScope supports synchronizing a match video to a log file. However, the 2023 version required a local video for this feature. Now, you can find and load a match video from The Blue Alliance with a single click:

TBA Video Download

AdvantageScope finds the match on TBA using metadata stored in the log file, and offers a selection of videos to download if multiple are available. You can also provide a YouTube URL directly for matches not available on TBA.

Documentation is available here.

Zebra MotionWorks Integration

Powered by The Blue Alliance.

Zebra MotionWorks data is available at some FRC events to track the position of robots throughout the match. I’ve written before about 6328’s work to compare Zebra data to our robot’s onboard localization. This was typically an arduous process that involved a Python script, AdvantageKit log replay, and other custom tooling. I’ve pleased to demonstrate the new and improved process built in to AdvantageScope:

Zebra Download

This uses the same logic as the TBA video download to extract match metadata from the log. Zebra data can be visualized on the odometry or 3D field views, as markers with team number annotations or as a translucent “ghost” robot (both types are shown in the examples below).


Documentation is available here.

Odometry Heatmap

As onboard robot localization becomes increasingly accurate, it’s often reliable enough to assist in analyzing match strategy. AdvantageScope’s odometry tab now includes a heatmap visualization based on the provided pose data:

You can generate the heatmap using all pose data, or limit it to times that the robot is enabled. It can also be combined with all other standard object types.

Field Search

Many teams are logging hundreds of fields, which can be a headache to organize. You can now find fields quickly by searching for them in the sidebar. We hope this is a nice quality of life improvement when you misplace a log field :wink:

Field Search

NT Publishing

For logs that include NetworkTables data, you can now publish all (or a subset) of fields to a NetworkTables server in real time. Possible use cases include:

  • Replaying matches in simulation for debugging.
  • Mimicking data from a coprocessor on a real robot.
  • Debugging driver dashboard applications using realistic match data.

This example shows several poses being published from AdvantageScope to an OutlineViewer (NT server) instance:

NT Publishing

Documentation is available here.

Faster Log Loading

Many teams are now producing very large log files, which can take a long time to load. For 2024, log loading is ~5x faster and a full progress bar is displayed. Here’s an example of the 2023 (top) and 2024 (bottom) versions of AdvantageScope opening the same 35Mb log file:

Log Loading Demo

Automatic Log Merging

Logs can now be merged with conflicting fields. Timestamps are automatically synchronized based on when the robot is enabled. An example use case would be comparing the movement of the robot across a set of similar matches:

Documentation is available here.

Navigation Improvements

There are a variety of quality of life improvements for navigating log data. On the line graph, the selected and hovered timestamps are displayed along with the delta between them:

The timeline controls are improved too, with buttons to jump to the first robot enable and hide/show the visualization controls:

On MacBooks with a Touch Bar, you can now scrub through the log or add new tabs using a touch interface:

PathPlanner 2023 Client

You can now connect to a robot running PathPlanner 2023 to view trajectories and target/actual poses. Note that PathPlanner 2024 uses NetworkTables, so this feature is only applicable when debugging legacy robot projects; the standard NetworkTables mode covers this use case for modern projects.

JSON & MessagePack Support

You can now individually view fields contained in JSON or MessagePack data. Here’s an example with a JSON field containing two numeric fields:

Coming Soon: Struct & Protobuf Support

Later in the fall, WPILib and AdvantageKit are adding support for struct & protobuf encoding. This will allow for geometry objects like Pose3d, Trajectory, and AprilTag[] to be logged directly without converting to double arrays. AdvantageScope will also be able to recognize different data types, making it impossible to accidentally mix up 2D and 3D objects.

Keep an eye out for updates on this feature soon.

Structured Data Demo

What’s Next?

The AdvantageScope 2024 beta is now released! You can download the beta from the GitHub releases page. Documentation is available online or by clicking the :open_book: icon in the app. We would welcome feedback, feature requests, and bug reports on this thread or the issues page. We already have some new features in the works, so keep an eye out for future beta releases.

The first 2024 beta of AdvantageKit (our logging framework) will also be released soon. This is a separate framework and NOT required to use AdvantageScope.

Thank you to everyone who has used AdvantageScope in the past two years. We’re excited to see what everyone does with it in 2024!

73 Likes

Looks like there’s some issues with the new log loading. I’m loading 3-4 minute logs and they’re coming up in beta 1 as 17-20 second runtime. This seems to be the first 17-20 seconds of the log and not just a sped-up version of the log. Here’s one problematic log to test with, but this is reproducible with every log I’ve tried so far.
FRC_20231015_232453__E13.wpilog.txt (59.1 MB)

Thanks for flagging. This is related to some new logic for detecting corrupt wpilogs, which incorrectly assumed that timestamps should always be positive in normal robot logs. There are a number of fields in this log file with negative timestamps, mostly related to PhotonVision and CameraServer (full list attached). I’ll push out a fix tomorrow, but for now it looks like most log files (those with all positive timestamps) will open correctly in the beta.

nt-fields.txt (18.4 KB)

2 Likes

Oh interesting. These logs were coming up as errors sometimes when I would open them for the first time in the latest 2023 AScope, but not the second. When I downgraded to 2.2.0 they worked fine, so that was another issue I was going to flag.

1 Like

AdvantageScope 2024 Beta 2

Beta 2 is now released! This update fixes an issue that prevented opening wpilogs containing negative timestamps. No other changes are present.

Also note: The first WPILib beta has a bug that causes the NetworkTables server to crash when running on Windows and a client connects (including AdvatageScope). This issue does not appear to be present on the roboRIO, macOS, or desktop Linux. This will be fixed by a WPILib update soon.

You can download AdvantageScope 2024 beta 2 from the GitHub releases page.

4 Likes

Do multiple heatmap field objects just add datapoints to the same heatmap layer? I’m trying to merge logs and view the heatmap of the robot pose overall.

Yes, all of the heatmap poses are added to the same layer. It’s normalized automatically, so the overall heatmap won’t become more red as you add more data.

Is there a reason log merging is a single-file selector and not a multiple file selection?

There’s some related discussion here. One of my concerns right now is making sure that everything runs smoothly when storing and displaying very large numbers of fields. With an event’s worth of log files, the app could easily be caching 10,000+ fields and hundreds of megabytes of data. This can hopefully be solved with sensible limits on the number of files/fields, but until I’ve tested that more thoroughly the single-file selector makes it harder to merge together unreasonably large amounts of log data. I’d like to switch it to some type of multi-selector in the future though.

Thanks so much for developing AdvantageScope and making it available for other teams to use. It has really benefitted my team over the last year and allowed us to quickly debug multiple issues. You said that the 2024 beta for AdvantageKit will be released soon - do you have a rough estimate of when this will be? Thanks so much again.

It should be within the next few days. We needed to wait for vendor libraries to update in order for the example projects to compile, plus there were a few breaking updates in WPILib 2024.

4 Likes

AdvantageScope 2024 Beta 3

You can download AdvantageScope beta 3 from the GitHub releases page. This release is also bundled with WPILib 2024.1.1-beta-2.

AdvantageScope Beta 3 adds support for struct & protobuf serialization with NetworkTables and data logs. This is a new feature just released in the second WPILib beta, so detailed documentation isn’t available yet. To give some idea, here’s an example of how a pose can now be published to NT:

StructPublisher<Pose2d> publisher = NetworkTableInstance.getDefault().getStructTopic("/MyPose", Pose2d.struct).publish();
publisher.set(new Pose2d());

AdvantageScope recognizes data types like this, so you can inspect individual fields or visualize the pose itself. This system also ensures that objects are only used in valid contexts, so you can’t mix up a 2D and 3D pose. Some specialized object types are also supported — if you send a Trajectory, AdvantageScope will automatically visualize it as a “trajectory” rather than a “robot.” And of course, these fields can be opened and replayed from a log file.

Keep an eye out for updates to this feature in the future as we improve documentation, examples, and support for more objects. AdvantageKit users won’t be left out of the fun either…

16 Likes

I was messing around with some of the 6328 Einstein logs earlier and I have a few suggestions regarding the multi-window support. Could there be a button to bring all windows to the front? It would make it easier to configure layouts and not have to press Alt+Tab a million times. Similarly, could there be a draggable grid layout thing for different data viewer widgets? I’m not sure if this is possible since I know first hand that this type of feature is a pain, but if it’s possible it would be really useful. Lastly, I’m not sure if there’s a shortcut to pause/play a log since I didn’t have the time to check, but if there isn’t, could there be one?

I absolutely love these new features, keep up the good work!

3 Likes

I wouldn’t rule it out, though I’ve been trying to rely on the OS’s native windowing support as much as possible (I generally find it frustrating to use apps that do their own thing for arbitrary reasons). macOS has a button in the menu bar to bring all windows to the front, but I don’t know about Windows and Linux. On platforms that don’t support it natively, I’d be willing to add a button for it.

Part of this is about the complexity of the implementation, but it’s also about scope creep. AdvantageScope is not a driver dashboard, and I’d rather avoid adding features that bring it closer to one (because the inevitably conclusion is continuing to add features in that direction until it becomes impossible to maintain). I get that there are other use cases for a grid layout like this, but I think the multi-window system makes the use case clear while being significantly easier to maintain. Projects like Elastic and FRC Web Components are designed as driver dashboards from the ground up, so I think it makes sense for AdvantageScope to remain distinct in terms of functionality.

You can press space to toggle playback, though you sometimes need to be careful that there isn’t a text box selected.

6 Likes

AdvantageScope 2024 Beta 4

You can download AdvantageScope beta 4 from the GitHub releases page.

This release contains numerous bug fixes and stability improvements. The NetworkTables connection is significantly more reliable when disconnecting/reconnecting automatically, and structured data types are displayed correctly on initial connection for all NT modes. Check the changelog for the full list of fixes.

The documentation has also been updated with lists of supported structured types for each tab and example code for logging this data with WPILib or AdvantageKit.

9 Likes

Has there been any thought into porting AdvantageScope to a mobile format? It would be incredibly useful to be able to monitor robot status from the computers in our pockets during practice sessions and demos.

4 Likes

Since the current UI is designed specifically for desktop, this would be closer to a rewrite than a port. Do you have an example use case where it would be preferable to connect a phone rather than a laptop with a larger display? Either way you need to connect the device to the robot network, open the app, and configure fields so I’m not sure I see a convenience benefit. AdvantageScope is intentionally information-dense, so it really seems like a better fit for desktop in most cases. But maybe there’s a use case I’m not thinking of.

Another option if you want a “mobile” experience is to run it on a Windows tablet. The layout isn’t really optimized for it, but the app supports touch inputs in enough places to make it usable (including navigating the 3D view). 6328 has used a Surface Book as a driver station for several years so we’ve tried it out, but we just never had a compelling reason to use it in practice.

3 Likes

Our driver stations are not powerful enough to run AdvantageScope while streaming data seamlessly, which is a huge pain for us. We have a limited set of computers we use for most of our AdvantageScope debugging sessions, but those are not always available, especially when we are with the robot outside of our school (practice, demos, events). All of our mentors have phones, so it would be incredibly useful to be able to pull up AdvantageScope there and be able to quickly look at motor temps, current spikes, etc to make sure we aren’t pushing the robot too hard or find a problem before something breaks.

1 Like

It sounds to me like this is a very different use case, which would justify a project independent of AdvantageScope with a different set of goals. The purpose of AdvantageScope is to enable deep data analysis, rather than displaying glanceable information. Driver dashboards are in the second category, and I think a phone app is as well by necessity. Managing large numbers of fields and complex graphs is just not something well-suited to a mobile interface. This would require significant development effort, and I wouldn’t want the end result to be a sub-par experience (which would be inevitable unless the goals were fundamentally different from desktop AdvantageScope). I wouldn’t rule out a tablet app since that provides equivalent screen space to many laptops, but I don’t think there’s enough demand for that to warrant the development effort required.

If someone wants to make a mobile equivalent of Shuffleboard or FWC it seems like that would be a more appropriate starting point for a mobile app (in terms of UI at least). I know there has been discussion about making an OutlineViewer-style interface accessible using an HTTP connection to the NT server, which would allow for some quick diagnostics like checking temperatures. Fundamentally, I think that if you need to do real data analysis there’s really no replacement for a laptop (or maybe a tablet).

3 Likes

While I understand your reasoning here, I would bet that a significant portion of your user base uses AdvantageScope for “glanceable information” rather than for “deep data analysis” most of the time.

A mobile format would be a huge leap in accessibility for AdvantageScope and I hope someone is able to make a mobile equivalent of this in the near future.

6 Likes