Skip to content
Open
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
3 changes: 3 additions & 0 deletions docs/contributing/intro.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
There are always going to be improvements, fixes, and updates that can be made to our training material. It's up to team members to make these changes. Detailed in this section is how you can help with these efforts.

If you have edited the website, please put the date and your name here:
>Last Updated: March 28, 2026 by Logan Hunt

## Setup
There are two ways to set up your development environment to work on this website, both of which can give you auto-reload of your local changes.

Expand Down
2 changes: 1 addition & 1 deletion docs/contributing/yearly-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ These are things that should be checked/changed in the curriculum before pre-sea
- The curriculum is adjusted on difficulty and odd parts are fixed based on trainee input
- Quickly look through the entire site to make sure everything is correct
- Make sure whoever is presenting the presentations in section 1 are familiar with them
- You can coordinate with SenAct on maybe giving the presentation together or having a SenAct team member do the presentation
- You can coordinate with senac on maybe giving the presentation together or having a senac team member do the presentation
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- You can coordinate with senac on maybe giving the presentation together or having a senac team member do the presentation
- You can coordinate with SENAC on maybe giving the presentation together or having a SENAC team member do the presentation

- We have the newest and most relevant XKCDs \ (•◡•) /
8 changes: 7 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
# Welcome

Hi. Welcome to the programming training docs for Deep Blue Robotics.
Hello. Welcome to the programming training docs for Deep Blue Robotics.

Before you get started, let me just say this: We are moving at a significantly faster pace than any computer science course offered at the school, and it's okay to get stuck or not know something. The Programming team veterans are here to help, please ask us questions! This is pretty difficult stuff, but I guarantee that it will be worth it and that we'll make it through together.

Alright, let's get started.
***
>**xkcd #806: Tech Support
>
>![it was all a dream](https://imgs.xkcd.com/comics/tech_support.png)
>
>https://xkcd.com/806
2 changes: 1 addition & 1 deletion docs/resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
- [Updating Lib199 Video](https://drive.google.com/file/d/1CLS0XMqJ6Y5_mLtYdS3HUR-l4us7WAk-/view)
- [Code Styling Guide](https://docs.google.com/document/d/1RVMY4_c5qCdh_hqiG-O33_-PpMKZtKSpayKp2bSBjTo/edit)
- [Complex Obscure Buxfixes Doc](https://docs.google.com/document/d/1PtT4ICuIJJ_EW_JgU_YRrFyJk2P9CibrkjtXtpVGjXE/edit)
- [List of people's github's usernames, Driver station serial numbers, etc](https://docs.google.com/document/d/1D_4Fbr4ktwU9jl2Mkpw2Kpv0Q4v-NhCO2m5agvL5TfY/edit?usp=sharing)
- [List of people's github's usernames, Driverstation serial numbers, etc](https://docs.google.com/document/d/1D_4Fbr4ktwU9jl2Mkpw2Kpv0Q4v-NhCO2m5agvL5TfY/edit?usp=sharing)

## Helpful Java Websites
- [Code Academy](https://www.codecademy.com/learn/learn-java/modules/learn-java-object-oriented-java-u/cheatsheet)
Expand Down
10 changes: 6 additions & 4 deletions docs/section-0/java.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,19 @@ Week 3:

## Other Notes

For Inheritance and Polymorphism, a concept they do not cover are interfaces which you may encounter. Read about them [here](https://www.w3schools.com/java/java_interface.asp).
Every year, our training curriculum may change, so there may be some information here that you won't use or information you will need to use but isn't here. Just ask a programming veteran for help and they'll assist you.

For Inheritance and Polymorphism, a concept they do not cover are interfaces which you may encounter, you can read about them [here](https://www.w3schools.com/java/java_interface.asp).

They also do not cover enums. Read more about them [here](https://www.w3schools.com/java/java_enums.asp). One thing they don't mention is that you can actually assign values to your enums such as:

```
public static enum TemperatureLimit {
public static enum MotorConfig {
NEO(70), NEO_550(40);

public final int limit;

private TemperatureLimit(int limit) {
private MotorConfig(int limit) {
this.limit = limit;
}
}
Comment on lines 34 to 43
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
```
public static enum TemperatureLimit {
public static enum MotorConfig {
NEO(70), NEO_550(40);
public final int limit;
private TemperatureLimit(int limit) {
private MotorConfig(int limit) {
this.limit = limit;
}
}

public static enum MotorConfig {
NEO(70), NEO_550(40);

public final int temperatureLimitCelsius;

private MotorConfig(int temperatureLimitCelsius) {
    this.temperatureLimitCelsius = temperatureLimitCelsius;
}

}

Expand All @@ -56,4 +58,4 @@ I highly suggest to look at the website or tutorials online if you don't underst
If you still don't get it, you can always ask a programming veteran for help!

!!! Unfinished
If you see this, tell a programming veteran to add exercises
If you see this, ask a programming veteran to complete it.
6 changes: 3 additions & 3 deletions docs/section-1/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ Again, follow the instructions for your respective OS to [get Git here](https://

If you do not have a [GitHub](https://github.com) account, create one now.

Once you have your account, tell a programming mentor or programming lead your username so they can add you to our GitHub organization.

Next, set up your username (your real name) and email in Git by following these instructions:

- [Setting your username](https://help.github.com/en/articles/setting-your-username-in-git)
- [Setting your email address](https://help.github.com/en/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address)
- [Setting your email address](https://help.github.com/en/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address)

Once you have your account, tell a programming mentor or programming lead your username so they can add you to our GitHub organization.
12 changes: 6 additions & 6 deletions docs/section-1/version-control.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ So you know how to write Java code, and you know the basics of how our robot cod
Once you're done, we'll do some exercises to see if you've got it.

!!! note
We'll be using [VS Code's built-in version control tools in this tutorial](https://code.visualstudio.com/docs/editor/versioncontrol), but there are many other good tools too, including [Github Desktop](https://desktop.github.com/), [Gitkraken](https://www.gitkraken.com/git-client), and of course, the ol' command line. You don't need to know how to use the command line for FRC, but it's a useful, if not essential, skill if you want to go beyond.
We'll be using VS Code's built-in version control tools in [this tutorial](https://code.visualstudio.com/docs/editor/versioncontrol), but there are many other good tools too, including [Github Desktop](https://desktop.github.com/), [Gitkraken](https://www.gitkraken.com/git-client), and of course, the ol' command line. You don't need to know how to use the command line for FRC, but it's a useful, if not essential, skill if you want to go beyond.

Navigate to this [google doc](https://docs.google.com/document/d/1D_4Fbr4ktwU9jl2Mkpw2Kpv0Q4v-NhCO2m5agvL5TfY/edit) and add your gitHub username to the list.

## Practice
VS Code is the text editor we will be using to write and run our code, and should have been installed with the WPILib suite during setup. Open up VS Code and follow the "Cloning a repository" section of [the VS Code git tutorial](https://code.visualstudio.com/docs/editor/versioncontrol#_cloning-a-repository) to clone [this repo](https://github.com/DeepBlueRobotics/training/).
VS Code is the text editor we will be using to write and run our code, and should have been installed with the WPILib suite during setup. Open up VS Code and follow the "Cloning a repository" section of the [VS Code git tutorial](https://code.visualstudio.com/docs/editor/versioncontrol#_cloning-a-repository) to clone [this repository](https://github.com/DeepBlueRobotics/training/).

Have it? I hope so too.

Expand All @@ -19,20 +19,20 @@ Make a new branch, whether by VS Code or Github Desktop or anything else, and ti
Go find every single file with the name `intro.md`, and paste your name somewhere over it. Or all over it. Horribly deface that file with your name.
Think of this as a "ritual" of public defacement in order to initiate your learning of Github.

Now stage and commit your changes with the message `add [your name]`, and then push your changes to make the branch public. Refer to the [Git tutorial](https://guides.github.com/introduction/git-handbook/) and [VS Code tutorial](https://code.visualstudio.com/docs/editor/versioncontrol) if needed.
Now stage and commit your changes with the message `added [your name] to intro files`, and then push your changes to make the branch public. Refer to the [Git tutorial](https://guides.github.com/introduction/git-handbook/) and [VS Code tutorial](https://code.visualstudio.com/docs/editor/versioncontrol) if needed.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as noted by the note at the bottom, commit names are written in simple present tense by convention.

Suggested change
Now stage and commit your changes with the message `added [your name] to intro files`, and then push your changes to make the branch public. Refer to the [Git tutorial](https://guides.github.com/introduction/git-handbook/) and [VS Code tutorial](https://code.visualstudio.com/docs/editor/versioncontrol) if needed.
Now stage and commit your changes with the message `add [your name] to intro files`, and then push your changes to make the branch public. Refer to the [Git tutorial](https://guides.github.com/introduction/git-handbook/) and [VS Code tutorial](https://code.visualstudio.com/docs/editor/versioncontrol) if needed.


Great! You now have a crimes done to the training website under your name!
But in order to let us know you did it, go to github and create a "Pull Request" from your branch to the `master` branch. It should look a bit like this:
`base: master <- compare: willsbranch`

!!! question
Why and what is a Pull Request?
A PR (our shorthand for Pull Request) is used to ask for approval to copy the changes of the `compare` branch onto the `base` branch. This is very useful when we want to review people's code before they update the master branch and break the robot, or when a person spends multiple worksessions working on a specific thing and don't want to leave unfinished code on the master branch.
What is a Pull Request?
A pull request (also called a PR) is used to ask for approval to copy the changes of the `compare` branch onto the `base` branch. This is very useful when we want to review people's code before they update the master branch and break the robot, or when a person spends multiple worksessions working on a specific thing and don't want to leave unfinished code on the master branch.

Finish that PR, and we'll delete your branch to clean it up in a few years.

!!! note
If you look at the tutorial above, they mention the "Git: Clone" command from the Command Palette (⇧⌘P). However, it's good practice to use "Git: Clone(Recursive)" instead of just "Git(Clone)" because cloning the repo recursively also clones all the defined submodules in the repo as well.

!!! tip
By convention, commit names are in simple present tense. Things like `add name` or `fix these bugs` or `update readme`. You are expected to write descriptive commit messages that follow this convention.
By convention, commit names are in simple present tense. Things like `add name` or `fix these bugs` or `update readme`.
File renamed without changes
29 changes: 13 additions & 16 deletions docs/section-2/electronics.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Electronics

We have significant overlap with SenAct training. If you want more details on SenAct components you can go through [their Electronics presentation](https://docs.google.com/presentation/d/1Y2GSd2B3aV2_6J5xKNS-_xWRiGW_daArdgr4zasUuno/edit#slide=id.g253cb92c37_0_37). Here, we will cover the parts relevant to programming.
We have significant overlap with senac training. If you want more details on senac components you can go through [their Electronics presentation](https://docs.google.com/presentation/d/1Y2GSd2B3aV2_6J5xKNS-_xWRiGW_daArdgr4zasUuno/edit#slide=id.g253cb92c37_0_37). Here, we will cover the parts relevant to programming.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
We have significant overlap with senac training. If you want more details on senac components you can go through [their Electronics presentation](https://docs.google.com/presentation/d/1Y2GSd2B3aV2_6J5xKNS-_xWRiGW_daArdgr4zasUuno/edit#slide=id.g253cb92c37_0_37). Here, we will cover the parts relevant to programming.
We have significant overlap with SENAC training. If you want more details on SENAC components you can go through [their Electronics presentation](https://docs.google.com/presentation/d/1Y2GSd2B3aV2_6J5xKNS-_xWRiGW_daArdgr4zasUuno/edit#slide=id.g253cb92c37_0_37). Here, we will cover the parts relevant to programming.


### Operator Console and Communication
- We use a computer, joysticks, xbox controllers, etc
Expand All @@ -12,7 +12,7 @@ We have significant overlap with SenAct training. If you want more details on Se
- Can plug sensors and add-ons onto it
- Can add micro-controllers such as a Raspberry Pi to connect to other devices
- ![RoboRIO Ports](roborio_ports.png)
- The radio is what we use to communicate between the robot and the driver station computer.
- The radio is what we use to communicate between the robot and the driverstation computer.
- Connects to the DS Computer via Wifi, Ethernet, or USB
- ![Status Lights for Radio](radio_status_lights.png)
- The Power Distribution Panel (PDP) / Power Distribution Hub (PDH) gives power to the electrical components.
Expand All @@ -23,31 +23,28 @@ We have significant overlap with SenAct training. If you want more details on Se
- Different types of motors have different power and respective motor controllers
- Gears and planetary gearboxes can be used to make the motor turn with more torque or turn faster
- The motors we use are:
- CIM
- Biggest
- Most powerful
- Used for drivetrains and other subsystems which require a lot of torque
- Mini CIMs
- Medium size
- BAG
- Smallest
- NEO
- We almost exclusively use these
- Versatile
Comment on lines +27 to +28
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do use them a lot, but we also use lots of sparkflex, so I think "almost exclusively use these" is a bit strong

Suggested change
- We almost exclusively use these
- Versatile
- We mostly use these
- Versatile

- Encoders are built into these
- Comparable to CIMs
- Used for drivetrains and other subsystems which require a lot of torque
Comment on lines 29 to 30
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vortexes and neo 550 (and all brushless motors for that matter) also have encoders built in so I would either add this bullet point to every motor, or just remove it entierly and write somewhere else that all brushless motors have a built in encoder.

- NEO Vortex
- Very similar to normal NEOs
- Motor controller attaches directly to the motor instead of using cables
- NEO 550
- We usually don't use these
- Small
- Used for subsystems other than drivetrains
- The typically motor controllers we use are:
- CANSparkMaxes
- Talon SRXs
- The motor controllers we typically use are:
- SparkMaxes
- SparkFlexes

![CANSparkMax](CANSparkMax.png)
![SparkMax](SparkMax.png)

### Sensors
- Encoders
- Attached to motor or built into motor
- Record how much a motor has spun
- Record how much a motor has spun or its position
- Can find RPM, distance spun, etc
- navX
- Measures the angle turned for the robot
Expand Down
8 changes: 7 additions & 1 deletion docs/section-2/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,10 @@
Before you can effectively program a robot, you need to know what you're programming. This section will teach you about:

- electronics, including the RoboRIO, motor controllers, sensors
- pneumatics, including the compressor, solenoids, pistons
- usually unsued mechanisms: pneumatics compressor, solenoids, pistons
***
>**xkcd #2083: Laptop Issues**
>
>![laptop issues](https://imgs.xkcd.com/comics/laptop_issues.png)
>
>_<https://xkcd.com/2083>_
4 changes: 3 additions & 1 deletion docs/section-2/pneumatics.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
Similar to elex, SenAct also has [a pneumatics presentation](https://docs.google.com/presentation/d/1UDH-Om2QCeOL6JKvXSvE9Xdm5i8acvCqRSJa4wcBMAM/edit#slide=id.g2573de0a58_0_73). Take some time to read through it.
Similar to elex, Senac also has [a pneumatics presentation](https://docs.google.com/presentation/d/1UDH-Om2QCeOL6JKvXSvE9Xdm5i8acvCqRSJa4wcBMAM/edit#slide=id.g2573de0a58_0_73). Take some time to read through it.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Similar to elex, Senac also has [a pneumatics presentation](https://docs.google.com/presentation/d/1UDH-Om2QCeOL6JKvXSvE9Xdm5i8acvCqRSJa4wcBMAM/edit#slide=id.g2573de0a58_0_73). Take some time to read through it.
Similar to elex, SENAC also has [a pneumatics presentation](https://docs.google.com/presentation/d/1UDH-Om2QCeOL6JKvXSvE9Xdm5i8acvCqRSJa4wcBMAM/edit#slide=id.g2573de0a58_0_73). Take some time to read through it.


Key takeaways:

- Air is pumped from the compressor into the air tanks which then feed the air to the solenoids.
- Storage tank air pressure should be around 120 PSI, while working pressure should not exceed 60 PSI. There are two guages on the robot indicating the two levels of pressure.
- Pistons and other pneumatic devices are controlled by the solenoids, which open and close values to let air through based on RoboRIO input.
***
<sub> We rarely use pneumatics because of their complexity and lack of versatility compared to motors. </sub>
Comment on lines +8 to +9
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
***
<sub> We rarely use pneumatics because of their complexity and lack of versatility compared to motors. </sub>
***
!!! note
We rarely use pneumatics because of their complexity and lack of versatility compared to motors.

Loading