Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions examples/stage1/stage1b/solutions/ctre/simgui-ds.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
}
],
"axisCount": 5,
"buttonCount": 6,
"buttonKeys": [563, -1, -1, -1, 550, 562],
"buttonCount": 11,
"buttonKeys": [563, -1, -1, -1, -1, -1, -1, -1, -1, 550, 562],
"povConfig": [
{
"keyDown": 614,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@
package first.robot.opmode;

import first.robot.Robot;
import org.wpilib.command3.button.CommandNiDsXboxController;
import org.wpilib.command3.button.CommandXboxController;
import org.wpilib.opmode.PeriodicOpMode;
import org.wpilib.opmode.Teleop;

@Teleop
public class MyTeleop extends PeriodicOpMode {
private final Robot robot;
private final CommandNiDsXboxController xbox = new CommandNiDsXboxController(0);
private final CommandXboxController xbox = new CommandXboxController(0);

public MyTeleop(Robot robot) {
this.robot = robot;
Expand Down
8 changes: 0 additions & 8 deletions src/config/sidebarConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -278,10 +278,6 @@ export const sidebarSections: Record<string, SidebarSection[]> = {
{ 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',
},
],
},
],
Expand Down Expand Up @@ -374,10 +370,6 @@ export const sidebarSections: Record<string, SidebarSection[]> = {
label: 'Documentation',
slug: 'resources/docs',
},
{
label: 'Transitioning to Commands V3',
slug: 'resources/transitioning-to-commands-v3',
},
],
},
],
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/contribution/contributors.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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.

<ContributorList
names={[
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/contribution/methodsOfContributing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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
<Aside type="note">
If you get an error when using Vale on NixOS, install it manually and
use the VALE_BIN environment variable instead.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ description: A guide for educators to prepare themselves to deliver the Learning
Before using the FRCSoftware.org Learning Course to teach your students, make sure you have an adequate understanding of the concepts covered.
The best way to do this is to go through the course yourself; however, the level of involvement with which you do so is dependent on your previous knowledge.
If you're new to FRC programming or Java, we recommend going pretty deep through the course as much as you can, at least so you're ahead of the students you're helping guide.
If you're pretty experienced with Java and FRC programming, you might just go through the Educator's Guide to get a complete overview of the course and caught up to date with practice.
If you're pretty experienced with Java and FRC programming, you might just go through the Educator's Guide to get a complete overview of the course and get up to speed with practice.

<Aside type="note">
While the commands v3 library retains many elements from the v2 library,
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/educators-guide/stage1/stage1a.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ To program an FRC Robot and follow along with this website, you need WPILib tool
## WPILib tools

The first tool that needs to be installed is the WPILib tool package.
WPILib’s tool package includes a version of VSCode that allows teams to write code and deploy it to their robot.
WPILib’s tool package includes a version of VS Code that allows teams to write code and deploy it to their robot.

This website requires using the alpha release of WPILib for the 2027 season.
You can find the download link [here](https://github.com/wpilibsuite/allwpilib/releases).
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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.
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/learning-course/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 arent 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.
Expand Down
2 changes: 1 addition & 1 deletion src/content/docs/learning-course/stage0/stage-overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down Expand Up @@ -226,7 +226,7 @@ This will outtake the fuel.

</Tabs>

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.

<Tabs syncKey={REV_CTRE_CHOOSER_KEY}>
Expand All @@ -250,10 +250,10 @@ 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.
Video showing line 2D graph running goes here.

<ContentFigure
width="650px"
Expand All @@ -262,7 +262,7 @@ 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.

<ContentFigure
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.

<Tabs syncKey={REV_CTRE_CHOOSER_KEY}>
<TabItem label="CTRE">
Expand Down Expand Up @@ -184,7 +184,7 @@ It's important to remember that settings only get changed when the configuration
This must happen after the configuration is applied to the Leader so the motor controller doesn't want to follow itself.
`ResetMode.kResetSafeParameters` gets to tell the motor controller to reset all unchanged configurations to their default value.
This prevents old configurations from being left on the controller.
`PersistMode.kPersistParameters` is used so the configuration gets saved on the motor control so it persists even after power is removed.
`PersistMode.kPersistParameters` is used so the configuration gets saved on the motor controller so it persists even after power is removed.

```java {revRobot}#MotorConfigLeft
```
Expand Down Expand Up @@ -248,8 +248,8 @@ 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.
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.
The `motorController::setThrottle` syntax is used to provide the `DifferentialDrive` instance with the motor controllers `setThrottle()` function.
This function commands the motor to run a percentage of its 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.

<Aside type="note">
Expand All @@ -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`.

Expand Down Expand Up @@ -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 `XboxController` 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 `XboxController` which slot to listen to.

<Tabs syncKey={REV_CTRE_CHOOSER_KEY}>
<TabItem label="CTRE">
Expand All @@ -357,9 +357,9 @@ The index provided in the constructor tells the `NiDsXboxController`which slot t
index.
</Aside>

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.

<Tabs syncKey={REV_CTRE_CHOOSER_KEY}>
<TabItem label="CTRE">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
---
Expand Down
Loading
Loading