From 745738cd2176352ad8b5f9789f5516afa5c3e83b Mon Sep 17 00:00:00 2001 From: samfreund Date: Thu, 10 Sep 2026 19:51:23 -0500 Subject: [PATCH 1/9] Advantage Scope --> AdvantageScope Signed-off-by: samfreund --- .../learning-course/stage1/stage1a/kitbot-additional-motors.mdx | 2 +- src/content/docs/learning-course/stage1/stage1a/simple-auto.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/learning-course/stage1/stage1a/kitbot-additional-motors.mdx b/src/content/docs/learning-course/stage1/stage1a/kitbot-additional-motors.mdx index fef850f7..b4618a76 100644 --- a/src/content/docs/learning-course/stage1/stage1a/kitbot-additional-motors.mdx +++ b/src/content/docs/learning-course/stage1/stage1a/kitbot-additional-motors.mdx @@ -250,7 +250,7 @@ This will stop the motors. The process for testing the new motors in teleop is very similar to the process used to test the drivetrain. Holding the "E" key will cause the robot to intake, "Q" will cause the robot to launch. and "R" will cause the robot to outtake. -Instead of looking at the 2D Field tab in Advantage Scope, use the Line Graph tab to view data from the motors. +Instead of looking at the 2D Field tab in AdvantageScope, use the Line Graph tab to view data from the motors. The voltage applied from the motor controllers to their motors can be viewed on the left axis while the right axis shows the motors' velocities. Video showing line 2d graph running goes here. diff --git a/src/content/docs/learning-course/stage1/stage1a/simple-auto.mdx b/src/content/docs/learning-course/stage1/stage1a/simple-auto.mdx index 6c52ab52..002f3048 100644 --- a/src/content/docs/learning-course/stage1/stage1a/simple-auto.mdx +++ b/src/content/docs/learning-course/stage1/stage1a/simple-auto.mdx @@ -67,7 +67,7 @@ If `hasElapsed(4)` instead returns false, then less than four seconds must have # Running Your Auto -To test the auto routine, start the simulation, and connect Advantage Scope. +To test the auto routine, start the simulation, and connect AdvantageScope. Then, select autonomous mode and `MyAuto` OpMode in the Sim GUI. Now when the robot is enabled the auto should run. From cada35372ea2147dbb9eab9c883377f89ae727be Mon Sep 17 00:00:00 2001 From: samfreund Date: Thu, 10 Sep 2026 20:25:23 -0500 Subject: [PATCH 2/9] fix links Signed-off-by: samfreund --- src/config/sidebarConfig.ts | 8 -------- .../learning-course/getting-started/vscode-overview.mdx | 4 ++-- .../getting-started/website-feature-guide.mdx | 2 +- .../docs/learning-course/stage0/stage-overview.mdx | 2 +- .../stage1/stage1b/commands-and-mechanisms.mdx | 2 +- 5 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/config/sidebarConfig.ts b/src/config/sidebarConfig.ts index 07479c8f..68ab6009 100644 --- a/src/config/sidebarConfig.ts +++ b/src/config/sidebarConfig.ts @@ -274,10 +274,6 @@ export const sidebarSections: Record = { { label: 'Documentation', slug: 'resources/docs' }, { label: 'Hardware', slug: 'resources/hardware-intro' }, { label: 'Examples', slug: 'resources/examples' }, - { - label: 'Transitioning to Commands V3', - slug: 'resources/transitioning-to-commands-v3', - }, ], }, ], @@ -370,10 +366,6 @@ export const sidebarSections: Record = { label: 'Documentation', slug: 'resources/docs', }, - { - label: 'Transitioning to Commands V3', - slug: 'resources/transitioning-to-commands-v3', - }, ], }, ], diff --git a/src/content/docs/learning-course/getting-started/vscode-overview.mdx b/src/content/docs/learning-course/getting-started/vscode-overview.mdx index 3e93a44f..723e926d 100644 --- a/src/content/docs/learning-course/getting-started/vscode-overview.mdx +++ b/src/content/docs/learning-course/getting-started/vscode-overview.mdx @@ -1,8 +1,8 @@ --- title: VS Code Overview description: Overview of the VS Code program and interface for using WPILib. -prev: learning-course/learning-course/getting-started/required-tools -next: learning-course/learning-course/getting-started/forking-and-cloning +prev: learning-course/getting-started/required-tools +next: learning-course/getting-started/forking-and-cloning --- ## What Is VS Code diff --git a/src/content/docs/learning-course/getting-started/website-feature-guide.mdx b/src/content/docs/learning-course/getting-started/website-feature-guide.mdx index d2c262ed..5dcfd84e 100644 --- a/src/content/docs/learning-course/getting-started/website-feature-guide.mdx +++ b/src/content/docs/learning-course/getting-started/website-feature-guide.mdx @@ -2,7 +2,7 @@ title: Website Feature Guide description: Learn about the features of FRC Software to navigate the content effectively prev: /learning-course/index -next: learning-course/learning-course/getting-started/forking-and-cloning +next: learning-course/getting-started/forking-and-cloning --- Before you start learning, there are several features across the website that, if missed, will make it hard to go through the lessons effectively. diff --git a/src/content/docs/learning-course/stage0/stage-overview.mdx b/src/content/docs/learning-course/stage0/stage-overview.mdx index 1c0e9394..325330bf 100644 --- a/src/content/docs/learning-course/stage0/stage-overview.mdx +++ b/src/content/docs/learning-course/stage0/stage-overview.mdx @@ -2,7 +2,7 @@ title: Stage 0 Overview description: An Introduction what topics that will be covered in Stage 0 prev: /learning-course/getting-started/forking-and-cloning/ -next: /learning-course/stage0/intro-to-iava/java-fundamentals +next: /learning-course/stage0/java-fundamentals/ --- Learning the basics of Java is the most important step in learning FRC programming because it builds the foundation. diff --git a/src/content/docs/learning-course/stage1/stage1b/commands-and-mechanisms.mdx b/src/content/docs/learning-course/stage1/stage1b/commands-and-mechanisms.mdx index c025a939..45c86aed 100644 --- a/src/content/docs/learning-course/stage1/stage1b/commands-and-mechanisms.mdx +++ b/src/content/docs/learning-course/stage1/stage1b/commands-and-mechanisms.mdx @@ -2,7 +2,7 @@ title: Commands & Mechanisms, Part 1 description: The basics of defining mechanisms and writing commands prev: learning-course/stage1/stage1b/the-command-body -next: learning-course/stage1/stage1b/why-mechanisms +next: learning-course/stage1/stage1b/triggers codeRegionSources: default: stage1/stage1b/snippets/src/main/java/sources/CommandsAndMechsPt1.java --- From fff63fd6c5221d8be58fda3129941013f3b40615 Mon Sep 17 00:00:00 2001 From: samfreund Date: Thu, 10 Sep 2026 20:35:38 -0500 Subject: [PATCH 3/9] fix missing colon Signed-off-by: samfreund --- .../docs/learning-course/stage1/stage1a/kitbot-drivetrain.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/learning-course/stage1/stage1a/kitbot-drivetrain.mdx b/src/content/docs/learning-course/stage1/stage1a/kitbot-drivetrain.mdx index ace25cac..5440d8e6 100644 --- a/src/content/docs/learning-course/stage1/stage1a/kitbot-drivetrain.mdx +++ b/src/content/docs/learning-course/stage1/stage1a/kitbot-drivetrain.mdx @@ -248,7 +248,7 @@ An instance of `DifferentialDrive` should be created under where the motor contr Notice how the `DifferentialDrive` constructor takes the form `DifferentialDrive(DoubleConsumer leftMotor, DoubleConsumer rightMotor)`. When created the `DifferentialDrive` is asking for a `DoubleConsumer` that it can use to drive the left and right motors. A `Consumer` is simply a function that takes something as an input so a `DoubleConsumer` is a function that takes a double as an input when called. -The `motorController:setThrottle` syntax is used to proved the `DifferentialDrive` instance with the motor controllers `setThrottle()` function. +The `motorController::setThrottle` syntax is used to proved the `DifferentialDrive` instance with the motor controllers `setThrottle()` function. This function commands the motor to run a percentage of their maximum speed, also known as duty cycle, with an input from -1.0 to 1.0. This allows the `DifferentialDrive` instance to call the provided motors controller's `setThrottle()` functions with the correct duty cycle when provided with input from the joysticks. From 3e7f951e273923d683f4da16f6aab6eb029e0104 Mon Sep 17 00:00:00 2001 From: samfreund Date: Thu, 10 Sep 2026 21:19:03 -0500 Subject: [PATCH 4/9] various typos Signed-off-by: samfreund --- src/content/docs/contribution/contributors.mdx | 2 +- .../introduction/preparation.mdx | 2 +- .../docs/educators-guide/stage1/stage1a.mdx | 2 +- .../getting-started/vscode-overview.mdx | 2 +- src/content/docs/learning-course/index.mdx | 2 +- .../stage0/java-fundamentals.mdx | 2 +- .../stage1/stage1a/drivetrain-sim.mdx | 2 +- .../stage1a/kitbot-additional-motors.mdx | 10 +++++----- .../stage1/stage1a/kitbot-drivetrain.mdx | 18 +++++++++--------- .../stage1b/command-based-kitbot-pt2.mdx | 2 +- src/data/glossary.ts | 2 +- src/data/glossary.yaml | 4 ++-- 12 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/content/docs/contribution/contributors.mdx b/src/content/docs/contribution/contributors.mdx index 997f40e3..577bfbb0 100644 --- a/src/content/docs/contribution/contributors.mdx +++ b/src/content/docs/contribution/contributors.mdx @@ -45,7 +45,7 @@ Thank you to our Project leads as their contributions and hard work made FRCSoft ## Primary Contributors -Thank to you our Primary contributors who contributions helped FRCSoftware get started. +Thank you to our Primary contributors whose contributions helped FRCSoftware get started. While the commands v3 library retains many elements from the v2 library, diff --git a/src/content/docs/educators-guide/stage1/stage1a.mdx b/src/content/docs/educators-guide/stage1/stage1a.mdx index b8cc6d07..9073d3ad 100644 --- a/src/content/docs/educators-guide/stage1/stage1a.mdx +++ b/src/content/docs/educators-guide/stage1/stage1a.mdx @@ -46,7 +46,7 @@ Students will complete the kitbot code by 1. Creating the `IntakeLauncher` and `Feeder` motors. 2. Controlling these motors inside of their Teleop OpMode using `If/elseIf/else` statements. 3. Adding simulation to these motors using the provided `SingleFlywheelSim` class. -4. Visualizing their simulated code using AdvantageScope Line Graph and Field3d tabs. +4. Visualizing their simulated code using AdvantageScope Line Graph and Field3D tabs. # Additional Practice diff --git a/src/content/docs/learning-course/getting-started/vscode-overview.mdx b/src/content/docs/learning-course/getting-started/vscode-overview.mdx index 723e926d..cf670b40 100644 --- a/src/content/docs/learning-course/getting-started/vscode-overview.mdx +++ b/src/content/docs/learning-course/getting-started/vscode-overview.mdx @@ -95,4 +95,4 @@ One key feature of WPILib VS Code and the WPILib extension is the commands avail src="/learning-course/getting-started/vscode-overview/IMG_0155.webp" /> -To access the WPILib commands, which are shows in the large red box on the screenshot, you can either open the command palette using the keyboard shortcut `Ctrl+Shift+P` / `Cmd+Shift+P`, or by clicking the WPILib logo in the top right corner, where the arrow is pointing to on the screenshot. +To access the WPILib commands, which are shown in the large red box on the screenshot, you can either open the command palette using the keyboard shortcut `Ctrl+Shift+P` / `Cmd+Shift+P`, or by clicking the WPILib logo in the top right corner, where the arrow is pointing to on the screenshot. diff --git a/src/content/docs/learning-course/index.mdx b/src/content/docs/learning-course/index.mdx index 17768d6c..4f7594bf 100644 --- a/src/content/docs/learning-course/index.mdx +++ b/src/content/docs/learning-course/index.mdx @@ -10,7 +10,7 @@ import CourseSection from '@components/CourseSection.astro'; Welcome to FRCSoftware's learning course! The purpose of this course is to help students learn how to program an FRC robot no matter their skill level. The progression of the course moves from learning how to write Java to programming robots of increasing complexity. -We start individual mechanisms of robots, using the FRC Kitbot, then move to more complex robots. +We start with individual mechanisms of robots, using the FRC Kitbot, then move to more complex robots. Software in FRC is always changing! If you want to give feedback or have comments, feel free to do so through our [GitHub](https://github.com/frcsoftware/frcsoftware.org) diff --git a/src/content/docs/learning-course/stage0/java-fundamentals.mdx b/src/content/docs/learning-course/stage0/java-fundamentals.mdx index 5e97a39d..4dfe2098 100644 --- a/src/content/docs/learning-course/stage0/java-fundamentals.mdx +++ b/src/content/docs/learning-course/stage0/java-fundamentals.mdx @@ -77,7 +77,7 @@ Even though it’s spelled the same, if your variable name is MotorID then you t In Java, semi-colons `;` are similar to a period in a sentence. It is what tells the compiler when a statement ends. -Semi-colons are used commonly in programming and aren’t only for creating variables. +Semi-colons are commonly used in programming and aren't only for creating variables. We will see more examples of this later in the course. In FRC, variables can be used to hold information about the robot and its different mechanisms. diff --git a/src/content/docs/learning-course/stage1/stage1a/drivetrain-sim.mdx b/src/content/docs/learning-course/stage1/stage1a/drivetrain-sim.mdx index b628064b..de48e917 100644 --- a/src/content/docs/learning-course/stage1/stage1a/drivetrain-sim.mdx +++ b/src/content/docs/learning-course/stage1/stage1a/drivetrain-sim.mdx @@ -47,7 +47,7 @@ The class will then publish the new drivetrain position and additional motor dat # Periodic Methods Robot code needs to be run in a loop so that it can continually make new commands to motor controllers based on new controller and sensor input. -To accomplish this Periodic Methods are provided in the `Robot` class and `OpMode` classes. +To accomplish this, Periodic Methods are provided in the `Robot` class and `OpMode` classes. Periodic methods get called every 20ms by default, causing any code placed inside of them to be run 50 times per second. OpModeRobot has additional periodic methods that only run during specific robot states. For example, the `teleopPeriodic()` function will only be called when teleop mode is selected on the Driver Station. diff --git a/src/content/docs/learning-course/stage1/stage1a/kitbot-additional-motors.mdx b/src/content/docs/learning-course/stage1/stage1a/kitbot-additional-motors.mdx index b4618a76..414fd43d 100644 --- a/src/content/docs/learning-course/stage1/stage1a/kitbot-additional-motors.mdx +++ b/src/content/docs/learning-course/stage1/stage1a/kitbot-additional-motors.mdx @@ -119,8 +119,8 @@ To make the simulated motor controllers update, the `SingleFlywheelSim` instance # Fuel Sim If the code was to be simulated at this point, the motors could be controlled using keyboard inputs and the resulting motor speeds could be viewed with a graph inside of AdvantageScope. -While this is a functional solution, it can be made more interesting by taking advantage of AdvantageScope's 3d tab. -AdvantageScope's 3d tab displays robots and game pieces inside of a game field using data published from the robot code. +While this is a functional solution, it can be made more interesting by taking advantage of AdvantageScope's 3D tab. +AdvantageScope's 3D tab displays robots and game pieces inside of a game field using data published from the robot code. The `FuelSim` class provides simulation data for fuel game pieces to be visualized entering and exiting the robot. References to the IntakeLauncher and Feeder motors are given to the `FuelSim` class when the `SingleFlywheelSim` instances are created. @@ -226,7 +226,7 @@ This will outtake the fuel. -When none of the previous button are pressed the IntakeLauncher should have a throttle of 0.0 while the Feeder motor should have a throttle of 0.0. +When none of the previous buttons are pressed the IntakeLauncher should have a throttle of 0.0 while the Feeder motor should have a throttle of 0.0. This will stop the motors. @@ -253,7 +253,7 @@ and "R" will cause the robot to outtake. Instead of looking at the 2D Field tab in AdvantageScope, use the Line Graph tab to view data from the motors. The voltage applied from the motor controllers to their motors can be viewed on the left axis while the right axis shows the motors' velocities. -Video showing line 2d graph running goes here. +Video showing line 2D graph running goes here. The 3D Field tab will show a 3D rendering of the kitbot, fuel, and game field. -As the robot preforms different actions the fuel should appear or disappear to show these actions. +As the robot performs different actions the fuel should appear or disappear to show these actions. You should also still be able to move using the WASD keys. @@ -260,7 +260,7 @@ This allows the `DifferentialDrive` instance to call the provided motors control # IMU -An IMU, Inertial Measurement Unit, is a sensor that allows the robot to accurately track its 3d rotation (roll, pitch, and yaw) as it moves around the field. +An IMU, Inertial Measurement Unit, is a sensor that allows the robot to accurately track its 3D rotation (roll, pitch, and yaw) as it moves around the field. While there are several vendors that sell very accurate IMUs, this stage will make use of Systemcore's built in IMU. An instance of Systemcore's IMU should be created beneath the `differentialDrive`. @@ -330,10 +330,10 @@ By extending `PeriodicOpMode` these classes gain a few useful functions that are Two blank `PeriodicOpMode`s, `MyTeleop.java` and `MyAuto.java` are provided under the `opmode` folder. To control the robot with joysticks a Teleop OpMode needs to be created that periodically gives the `DifferentialDrive` instance new values from the controller. -First a instance of `NiDsXboxController` needs to be created. +First an instance of `NiDsXboxController` needs to be created. This class has functions that provide the state of different buttons on the controller. Multiple controllers can be used at once so the Driver Station gives each a slot. -The index provided in the constructor tells the `NiDsXboxController`which slot to listen too. +The index provided in the constructor tells the `NiDsXboxController` which slot to listen to. @@ -357,9 +357,9 @@ The index provided in the constructor tells the `NiDsXboxController`which slot t index. -Next, the `periodic()` method inside of `MyTeleop.java` will be used to continually update the `DifferentialDrive`index through the`arcadeDrive`function. -The`MyTeleop`class has the`Robot`class as a parameter in its constructor. -This allows the Opmode to access the methods and fields of the`Robot` class. +Next, the `periodic()` method inside of `MyTeleop.java` will be used to continually update the `DifferentialDrive` through the `arcadeDrive` function. +The `MyTeleop` class has the `Robot` class as a parameter in its constructor. +This allows the Opmode to access the methods and fields of the `Robot` class. diff --git a/src/content/docs/learning-course/stage1/stage1b/command-based-kitbot-pt2.mdx b/src/content/docs/learning-course/stage1/stage1b/command-based-kitbot-pt2.mdx index 87ce6424..272ab136 100644 --- a/src/content/docs/learning-course/stage1/stage1b/command-based-kitbot-pt2.mdx +++ b/src/content/docs/learning-course/stage1/stage1b/command-based-kitbot-pt2.mdx @@ -149,7 +149,7 @@ Then, do the following: ### Task 6: Drive Back then Shoot Autonomous -Driving back and shooting is a common auto found in the 2026 game, rebuilt. +Driving back and shooting is a common auto found in the 2026 game, REBUILT. At the start of auto, the drive team would line up the kitbot to the wall of the scoring location. The kitbot would then drive backwards, and finally shoot the preloaded balls. diff --git a/src/data/glossary.ts b/src/data/glossary.ts index e7834629..b8c91768 100644 --- a/src/data/glossary.ts +++ b/src/data/glossary.ts @@ -87,7 +87,7 @@ export const glossaryTerms: GlossaryTerm[] = [ { term: 'CI', definition: - 'Continuous Integration: A software development practice where developers frequently merge code changes into a shared repository, triggering automated builds and tests to ensures the codebase remains stable', + 'Continuous Integration: A software development practice where developers frequently merge code changes into a shared repository, triggering automated builds and tests to ensure the codebase remains stable', }, { term: 'WPILib', diff --git a/src/data/glossary.yaml b/src/data/glossary.yaml index c162905c..4f2f06fe 100644 --- a/src/data/glossary.yaml +++ b/src/data/glossary.yaml @@ -39,7 +39,7 @@ Limit Switch: definition: >- Type of sensor that triggers when physically or magnetically hit. Can be used to trigger actions on a rising or falling edge, or check - state of a mechanism + the state of a mechanism Throughbore Encoder: definition: >- @@ -64,7 +64,7 @@ CI: definition: >- Continuous Integration: A software development practice where developers frequently merge code changes into a shared repository, triggering - automated builds and tests to ensures the codebase remains stable + automated builds and tests to ensure the codebase remains stable WPILib: definition: >- From b20deb313ab81be865f235436ba4f14da63707c9 Mon Sep 17 00:00:00 2001 From: samfreund Date: Thu, 10 Sep 2026 21:29:50 -0500 Subject: [PATCH 5/9] Fix Counter_Clockwise_Positive to CounterClockwise_Positive (correct CTRE API casing) --- .../docs/learning-course/stage1/stage1a/kitbot-drivetrain.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/learning-course/stage1/stage1a/kitbot-drivetrain.mdx b/src/content/docs/learning-course/stage1/stage1a/kitbot-drivetrain.mdx index 35d4c143..ca976427 100644 --- a/src/content/docs/learning-course/stage1/stage1a/kitbot-drivetrain.mdx +++ b/src/content/docs/learning-course/stage1/stage1a/kitbot-drivetrain.mdx @@ -150,7 +150,7 @@ Next, settings can be changed from their default by calling various functions on For the left motors, the invert setting will be `true` for REV code and `Clockwise_Positive` for CTRE code. This will cause the motors to spin in a direction that would drive the robot forward when a positive input is given. Since the motors on the right side of the drivetrain are facing the opposite direction they would cause the wheels try and drive the robot backwards when given a positive input if they were configured the same way. -Instead they should be configured with an invert setting of `false` or `Counter_Clockwise_Positive` so they also drive the robot forward when given a positive input. +Instead they should be configured with an invert setting of `false` or `CounterClockwise_Positive` so they also drive the robot forward when given a positive input. From 13e5ce720f6a8d66dc6cd50a9449cde7b11c0d8e Mon Sep 17 00:00:00 2001 From: samfreund Date: Thu, 10 Sep 2026 21:32:05 -0500 Subject: [PATCH 6/9] Fix VSCode to VS Code for consistency --- src/content/docs/contribution/methodsOfContributing.mdx | 2 +- .../docs/learning-course/getting-started/required-tools.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/contribution/methodsOfContributing.mdx b/src/content/docs/contribution/methodsOfContributing.mdx index eba1c5e6..f1e29153 100644 --- a/src/content/docs/contribution/methodsOfContributing.mdx +++ b/src/content/docs/contribution/methodsOfContributing.mdx @@ -34,7 +34,7 @@ Windows installers will almost always need to be the 64-bit version if there is - Download the LTS version for your OS - Use all default options for installation - [pnpm](https://pnpm.io/installation) -- [VSCode](https://code.visualstudio.com/) - Download the stable build for your OS - Use all default options for installation, except creating a desktop icon if you want - A WPILib VSCode installation will work perfectly fine - Recommended: Install a spellcheck extension to catch mistakes early +- [VS Code](https://code.visualstudio.com/) - Download the stable build for your OS - Use all default options for installation, except creating a desktop icon if you want - A WPILib VS Code installation will work perfectly fine - Recommended: Install a spellcheck extension to catch mistakes early