GithubHelp home page GithubHelp logo

char3176 / frc-romi-programming-course Goto Github PK

View Code? Open in Web Editor NEW

This project forked from czbeatty/frc-romi-programming-course

0.0 0.0 0.0 4.72 MB

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

Java 100.00%

frc-romi-programming-course's Introduction

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

frc-romi-programming-course's People

Contributors

czbeatty avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.