AdvantageKit is a logging, telemetry, and replay framework developed by Team 6328. AdvantageKit enables log replay, where the full state of the robot code can be replayed in simulation based on a log file (What is AdvantageKit?). See also:
- AdvantageScope, our robot telemetry application which does not require AdvantageKit to use.
- WPILib Data Logging, a simpler logging system included in WPILib (does not support log replay in simulation, but covers the needs of most teams).
Please see the following guides to get started with AdvantageKit:
- What is AdvantageKit?
- Installation
- Data Flow
- Recording Inputs: IO Layers
- Recording Outputs
- Version Control
- Common Issues (And How To Avoid Them)
- Using SysId With AdvantageKit
- Developing AdvantageKit
Feedback, feature requests, and bug reports are welcome on the issues page. For non-public inquires, please send a message to software@team6328.org.
Looking to get started quickly? Check out the AdvantageKit example projects. There are versions for differential and swerve drives, from minimal to advanced (including a project designed for the 2024 FIRST KitBot). Zip files for each project are attached to the latest release.
Also take a look at the examples below of teams utilizing AdvantageKit in their competition code:
- Team 6328's 2023 Code - Spark Max swerve with a triple jointed arm, pose estimation, and auto scoring (TBA).
- Team 2910's 2023 Code - Talon FX swerve with PathPlanner, vision, and a telescoping arm (TBA).
- Team 3476's 2023 Code - Swerve with pose estimation, custom superstructure management, and more (TBA).
- Team 5940's 2023 Code - Talon FX swerve with automated scoring/pickup and "Northstar" AprilTag vision system (TBA)
- Team 4099's 2023 Code - Kotlin code with a swerve, elevator, pose estimation, etc (TBA).
- Team 6328's 2022 Code - Spark Max differential drive with pose estimation and auto aiming (TBA).
- junction - Primary component of logging, manages the flow of data between user code, WPILib, log files, network clients, etc. Written in Java.
- junction/core - Central system for managing data, including reading and writing from log files and user code.
- junction/shims - Replaces components of other libraries (WPILib) to interact directly with
junction
.- junction/shims/wpilib - Replaces WPILib components to read data from
junction
instead of the HAL.
- junction/shims/wpilib - Replaces WPILib components to read data from
- junction/autolog - Annotation procesor for creating log input classes.
- conduit - Transfers data between
junction
and the WPILib HAL efficiently. Written in C++ and Java.
- build_tools - Utilities to assist with building in Bazel and interfacing with WPILib and the roboRIO.
- third_party - Tools for integrating third party libraries like WPILib.