Repository navigation
Conversation
Merge the WPILib-imported project into the existing Az-RBSI tree while retaining its project-specific build tasks, dependencies, sources, and editor configuration. Remove the imported copy after bringing its four new vendor dependencies and required configuration changes into this tree. Move GradleRIO to 2027.0.0-alpha-8 and switch Systemcore deployment to the importer's application/classpath model. Replace the ShadowJar deployment with the ordinary application jar, retaining source, vendordep, and Gradle backup contents in that jar. Keep generated BuildConstants, the event-branch deploy commit task, Spotless, Lombok, protobuf, explicit Jackson and AdvantageKit dependencies, the custom test source set, and JUnit 6.1.3. Configure JNI debug settings using the alpha-8 GradleRIO properties. Adopt the imported settings.gradle resolution of the 2027_alpha7 WPILib install, including the Linux XDG and macOS .wpilib paths. Update WPILib preferences to team 2486, preserve the original .gitignore, retain the direct Java launch entry, rename the WPILib debug launch to Systemcore, and add the imported Java debug CodeLens setting. Refresh AdvantageKit, Commands V2, PathPlanner, REVLib, and Phoenix 6 vendor dependencies; replace Phoenix6 26.50.0-alpha-1 with 26.70.0-alpha-2. Add the imported AprilTag, YAGSL Commands V2, and YAMS Commands V2 vendor files. Preserve the original-only Autopilot, URCL, and PhotonVision vendor files while aligning their WPILib year with 2027_alpha7. Keep the imported changes to the seven robot Java files selected during the merge. Adapt robot code to the 2027 WPILib APIs: start the robot with a supplier, move geometry zero constants and SysId/debouncer enum values to their new names, use Optional rotation angles and the current HID trigger accessors, map Systemcore CAN bus names to CANPort, and update CTRE generated drivetrain constants to use CANBus networks. Move RBSI Pair use to org.wpilib.util.Pair. Replace the local Alert implementation with WPILib alerts and map existing severity levels to the built-in levels; give per-instance drivetrain and module alerts unique IDs. Publish the field through Telemetry and migrate the autonomous and drive-style choices to LoggedNetworkChooser. Bridge the current PhotonVision alpha-2 binary against the removed AprilTag and Pair class names. The local AprilTagFieldLayout adapter wraps the new org.wpilib.fields.Field and reads the existing field-layout JSON schema. Document the temporary bridge and its removal steps for a future compatible PhotonVision release. Complete the REVLib 2027 Spark migration. Convert raw encoder rotations and RPM to the radians and radians/second expected by ModuleIO, convert drive velocity and steering setpoints back to controller units, and scale PID and feedforward gains to preserve their physical units. Apply identical scaling to high-rate odometry queues and decode CANcoder queue values as rotations. Remove configuration calls for conversion factors, hall sensor averaging, and custom position-wrapping range that REVLib removed. Document physical validation still needed for wheel direction, steering wraparound, odometry, velocity control, SysId, and possible gain retuning with the new firmware. Update tests for alpha-8 HAL, rotation, Optional, and CANPort APIs. Add focused Spark unit-conversion and steering wraparound tests. Verify with ./gradlew test using the installed WPILib JDK and git diff --check; both pass. Co-authored-by: Codex <codex@openai.com>
Correct timestamp units across robot and vision code after the 2027 API transition. RobotController.getTime(), NetworkTables Java sample timestamps, and AdvantageKit's clock now use nanoseconds; the old TimeUtil path treated raw time as microseconds. Replace TimeUtil call sites with WPILib Timer seconds, including drive, odometry, accelerometer, simulation, and power monitoring. Use Timer for Spark and Phoenix odometry sample timestamps. In Limelight IO, convert NetworkTables sample timestamps from nanoseconds to seconds, express heartbeat and orientation intervals in nanoseconds, and handle clock reversal. Apply nanosecond update intervals and an initial- sample sentinel guard to PhotonVision simulation. Clamp the power monitor's elapsed time at zero so a clock reset cannot subtract accumulated usage. Replace the local MathUtil helpers with WPILib applyDeadband, angleModulus, inputModulus, and lerp at their callers. Remove the unused GeomUtil, and remove MathUtil and TimeUtil after migrating their call sites. Keep the concurrent interpolation buffer because Drive currently uses its thread-safe access and oldest/newest/range queries; add a TODO to recheck whether a future WPILib buffer can provide those properties. Replace LoggedTunableNumber callers with AdvantageKit LoggedNetworkNumber behind DoubleSupplier fields. Preserve the existing /Tuning dashboard paths, tuning-mode defaults, and recorded-input replay behavior for battery amp- hours and flywheel speed. Pass the battery supplier into RBSIPowerMonitor. Keep the monitor's Conduit snapshot, current aggregation, battery estimate, energy integration, and alerts: WPILib PowerDistribution total power and energy are unsupported for the configured REV PDH and would return zero. Read CAN bus utilization, TX-full, receive-error, transmit-error, and bus-off status through RobotController.getCANStatus on the matching Systemcore CANPort. Retain the existing CAN log paths below each bus name. Remove the health-only CANBusLike adapters and simulation stubs from RBSICANBusRegistry while retaining real Phoenix CANBus instances for CTRE device constructors. Simplify the simulation/replay registry initializer. The WPILib receive/transmit error counters may not be directly comparable to the previous Phoenix REC/TEC values in historical logs. Refresh both root AdvantageScope layouts for the current swerve telemetry names and struct types: SwerveChassisVelocities, ChassisVelocities, SwerveModuleVelocity, and each module's velocity field. Point vision field traces to TagsSeenThisLoop and per-camera InjectedPose2d, and remove stale vision debug traces with no current output. Use the current estimated slot feedforward key. Expand CAN health plotting to the four active Systemcore buses, can_s1 through can_s4, with their utilization and error counters. Update unit tests for the WPILib math functions and nanosecond Limelight sample/heartbeat behavior. Add a simulation smoke check for native Systemcore CAN status polling. Verify with ./gradlew test, JSON parsing of both AdvantageScope layouts, and git diff --check. Co-authored-by: Codex <codex@openai.com>
Update the Az-FIRST copyright year range in all 65 Java source and test files that carry an Az-FIRST notice. Preserve each file's original start year: notices that began in 2024 now read 2024-2027, and notices that began in 2026 now read 2026-2027. Leave third-party copyright lines and licensing statements intact in mixed-origin files, including those attributed to Littleton Robotics, FIRST/WPILib, SleipnirGroup, and FRC 6328. Keep the repository's full GPL license and per-project BSD license copies. The bundled AdvantageKit and WPILib license files already match their current upstream Git blobs byte for byte, so this commit does not alter or invent their copyright years. Stage only the copyright line changes, separate from the ChoreoLib code restoration and REVLib vendordep update. Verify the staged diff contains exactly one notice replacement per file and passes git diff --check. Co-authored-by: Codex <codex@openai.com>
Add the compatible ChoreoLib 2027.0.0-alpha-3 vendordep supplied for the Systemcore/WPILib 2027 alpha toolchain. Restore the previously disabled Choreo imports, AutoFactory, LoggedNetworkChooser, and AutoRoutine wiring in RobotContainer. Keep separate manual, PathPlanner, and Choreo chooser initialization paths. Return the selected Choreo command from the Choreo accessor used by Robot.autonomousInit. Restore the example two-piece routine: load pickupGamepiece and scoreGamepiece trajectories, reset odometry before the pickup trajectory, and chain the scoring trajectory after pickup completes. Keep "Nothing" as the Choreo chooser default. These example trajectory files are not yet present under src/main/deploy/choreo, so they still need to be supplied before the two-piece option can drive a path. The configured AutoType remains MANUAL until explicitly selected for a robot. Re-enable Drive's Choreo trajectory followers using the 2027 ChassisVelocities API. Adapt SwerveSample.getChassisSpeeds() to the current vendordep, add X/Y/heading PID feedback to trajectory feedforward, and convert field-relative velocities to robot-relative commands. Restore the reusable ChoreoAutoController implementation with continuous heading input and reset behavior. Change RobotContainerTest to construct one container in CHOREO mode and check that it yields an autonomous command. A second RobotContainer in the same test process would register duplicate WPILib alert IDs, so the focused test exercises the restored mode directly. Verify the complete ./gradlew test suite and git diff --check with the installed WPILib JDK. Co-authored-by: Codex <codex@openai.com>
Advance REVLib from 2027.0.0-alpha-8 to 2027.0.0-alpha-9 in the vendordep metadata. Keep the existing 2027_alpha7 WPILib year, UUID, Maven URLs, platform declarations, and library names. Update every dependency version consistently across REVLib-java, the JNI driver and backend components, REVLib-cpp, and the corresponding C++ driver/backend entries. Keep this dependency refresh separate from the Az-FIRST copyright notice update and the ChoreoLib autonomous reintegration so each change can be reviewed or reverted independently. Validate the vendordep as JSON and confirm all eight dependency declarations use the same alpha-9 version. The complete ./gradlew test suite passed with this vendordep installed and the restored ChoreoLib code present; git diff --check is clean. Co-authored-by: Codex <codex@openai.com>
Package version 1.1.0 of the FRC BIOCORE High Contrast theme as a VSIX. Keep the dark teal foundation and FIRST CANOPY season colors while adding more distinct syntax colors for control flow, operators, functions, types, properties, constants, strings, numbers, comments, markup, and regular expressions. Expand semantic token coverage and define workbench colors for UI roles previously left to VS Code defaults. Select the theme in workspace settings and put its extension ID first in the workspace recommendations. Update the README to point at the new VSIX and explain that the project selects the theme after installation. The VSIX remains the only new theme artifact in the repository; it does not auto-install when the project is opened. Validate the VSIX archive and its embedded theme/package JSON, the workspace configuration, and git diff --check. Co-authored-by: Codex <codex@openai.com>
Change Imu to hold the generated ImuIOInputsAutoLogged type and pass it to Logger.processInputs immediately after the hardware IO update. This records connection state, yaw and yaw rate, acceleration, latency, and the timestamped yaw samples consumed by DriveOdometry. In replay mode, AdvantageKit can now populate those fields from a new recording instead of leaving the no-op IMU at its disconnected, zero-yaw defaults. Existing logs made before this change do not contain the IMU input entry and cannot recover those missing samples. Stop calling AdvantageKit Logger.recordOutput from the Phoenix and Spark odometry sampling threads. Keep each dropped-sample count in a volatile field with a package-local snapshot getter, and publish the same existing log keys from DriveOdometry's main-thread periodic path in real mode. This follows AdvantageKit's single-threaded logging contract without changing queue sampling or the concurrent interpolation buffer. Verify the generated IMU serializer includes the yaw sample arrays. Run the full offline Gradle test suite with the installed WPILib Java 25 toolchain and confirm git diff --check is clean. Co-authored-by: Codex <codex@openai.com>
Remove the inherited roboRIO-era real-time priority changes from Robot construction and each robot loop. Retain the existing loop timing outputs, measuring virtual subsystem and scheduler work directly without priority transition intervals. Replace the disconnected roboRIO accelerometer stub with a controller IO backed by WPILib's Systemcore OnboardIMU. Carry its native meters-per-second- squared readings through the IO contract without multiplying by gravity. Timestamp samples in nanoseconds, mark non-finite readings invalid, and record raw controller inputs through AdvantageKit for replay. Rotate the onboard axes with a renamed Systemcore orientation constant and derive jerk from the actual sample interval rather than an assumed 20 ms loop. Rename acceleration outputs from Accel/Rio to Accel/Systemcore, remove the obsolete fixed sample-rate constant, and update configuration guidance and the no-op/units tests. Verify the full offline Gradle test suite with the installed WPILib Java 25 toolchain and check the diff for whitespace errors. Co-authored-by: Codex <codex@openai.com>
Make the 2027 Systemcore configuration explicit in a supported-configurations guide linked from the project front door and documentation index. Record the checked-in COMPBOT, Phoenix/Pigeon, manual-auto, and PhotonVision selections, along with the limits of each branch. Explain why YAGSL remains deferred despite the V3 vendordep, why V3 PathPlanner/Choreo are unavailable, and what remains to be supplied and tuned for the V2 autonomous integrations. Point to the temporary PhotonVision compatibility note. Separate the template flywheel from active robot hardware. Add an explicit ExampleFlywheelHardware selector that defaults to DISABLED. The REAL container now constructs no flywheel motor controllers until TALON_FX or SPARK_MAX is deliberately chosen; simulation retains the simulated IO, and replay retains the no-op IO. Register the right-bumper flywheel command and flywheel SysId chooser entries only when the example has a simulated or selected physical IO. Keep the sample CAN and power-port IDs visibly labeled as examples. Update the constants, autonomous, and SysId guides so the physical bring-up steps match the runtime defaults. This avoids publishing a characterization option for an unconnected example mechanism on a real robot while retaining the example for simulation and deliberate hardware adoption. Verification: spotlessApply and the complete offline Gradle test suite passed with the bundled WPILib Java 25 JDK. Co-authored-by: Codex <codex@openai.com>
Register the Commands V2 scheduler's initialize, finish, and interrupt callbacks after starting AdvantageKit and before constructing RobotContainer. Track active commands from those callbacks and publish the active list to Commands/Active once per robot loop. Collect lifecycle transitions in order and write them as a Commands/Events string array after each scheduler run. Keeping all transitions from a loop in one array preserves commands that start and finish within a single loop and avoids overwriting earlier events at the same AdvantageKit key. Include the interrupting command when the scheduler provides one. Assign stable per-instance command labels so multiple instances with the same name can be distinguished without relying on VM identity hash values that change between runs. Retain the existing Field2d telemetry publication for dashboard compatibility; this commit changes only command logging. Verify the full offline Gradle test suite with the installed WPILib Java 25 toolchain and confirm git diff --check is clean. Co-authored-by: Codex <codex@openai.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Migrate Az-RBSI from
developto WPILib 2027 alpha-8 and the Systemcore deployment model, while retaining the project’s custom build tasks, logging, tests, and documentation.This PR remains on Commands V2. The separate
commands_v3branch is not part of this merge.Changes
RobotController.getCANStatus.OnboardIMUfor acceleration in meters per second squared, and remove the legacy robot-thread priority switching.Configuration and follow-up
AutoType.MANUALis the checked-in configuration. YAGSL runtime remains deferred until its deploy JSON and gyro selection are updated for Systemcore.Validation
git diff --checkpassed.