From 686ed59a8fae5cc5e645adacf69f35109823d103 Mon Sep 17 00:00:00 2001 From: Adriana <16786568+Adrianamm@users.noreply.github.com> Date: Mon, 14 Sep 2026 22:31:14 -0400 Subject: [PATCH 1/6] First readthrough --- .../stage1/stage1a/systemcore.webp | Bin 0 -> 26910 bytes .../learning-course/stage1/stage-overview.mdx | 2 +- .../stage1/stage1a/getting-started.mdx | 11 +++++----- .../stage1/stage1a/kitbot-drivetrain.mdx | 19 ++++++++++++++---- .../stage1/stage1a/stage-overview.mdx | 6 ++---- 5 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 public/learning-course/stage1/stage1a/systemcore.webp diff --git a/public/learning-course/stage1/stage1a/systemcore.webp b/public/learning-course/stage1/stage1a/systemcore.webp new file mode 100644 index 0000000000000000000000000000000000000000..a246819a2867f4e219ac072efe9d9b463607942b GIT binary patch literal 26910 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 literal 0 HcmV?d00001 diff --git a/src/content/docs/learning-course/stage1/stage-overview.mdx b/src/content/docs/learning-course/stage1/stage-overview.mdx index 13653f99..edbc7522 100644 --- a/src/content/docs/learning-course/stage1/stage-overview.mdx +++ b/src/content/docs/learning-course/stage1/stage-overview.mdx @@ -7,7 +7,7 @@ next: stage-1a/stage-overview Congratulations! Whether you already know Java, have programmed an FRC robot before, -or are a complete beginner, you should have a good grasp of the basic syntax of the Java language by now. +or are a complete beginner, you should have a good grasp of the Java language by now. In Stage 1, we'll be moving on to the exciting part: actually writing code for a robot! It might seem daunting at first, but the best way to think through it is to focus on understanding how each individual component of the code works, instead of trying to tackle it all at once. diff --git a/src/content/docs/learning-course/stage1/stage1a/getting-started.mdx b/src/content/docs/learning-course/stage1/stage1a/getting-started.mdx index 755930b5..cfdeffc2 100644 --- a/src/content/docs/learning-course/stage1/stage1a/getting-started.mdx +++ b/src/content/docs/learning-course/stage1/stage1a/getting-started.mdx @@ -78,7 +78,7 @@ by the same basic components. You'll notice that we're skipping a lot of files here, because you don't have to edit those. -What's great about using a framework like WPILib is that it automatically generates these files when you create a new project, so you can get started coding quicker. +What's great about using a framework like WPILib is that it automatically generates these files when you create a new project, so you can get started coding faster. The other folders, like `src/main/deploy/` for example, will come in handy as your robot code becomes more advanced. Thus, the only files shown in the structure tree are the ones directly responsible for controlling what our kitbot will do. @@ -91,7 +91,8 @@ Thus, the only files shown in the structure tree are the ones directly responsib ### `Main.java` The first file to take note of is the `Main.java` file; this is the entrypoint for any Java project in real life. -Its contents are pretty short and sweet (comments and package declaration removed for brevity): +Its contents are pretty short and sweet. +Comments and package declaration removed for brevity so your `Main.java` will look different. ```java stage1/snippets/Main.java#main @@ -118,7 +119,7 @@ RobotBase.startRobot(first.robot.Robot::new); It seems to be "starting" an instance of the `first.robot.Robot` class, and if we go to that class file, we end up at `Robot.java`. This is the core of your robot code, where: -- your subsystems are defined +- your mechanisms are defined - shared behavior is defined - your debugging data is logged (telemetry). @@ -136,7 +137,7 @@ An OpMode is a class that controls the behavior of your robot during a specific You can have multiple OpModes per robot mode, and they are selected on the Driver Station to tell the robot which one to run. This allows you to have different autonomous routines for different situations, or multiple teleop routines for different drivers. -OpModes use the `Robot` class to access the robot's subsystems and other shared behavior. +OpModes use the `Robot` class to access the robot's mechanisms and other shared behavior. -When creating a motor controller object, the physical motor controller's CAN ID and the CAN Bus IDs are given to the program in the constructor. +When creating a motor controller object, the physical motor controller's CAN ID and the CAN Bus must be provided in the constructor. CAN Bus refers to which of the 5 Systemcore CAN ports, or which CANivore, the device is plugged into. CAN ID is an integer that each CAN device is configured to have. All devices on a given CAN Bus must have a unique ID. @@ -213,7 +213,7 @@ This object stores the configuration so it can be changed and shared across diff Next, the motor controller’s settings can be changed from their default by calling various functions on the configuration object with their new values. 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 to try and drive the robot backwards when given a positive input if they were configured the same way. +Since the motors on the right side of the drivetrain are facing the opposite direction, they would cause the wheels to try and drive the robot backwards when given a positive input if they were configured the same way. Therefore, the left motor needs to be configured with an invert setting of `false` or `CounterClockwise_Positive` so they also drive the robot forward when given a positive input. @@ -397,7 +397,7 @@ Further information about OpModes can be found in [this blog post](https://zhare 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. -In `MyTeleop.java`, an instance of XboxController needs to be created. +In `MyTeleop.java`, 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 `XboxController` which slot to listen to.