Skip to content

Repository files navigation

2026 Rebuilt - AdvantageKit Logging Reference

Quick reference for all Logger.recordOutput() keys. Open these in AdvantageScope to troubleshoot.


Drive (SwerveSubsystem)

Odometry & Pose

KeyTypeWhat it tells you
Drive/PosePose2dCurrent robot pose from odometry
Odometry/RobotPose2dSame as Drive/Pose (duplicate for AdvantageScope field widget)
Drive/HeadingRotation2dCurrent robot heading
Drive/OdometryHeadingRotation2dHeading from the pose (should match Drive/Heading)
Drive/GyroYawRotation2dRaw gyro yaw
Drive/GyroPitchRotation2dRaw gyro pitch
Drive/GyroRollRotation2dRaw gyro roll
Drive/GyroRotation3dRotation3dFull 3D gyro orientation

Velocity

KeyTypeWhat it tells you
Drive/RobotVelocityChassisSpeedsMeasured velocity in robot frame
Drive/FieldVelocityChassisSpeedsMeasured velocity in field frame
Drive/CommandedRobotVelocityChassisSpeedsWhat we told the drivebase to do (robot frame)
Drive/CommandedFieldVelocityChassisSpeedsWhat we told the drivebase to do (field frame)
Drive/CommandedOmegadoubleCommanded rotational rate (rad/s). Should be ~0 with no turn input
Drive/ActualOmegadoubleMeasured rotational rate (rad/s). Compare with commanded to check responsiveness

Module States

KeyTypeWhat it tells you
Drive/CurrentModuleStatesSwerveModuleState[]Actual speed + angle of each module
Drive/DesiredModuleStatesSwerveModuleState[]What we commanded each module to do
Drive/ModulePositionsSwerveModulePosition[]Drive distance + angle for each module

Aim - Hub (SOTM)

KeyTypeWhat it tells you
Drive/Aim/DynamicHubPosePose2dVelocity-compensated hub aim point. Overlay on field to see SOTM lead
Drive/Aim/StaticHubPosePose2dActual hub position. Compare with dynamic to see how much lead is applied
Drive/Aim/TargetAngleDegdoubleDesired robot heading to face the compensated hub
Drive/Aim/CurrentHeadingDegdoubleActual robot heading. Compare with target to sanity check error
Drive/Aim/ErrorDegHubdoubleDegrees off from hub aim target. Should converge to ~0 when aiming. If not, PID tuning issue
Drive/Aim/DistanceToHubMdoubleDistance to compensated hub. Correlate with shot accuracy to validate TOF table
Drive/Aim/RobotVelXdoubleField-relative X velocity (m/s). If SOTM lead looks wrong, check for noisy velocity
Drive/Aim/RobotVelYdoubleField-relative Y velocity (m/s)
Drive/Aim/IsLockedbooleanIf true, SOTM is bypassed and static hub pose is used

Aim - Ferry

KeyTypeWhat it tells you
Drive/Aim/DynamicFerryPosePose2dVelocity-compensated ferry aim point. Overlay on field to verify correct ferry spot
Drive/Aim/ErrorDegFerrydoubleDegrees off from ferry aim target. Same use as hub error
Drive/Aim/DistanceToFerryMdoubleDistance to ferry target. Useful if passes fall short or overshoot

Autonomous Recovery

KeyTypeWhat it tells you
Drive/Auto/TargetPathPosePose2dWhere PathPlanner wants the robot to be right now
Drive/Auto/PathFollowingErrorMdoubleDistance (m) between robot and path target. Graph to see when error spikes
Drive/Auto/IsOffPathbooleanTrue when error > 0.15m. This is when followWithRecovery switches to recovery path
Auto/CurrentPathStringName of the PathPlanner path currently executing. Changes to recovery path name when recovery fires
Auto/RecoveryPathStringName of the configured recovery path for the current segment
Auto/RecoveryTriggeredbooleanFlips to true when the robot actually takes the recovery branch (not just off-path)
Auto/PathLoadErrorStringError message if a path file fails to load. Empty normally — if populated, that auto segment returned Commands.none()
Auto/ShootingAttemptedbooleanTrue when makeAutoShootCommand fires during auto
Auto/InAllianceZonebooleanWhich branch auto shooting took — true = shoot at hub, false = no-op

Shooter

KeyTypeWhat it tells you
Shooter/Right1RPMdoubleRight flywheel 1 speed
Shooter/Right2RPMdoubleRight flywheel 2 speed
Shooter/Left1RPMdoubleLeft flywheel 1 speed
Shooter/Left2RPMdoubleLeft flywheel 2 speed
Shooter/TargetRPMdoubleCommanded flywheel RPM. Compare with actual to check spin-up time
Shooter/TargetKickerRPMdoubleCommanded kicker RPM
Shooter/Right1AppliedVoltsdoubleVoltage applied to right motor 1
Shooter/Right2AppliedVoltsdoubleVoltage applied to right motor 2
Shooter/Left1AppliedVoltsdoubleVoltage applied to left motor 1
Shooter/Left2AppliedVoltsdoubleVoltage applied to left motor 2
Shooter/KickerLeftRPMdoubleLeft kicker actual speed
Shooter/KickerRightRPMdoubleRight kicker actual speed
Shooter/KickerLeftAppliedVoltsdoubleVoltage applied to left kicker
Shooter/KickerRightAppliedVoltsdoubleVoltage applied to right kicker
Shooter/LUTCurrentTargetRPMdoubleRPM from the lookup table for current distance
Shooter/LUTDistancedoubleDistance used for the LUT lookup

Intake

KeyTypeWhat it tells you
Intake/DesiredPercentdoubleCommanded intake percent output
Intake/AppliedVoltsdoubleActual voltage to intake motor
IntakeRightRPMdoubleRight intake roller speed
IntakeLeftRPMdoubleLeft intake roller speed
IntakeTargetRPMdoubleTarget intake RPM from constants

Hopper

KeyTypeWhat it tells you
Hopper/PushdownDesiredPercentdoubleCommanded pushdown (right twindexer) percent
Hopper/TransferDesiredPercentdoubleCommanded transfer (left twindexer) percent
Hopper/TwindexerRightMotordoubleRight twindexer applied output
Hopper/TwindexerLeftMotordoubleLeft twindexer applied output

Pushout

KeyTypeWhat it tells you
Pushout/DesiredPercentdoubleCommanded pushout percent output

Object Detection

KeyTypeWhat it tells you
ObjectDetection/PipelineHasTargetsbooleanWhether the camera sees any game pieces
ObjectDetection/TargetPoseTransform3dBest camera-to-target transform
ObjectDetection/AlignToFuelPosePose2dComputed pose to drive to for pickup

Shooting Sequence (RT Command)

These log the state of the RT shooting/passing sequence — the gates that control when feeding starts and stops.

KeyTypeWhat it tells you
Shooting/RTHeldbooleanWhether the driver right trigger is pressed
Shooting/InAllianceZonebooleanWhich branch was taken — true = shooting at hub, false = passing to ferry
Shooting/AimLock1DegbooleanTrue when aim error is within 1 deg of hub. This is the gate for feeding to start
Shooting/AimLock3DegbooleanTrue when aim error is within 3 deg of hub. Feeding stops if this goes false
Shooting/FerryAimLock3DegbooleanTrue when aim error is within 3 deg of ferry target. Gate for ferry feeding

Controller Input

Driver

KeyTypeWhat it tells you
Input/Driver/LeftXdoubleLeft stick X axis
Input/Driver/LeftYdoubleLeft stick Y axis
Input/Driver/RightXdoubleRight stick X axis
Input/Driver/RightYdoubleRight stick Y axis
Input/Driver/LeftTriggerdoubleLeft trigger axis (0-1)
Input/Driver/RightTriggerdoubleRight trigger axis (0-1)

Operator

KeyTypeWhat it tells you
Input/Operator/LeftXdoubleLeft stick X axis
Input/Operator/LeftYdoubleLeft stick Y axis
Input/Operator/RightXdoubleRight stick X axis
Input/Operator/RightYdoubleRight stick Y axis
Input/Operator/LeftTriggerdoubleLeft trigger axis (0-1)
Input/Operator/RightTriggerdoubleRight trigger axis (0-1)

Important Notes

  • Aim logs only appear when RT is held (isAiming = true). If you don't see Drive/Aim/ keys updating, the aim command isn't running.
  • Auto recovery logs run always during auto and teleop.
  • All Drive/ logs come from SwerveSubsystem.periodic(). All Shooter/ logs come from Shooter.periodic(). Controller input logs come from RobotContainer.

Troubleshooting Guide

Drivetrain Issues

SymptomWhat to checkWhat it means
Robot drifting when driving straightDrive/CommandedOmega should be ~0, check Drive/ActualOmegaIf actual omega is nonzero with zero commanded, heading correction may be off or gyro is drifting
Robot not driving at full speedDrive/CommandedFieldVelocity vs Drive/FieldVelocityIf commanded is low, check for scaleTranslation. If actual is low but commanded is high, mechanical issue
Odometry jumpingDrive/Pose on field view, check for sudden teleportsVision measurement with bad data got accepted. Check Limelight rejection thresholds
Modules fighting each otherDrive/CurrentModuleStates vs Drive/DesiredModuleStatesIf angles are far apart, module PID tuning issue or encoder offset wrong

Aiming / SOTM Issues

SymptomWhat to checkWhat it means
Aim lagging behind while movingCheck if aimLookahead is set in AimAtHub. Graph ErrorDegHubWithout lookahead, aim chases current position instead of leading. Should have 0.2s lookahead
Aim oscillating, never settlingGraph ErrorDegHub — if it bounces +/- degreesHeading PID gains too aggressive, or aimFeedforward values need tuning
Aim not tracking at allCheck Drive/Aim/DynamicHubPose exists in logIf missing, isAiming is false — AimAtHub isn't running. Check command scheduling
SOTM lead looks wrongCompare DynamicHubPose vs StaticHubPose on field viewLead should point opposite to robot velocity. If not, check RobotVelX/RobotVelY for noisy readings
Aim stops when shooter reaches speedCheck if AimAtHub gets interrupted in command schedulerlockCommand or another drivebase command may be taking over. AimAtHub should hold drivebase the entire time
Shots missing at distanceGraph DistanceToHubM and correlate with Shooter/LUTDistanceIf they don't match, the shooter RPM lookup is using a different distance than the aim system
IsLocked is true unexpectedlyCheck Drive/Aim/IsLockedWhen locked, SOTM is bypassed and static hub pose is used. Robot must be stationary (no sticks) for this

Shooting Sequence Issues

SymptomWhat to checkWhat it means
Nothing happens when RT pressedShooting/RTHeld should be trueIf false, trigger not registering. If true, check Shooting/InAllianceZone — may have taken wrong branch
Shooter spins but never feedsShooting/AimLock1Deg — is it ever true?Feeding waits for shooter at speed AND aim within 1 deg. If aim never locks, check ErrorDegHub
Feeding starts then immediately stopsShooting/AimLock3Deg — does it flicker?Feeding has a 3 deg onlyWhile gate. If aim oscillates around 3 deg, feeding cuts in and out
Shooting when not aimed at hubShooting/AimLock1Deg should be false until aimedIf true when not aimed, the aimLock threshold may be too loose or the error calculation is wrong
Passing not working in opponent zoneShooting/InAllianceZone should be falseIf true, robot thinks it's in alliance zone. Check zone boundary thresholds (182in blue, 469in red)
Ferry feeding cuts outShooting/FerryAimLock3Deg — is it stable?Same as hub — if aim oscillates near 3 deg, feeding stops. May need wider threshold

Shooter Motor Issues

SymptomWhat to checkWhat it means
Shooter not spinning upShooter/TargetRPM — is it nonzero?If zero, the shoot command isn't running. If nonzero, check AppliedVolts — motor may not be responding
Shooter slow to reach speedGraph Shooter/TargetRPM vs actual RPMs over timeLarge gap = PID too slow, voltage sag, or mechanical drag
Left/Right shooter mismatchCompare Left1RPM/Left2RPM vs Right1RPM/Right2RPMIf one side lags, check for mechanical binding or motor issue on that side
Kicker not feedingShooter/KickerLeftRPM and KickerRightRPM should be nonzeroIf zero, kicker command isn't running. Check the shooting sequence composition
Shots inconsistent at same distanceShooter/LUTCurrentTargetRPM should be stableIf RPM fluctuates, the distance reading is noisy — check LUTDistance

Intake / Hopper Issues

SymptomWhat to checkWhat it means
Intake not runningIntake/DesiredPercent — should be nonzero when commandedIf zero, command isn't reaching the intake. If nonzero but AppliedVolts is zero, motor issue
Fuel not transferring to shooterHopper/TransferDesiredPercent and Hopper/PushdownDesiredPercentBoth should be nonzero during the feed sequence
Fuel jammingCheck if Pushout/DesiredPercent is cycling (agitate)If not, the agitate command may not be running in the shooting sequence

Auto Recovery Issues

SymptomWhat to checkWhat it means
Recovery triggering too earlyGraph PathFollowingErrorM — what's the normal tracking error?If it regularly hits 0.12-0.14m during normal runs, the 0.15m threshold is too tight. Increase to 0.2-0.25m
Recovery not triggering when knockedIsOffPath should flip true when hitIf it stays false, the threshold is too loose or targetPathPose isn't updating (check configurePathPlannerLogging)
Recovery flickeringIsOffPath rapidly toggles true/falseRobot is hovering at the threshold boundary. Need hysteresis or a wider threshold
Robot recovers but ends up in wrong spotOverlay TargetPathPose and Drive/Pose on field viewRecovery path may not end where the next auto step expects. Check recovery path endpoints
Auto segment does nothingCheck Auto/PathLoadError for an error messageIf populated, the path file failed to load and the segment silently returned a no-op. Verify path file names in PathPlanner
Can't tell if recovery actually firedCheck Auto/RecoveryTriggered — should flip trueIsOffPath can be true without recovery running (e.g., checked twice). RecoveryTriggered confirms the recovery branch was taken
Don't know which path is runningCheck Auto/CurrentPath — updates at each segment startChanges from main path name to recovery path name when recovery fires. Correlate with RecoveryTriggered
Auto shooting not firingCheck Auto/ShootingAttempted and Auto/InAllianceZoneIf ShootingAttempted is true but InAllianceZone is false, robot thinks it's outside alliance zone — check zone boundaries

Controller Input Issues

SymptomWhat to checkWhat it means
Robot not responding to sticksCheck Input/Driver/LeftX, LeftY, RightXIf values change with sticks, the issue is downstream. If stuck at 0, controller not connected or wrong port
Wrong controller is drivingCompare Input/Driver/ vs Input/Operator/ values while pressing sticksController may be assigned to wrong role. Check the driver/operator chooser

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages