A course for learning how to program FRC robots using the WPILib and a Romi robot. This course is designed for FRC teams or individual students who have access to Romi robots (https://www.pololu.com/product/4022) and want to learn how to develop software for robots. This course assumes no prior knowledge of programming, but will also serve students with some prior experience. In addition to covering fundamentals of programming (in Java), this course teaches how to use the WPILib to program robots using the command-based framework. It also demonstrates a number of ways one can use software to increase the competitiveness of a robot, using practical examples that could easily be applied to FRC. Because this course uses the WPILib, projects done for this course could easily be transferred to a full-size FRC robot with only minimal changes. If all the projects in this course were applied to a robot, it would lead to a significant advantage in drivability as compared to default drive code, and provide basic autonomous capabilities, but this course stops short of advanced concepts such as motion profiling.
This course can be completed with a few hours a week over the course of a fall pre-season. Students on teams with few or no programming mentors can do this course without any adult help. FRC teams in such a position can use this to develop a few students into programmers and kickstart their programming teams. Teams that already have a number of programming students and/or mentors can use it as a way to train new students or as an introduction to more advanced concepts. Teams that already have software curriculums may find individual lessons, projects, or examples beneficial.
The lessons are contained in the lessons folder. Example source code for completed projects for most of the lessons is contained in the project code folder. The example source code is not needed to complete the lessons but is available to be used as a reference to compare to if necessary. Lessons 8, 13, and 16-20 do not have example solutions.
Table of contents:
Lesson 1 - Getting Started
Lesson 2 - Intro to Java - Variables
Lesson 3 - Methods, Classes, and Objects
Lesson 4 - Methods Deep Dive
Lesson 5 - If Statements & Cut-Power Mode
Lesson 6 - OOP Deep Dive Part 1
Lesson 7 - OOP Deep Dive part 2
Lesson 8 - Loops
Lesosn 9 - Integrating a Gyroscope & Driving Straight
Lesson 10 - Autonomous Commands
Lesson 11 - Logical Operators
Lesson 12 - Inheritance & Polymorphism
Lesson 13 - Arrays
Lesson 14 - Abstract Classes & Interfaces
Lesson 15 - Static & Super
Lesson 16 - Manual Drive Methods
Lesson 17 - Deadbanding & Turn Scaling
Lesson 18 - Exponential & Linear Control
Lesson 19 - Parallel Command Groups
Lesson 20 - Integrating Commands in Teleop