Swerve Programming

Introduction

Introductory discussion. Challenges and ways to deal with them.

Basic Drive and Teleop navigation programming

Working session 05/27/2023. Quicksilver review. Constants, starting Drive subsystem.

Working session 05/31/2023. Discussion on Quicksilver deficiency related to the swerve module definition.

Working session 06/03/2023. Replacing Swerve module constant classes with ENUM. Making initial code for the generic passthrough motor definition.

Working session 06/04/2023. In-depth discussion re: WPI methods that translate joystick inputs into the motor controller inputs based on Quicksilver code. Continue working on the Motor passthrough code. Implementing IMU Passthrough code for both Pigeon2 and NavX.

Working session 07/08/2023. Adding SRX hardware PID configuration.

Working session 07/14/2023. Encoder programming and updates.

Working session 07/15/2023. Motor inversion and encoder phase testing.

Working session 07/21/2023. Drive command. Swerve state.

Working session 07/22/2023. Generic controller implementation. Drivemanually Command.

Working session 07/24/2023. Swerve teleop testing.

Swerve – first unveiling video

Swerve – maneuverability testing 08/04/2023

Swerve – Current limiters, Field Odometry 08/05/2023

Working session 08/13/2023 – PathPlanner trajectory driving

Swerve programming – overview of trajectory tuning changes, IMU restore; encoder – principals of working and types, motor selection for swerve; working session 08/27/2023

Swerve programming – adding Xbox controller for swerve navigation 08/27/2023

Swerve programming – logging with DataLogManager 08/27/2023

Swerve programming – Subway Surfer controls; Rio logging 09/01/2023

Swerve programming – NEO working session 10/01/2023

Programming Team Videos 2021

Introduction to Java – Beginner Programmer

Java – Control statements, loops. Introduction to Java Classes. Working Session 01/16/2021

Java Objects and Classes. Special main method. Introduction to methods. Constructors. 01/18/2021

Java – Objects and Methods. Working session 01/23/2021

Java – Arrays. Iterating through the array. Codefights challenges. 01/30/2021

Java – Multidimensional arrays. Instance Initializer block. Introduction to inheritance. 02/13/2021

Java – Inheritance vs Aggregation. 03/07/2021

Java – Inheritance, Aggregation, Introduction to Polymorphism – Method overloading and Overriding 04/15/2021

Java – “this” keyword, covariant return type, Runtime Polymorphism. Abstraction intro 04/16/2021

Java – Abstract Classes and methods, Interfaces, Static variables. 05/06/2021

Singleton classes. Lambda Expressions. Methods as parameters. 06/01/2021

Lambda Expressions 07/16/2021

FRC 2021 Code and Code Repository

Team999 code structure. Files and directories in the code tree. Subsystems and Commands. 01/23/2021

Autonomous – following a trajectory. 02/16/2021

Autonomous – follow a trajectory. 02/20/2021 – part1

Autonomous – follow a trajectory 02/20/2021 – part2

Autonomous – follow a trajectory 02/23/20201

Autonomous – PID controller, Ramsete controller; Java templates

Autonomous – Ramsete controller and PID controller; Robot hardware 03/06/2021

Autonomous – PID calibration 03/09/2021

Introduction to PathWeaver 03/23/2021

Robot Characterization – 1st attempt 03/13/2021

Autonomous – trajectory driving code analysis 03/16/2021

Robot Characterization 04/10/2021

GIT – using USB stick as a repository -part-1

GIT – using USB stick as a repository – part-2

New Command Robot – introduction 05/18/2021

New Command Robot – Instruduction #2 – 06/05/2021

Robot Systems

Introduction to PID control. Working session 01/30/2021

PID Driving – introduction

Smart Robot

Smart Robot – Unboxing & Building videos

Unboxing the Robot

SmartRobot Car Build Part 1

SmartRobot Car Build Part 2

SmartRobot Car Build Part 3

SmartRobot Car – Introduction. Working Session 10/03/2020

SmartRobot Car – Introduction #2. Working Session 10/10/2020

Smart Robot Car – Working Session 10/24/2020 – Lesson-3 IR Remote Exercises

SmartRobot Car – Ultrasonic Sensor Working Session 11/28/2020

SmartRobot Car – Maze Navigation Working Session 11/28/2020

SmartRobot Car – C++ for Arduino – Introduction. Working Session 12/05/2020

Programming Team Videos 2020

Java Programming – Beginner Programmer group:

Private and public modifiers, ENUM (05/28/2020 working session)

Encapsulation and packages (06/06/2020 working session)

Exceptions and Exception handling (06/06/2020 working session)

Introduction to Robot Programming – working session 06/13/2020

Introduction to Robot Programming – working session 06/20/2020

Introduction to Robot Programming – working session 06/27/2020

Introduction to Robot Programming – working session 07/18/2020

Homework #1 – introduction. Working session 07/25/2020

Homework #1 – Instance variables, keeping track of the robot’s global state. Working session 08/01/2020

Homework #1 – Robot Motion – Turning Routine – Working session 08/15/2020

Homework #1 – Robot Motion – Going Forward Routine – Working Session 08/29/2020

Introduction to Robot Programming – New Command Robot, Enums, Lambda Expressions – Working Session 09/12/2020

NavX and SmartDashboard – Student Presentation 09/26/2020

Ultrasonic Sensor – Student Presentation 09/26/2020

Network Tables – Student Presentation 09/26/2020

Pneumatics – Student Presentation 09/26/2020

Encoders – Student Presentation 10/10/2020

FRC Tools Installation:

#1 – Overview, JDP, WPI Libraries NI FRC Game Tools

#2 – FRC Radio Configuration Tool, CTR Electronics Phoenix Framework, GIT GUI

#3 – GIT and GITHub repository concepts and operations

Robot Programming:

#1 – Introduction, templates, making basic robot code in 30 minutes

#2 – SmartDashboard, NavX

#3 – SRX Mag Encoder Programming and its use in the autonomous routines

#4 – Pneumatics

#5 – Ultrasonic sensor

#6 – Falcon 500/Talon FX, internal encoders

#7 – Network Tables

#8 – New Command Robot #1 – Introduction

#9 – New Command Robot #2 – Command Groups

#10 – New Command Robot #3 – Command Groups, Convenience features, Lambda Expressions

#11 – New Command Robot #4 – Various command types and their use

#12 – New Command Robot #5 – Decorator methods

#13 – New Command Robot #6 – Falcon 500

Configuring Robot Hardware:

Configuring the Radio

Programming Videos

Check out these programming videos:

Setting up and using VS Code (intro videos)

VS Code shortcuts for Mac and Windows

Making an FRC drivable Command Based Robot with Java (2 videos)

Talon SRX resource page

Documentation for CTR-Electronics Phoenix software framework. (Everything you ever wanted to know about motor controllers, but were afraid to ask)