-
Notifications
You must be signed in to change notification settings - Fork 5
updated for 2026 + some grammar fixes #67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| 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 | ||
| > | ||
| > | ||
| > | ||
| >https://xkcd.com/806 |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -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
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
public static enum MotorConfig { } |
||||||||||||||||||||||||||
|
|
@@ -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. | ||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -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. | ||||||
|
|
||||||
|
|
@@ -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. | ||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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
|
||||||
|
|
||||||
| 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`. | ||||||
| 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. | ||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
|
|
||||||||||
| ### Operator Console and Communication | ||||||||||
| - We use a computer, joysticks, xbox controllers, etc | ||||||||||
|
|
@@ -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 | ||||||||||
| -  | ||||||||||
| - 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 | ||||||||||
| -  | ||||||||||
| - The Power Distribution Panel (PDP) / Power Distribution Hub (PDH) gives power to the electrical components. | ||||||||||
|
|
@@ -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
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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
|
||||||||||
| - 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
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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 | ||||||||||
|
|
||||||||||
|  | ||||||||||
|  | ||||||||||
|
|
||||||||||
| ### 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 | ||||||||||
|
|
||||||||||
| 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. | ||||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
|
|
||||||||||||
| 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
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.