Credits#

The WPILib documentation#

This course is built on top of the WPILib documentation, the official FRC programming reference, written by the WPILib contributors.

Parts of this course are adapted from the WPILib documentation, which is licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0). Source: wpilibsuite/frc-docs (the stable branch, for the 2026 season).

Everything adapted from the WPILib docs is marked where it appears:

  • Boxes titled "From the WPILib docs" contain text adapted from the docs, with a link to the original page.
  • Diagrams and screenshots from the docs have a caption naming the source page.
  • The interactive PID tuning simulators are WPILib's, with a caption naming the source page.

Changes made: text was shortened, reworded for beginners, and combined with this course's own explanations; some terms were changed to match this course (for example, "measurement" instead of "output"). Diagrams and screenshots are unchanged. The simulator scripts are combined into one file, the same way the WPILib docs build them, and are otherwise unchanged.

Adapted material, by page#

In this course Adapted from (WPILib docs)
Lesson 0: Setup Creating a Robot Program; Simulation Specific User Interface Elements
Lesson 4: Electronics roboRIO Brownout and Understanding Current Draw; CAN Wiring Basics
Lesson 4.3: Sensors Digital Inputs - Hardware; Analog Potentiometers - Hardware; Encoders - Software; Gyroscopes - Hardware
Lesson 7: Command-Based Programming What Is "Command-Based" Programming?
Lesson 7.1: The Command Scheduler The Command Scheduler; diagrams scheduler-run-sequence and scheduler from the docs source
Lesson 11: Autonomous Diagram concurrent-commands from the docs source
Lesson 12: PID Feedback Introduction to PID; Control System Basics; turret simulator from Tuning a Turret Position Controller
Lesson 13: Feedforward Arm simulator from Tuning a Vertical Arm Position Controller
Lesson 13.1: SysId Screenshot from Viewing Diagnostics
Lab 0 Screenshots from Creating a Robot Program, 3rd Party Libraries, Building and Deploying Robot Code, and Viewing Console Output
Lab 4, Lab 5, Lab 6, Lab 8 Wiring and sensor diagrams from the hardware and sensor pages listed above
Lab 9 Turret simulator from Tuning a Turret Position Controller
Lab 10 Elevator simulator and tuning steps from Tuning a Vertical Elevator with Motion Profiling

The simulators also load a small script of our own, pid-tune-fixes.js, which makes their graphs keep drawing when the simulator is taller than the screen (on phones). It doesn't change how the simulations behave.

Mantik, by Itkan Robotics#

Lessons 17–21 and Lab 11 are partly adapted from Mantik, an FRC programming course by Itkan Robotics. Mantik's lesson text is licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0); its code is BSD-3-Clause.

Changes made: the lessons were rewritten for beginners in this course's format, and the examples were rewritten for the RoboJacks West Coast Drive (Through Bore Encoders on the roboRIO, NavX2, CIMs), WPILib 2026, and the course's telemetry library. Some sections were added (calibration steps for the WCD, differential-drive PathPlanner setup, red-alliance notes); a few statements were corrected against vendor documentation. Each adapted page ends with a credit line.

In this course Adapted from (Mantik)
Lesson 17: Poses and Odometry Introduction to Pose Estimation; Odometry
Lesson 18: Vision Fused Pose Estimation; Pose Estimation Calibration (rewritten for PhotonVision)
Lesson 19: PathPlanner PathPlanner: Visual Autonomous Routines
Lesson 20: Logs, AdvantageScope & AdvantageKit AdvantageScope; AdvantageKit; Hardware Abstraction with IO Layers
Lesson 21: Swerve Drive Swerve Drive Example; Odometry
Lab 11: Odometry Odometry; Pose Estimation Calibration

The site's search box was inspired by Mantik's site search; it's written for this course and doesn't use Mantik's code.

Third-party libraries and their documentation#

Lessons 18–20 teach libraries made by other teams and projects. Their licenses, checked in each project's repository:

Project Software license Documentation license
PathPlanner and PathPlannerLib MIT, © Michael Jansen MIT (the docs are in the same repository)
PhotonLib (robot-side library) MIT, © PhotonVision CC BY 4.0
PhotonVision (coprocessor software) GNU GPL v3 CC BY 4.0
NMRC code camp level 2 (2026) No license file (only the WPILib and AdvantageKit template licenses) —

Lesson 19.1 adapts steps from the PathPlanner documentation and uses its screenshots (the assets/pathplanner folder), © Michael Jansen, under the MIT License, whose notice is included with them. The course doesn't copy text from the PhotonVision documentation; it links to it. Lesson 18's vision subsystem follows the code camp example's approach but is written for this course.

Other sources#

  • Motor specifications: REV Robotics NEO V1.1; CIM and 775pro figures from RobotPy's motor configurations.
  • NavX2 API details: Studica's AHRS Java documentation.
  • The course's telemetry library copies the class and method names of WPILib 2027's Telemetry and Tunables APIs, from their design documents. The code is written for this course.
  • Lesson 6.1's 2027 comparison is based on WPILib's Telemetry and Tunables design documents in wpilibsuite/allwpilib and the Removed features page. The 2027 APIs were still in preview when this was written.
  • PathPlannerLib API details: the PathPlanner source and documentation (2026 release). PhotonLib API details: the PhotonVision source (v2026.3.4).
  • Lesson 18's vision subsystem follows PhotonVisionSubsystem.java from the NMRC code camp (level 2, 2026), adapted for a differential drive.
  • Elastic connection modes and widget behavior: the Elastic documentation, by Team 353.

Trademarks#

FIRST®, FIRST® Robotics Competition, and FRC® are trademarks of FIRST. REV, SPARK MAX, NEO, and Through Bore Encoder are trademarks of REV Robotics. NavX is a trademark of Kauai Labs / Studica. This course is made by FRC Team 4674 RoboJacks and isn't affiliated with or endorsed by any of them.