A course for learning how to program FRC robots using the WPILib and a Romi robot.

Overview

FRC-Romi-Programming-Course

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

You might also like...

Statistical Machine Intelligence & Learning Engine

Statistical Machine Intelligence & Learning Engine

Smile Smile (Statistical Machine Intelligence and Learning Engine) is a fast and comprehensive machine learning, NLP, linear algebra, graph, interpola

Jan 1, 2023

On-device wake word detection powered by deep learning.

On-device wake word detection powered by deep learning.

Porcupine Made in Vancouver, Canada by Picovoice Porcupine is a highly-accurate and lightweight wake word engine. It enables building always-listening

Dec 30, 2022

An Engine-Agnostic Deep Learning Framework in Java

An Engine-Agnostic Deep Learning Framework in Java

Deep Java Library (DJL) Overview Deep Java Library (DJL) is an open-source, high-level, engine-agnostic Java framework for deep learning. DJL is desig

Jan 7, 2023

A machine learning package built for humans.

A machine learning package built for humans.

aerosolve Machine learning for humans. What is it? A machine learning library designed from the ground up to be human friendly. It is different from o

Dec 30, 2022

Oryx 2: Lambda architecture on Apache Spark, Apache Kafka for real-time large scale machine learning

Oryx 2: Lambda architecture on Apache Spark, Apache Kafka for real-time large scale machine learning

Oryx 2 is a realization of the lambda architecture built on Apache Spark and Apache Kafka, but with specialization for real-time large scale machine l

Mar 12, 2021

Learning Based Java (LBJava)

Learning Based Java LBJava core LBJava examples LBJava maven plugin Compiling the whole package From the root directory run the following command: Jus

Jun 9, 2019

Test project for learning GoF design pattern

DesignPattern Test project for learning GoF design pattern ㅁ개요 객체지향 설계의 교과서라고 불리는 Design Pattern 을 직접 Activity 별로 구현해봤습니다. ㅁ동기 물론 디자인패턴을 몰라도 기능은 얼마든지

Aug 8, 2022

Tribuo - A Java machine learning library

Tribuo - A Java machine learning library

Tribuo - A Java prediction library (v4.2) Tribuo is a machine learning library in Java that provides multi-class classification, regression, clusterin

Dec 28, 2022

Java time series machine learning tools in a Weka compatible toolkit

UEA Time Series Classification A Weka-compatible Java toolbox for time series classification, clustering and transformation. For the python sklearn-co

Nov 7, 2022
Owner
null
Datumbox is an open-source Machine Learning framework written in Java which allows the rapid development of Machine Learning and Statistical applications.

Datumbox Machine Learning Framework The Datumbox Machine Learning Framework is an open-source framework written in Java which allows the rapid develop

Vasilis Vryniotis 1.1k Dec 9, 2022
Bazel training materials and codelabs focused on beginner, advanced and contributor learning paths

Bazel-learning-paths This repo has materials for learning Bazel: codelabs, presentations, examples. We are open sourcing the content for training engi

null 18 Nov 14, 2022
java deep learning algorithms and deep neural networks with gpu acceleration

Deep Neural Networks with GPU support Update This is a newer version of the framework, that I developed while working at ExB Research. Currently, you

Ivan Vasilev 1.2k Jan 6, 2023
statistics, data mining and machine learning toolbox

Disambiguation (Italian dictionary) Field of turnips. It is also a place where there is confusion, where tricks and sims are plotted. (Computer scienc

Aurelian Tutuianu 63 Jun 11, 2022
MALLET is a Java-based package for statistical natural language processing, document classification, clustering, topic modeling, information extraction, and other machine learning applications to text.

MALLET is a Java-based package for statistical natural language processing, document classification, clustering, topic modeling, information extraction, and other machine learning applications to text.

null 900 Jan 2, 2023
Program made to organize CDA and Petitições

CDA-Splitter The project has been created with the intuit of simplify the organization of CDAs and Petições for the sector of Execução Fiscal of the p

Leônidas Lewy 3 Nov 4, 2022
Java Statistical Analysis Tool, a Java library for Machine Learning

Java Statistical Analysis Tool JSAT is a library for quickly getting started with Machine Learning problems. It is developed in my free time, and made

null 752 Dec 20, 2022
Oryx 2: Lambda architecture on Apache Spark, Apache Kafka for real-time large scale machine learning

Oryx 2 is a realization of the lambda architecture built on Apache Spark and Apache Kafka, but with specialization for real-time large scale machine l

Oryx Project 1.8k Dec 28, 2022