Skip to content

riyadth/developers_handbook

 
 

Repository files navigation

Spartronics Developer Handbook

This handbook is compiled by Spartronics 4915, Bainbridge Island WA, USA. It is intended as a guide for FRC programming teams specifically using Java and Git.

Alongside the different chapters are code examples for better understanding of the concepts in the section.

This handbook is presented using Gitbook and is written in Github Flavored Markdown. For information on how to contribute to this document, read contribute.md which contains the writing guide for this book, as well as how to use markdown.

Table of Contents

  • What is a Subsystem?
    • One system vs. two: intake and intake wheels example
  • What is a Command?
  • More on Subsystems
    • Default Commands
  • Lesson: Using Commands
  • Scheduling Commands
    • Sequential and Parallel commands (or whatever the rewrite says)
  • Lesson: Scheduling Commands
  • Using sensor feedback with PID
    • PIDSubsystem(?)
    • PIDCommand(?)
  • Lesson: Using sensor feedback
  • Actuators
    • Motors, in depth
    • Pneumatics
    • Servos
  • Constructors and Initialization
    • Singletons
  • Lesson: Actuators and Constructors
  • Actuators
    • Talon SRX
      • Programming Talon SRX
        • @TODO: kind of on-the-nose? change name
      • Troubleshooting
        • @TODO: every major hardware piece should have a troubleshooting section
    • Servos
    • Pneumatics
      • The PCM
      • Programming
      • Using boolean variables
      • Troubleshooting
  • Sensors
    • Types of sensors
    • When to use what
    • Implementation in code
    • Troubleshooting
  • roboRIO
    • Networking
      • roboRIO web-based configuration access
      • radio programming
      • wireless access port
    • Flashing
    • Troubleshooting

Development Process

  • Development Flow
    • design -> PoA -> design review -> coding -> QA -> code review -> merge
  • Using Git
    • Commit often
    • Commit descriptors
    • Pull requests (? already covered ?)
    • GitHub Projects
  • Coding Conventions
    • Best Practices
    • Naming
    • Variables (no magic numbers!!)
    • Organization
    • Comments
    • Avoiding redundant redundancy
  • Collaborative Development
    • Working with your peers
      • Pair coding
      • be clear
    • Working between subteams
      • RobotMap (? what is this ?)
      • Electronics
        • Wiring Diagram
        • @Peter - visual MAP of the robot
      • CAD
        • Link to updated robot CAD
  • Catching your failures
    • More on initialization
    • Try / Except blocks
    • Logging and Debugging
      • Test Mode (even I don't know what this is)
  • Competition Readiness
  • This is Declan's and Jeffrey's forte.
  • Development Environment Setup
  • Starting with Bling
  • Tutorials and Resources
  • Micropython and Arduino
  • SmartDashboard & NetworkTables
  • Team Website
    • How GitHub Pages works
      • Sourcing from a main repository
      • Uploading docs pages from other repositories
        • Show 2019-DeepSpace / 2020-InfiniteRecharge
        • Get Vision up there
    • How Jekyll works
    • How forestry.io works
      • Marketing pitch
      • How to publish articles
        • Mention WYSIWYG
      • How to upload webpages
    • Get input from Binnur
  • Resources
  • During the preseason?
  • Include the app?

Structure

For new students who have never programmed, or have programmed just not in Java, we recommend they start with the introductory_lessons folder. If you're confident in Java, robot_programming is designed for you. It has a curriculum on commands and subsystems, how to use our version control system, and other general stuff idk

Robot Lessons

Robot lessons teach programmers who know Java how to program our robots. PID

  • Hardware / I/O
    • RoboRIO
    • Motors
    • Sensors
  • Command-based programming
    • Subsystems
    • Commands
  • Robot Lessons
    • These should be example things to do with a robot, and a testbed.
    • For example, make a motor spin. Control it with a joystick. Create a subsystem. Make a command.

1646's method

Create a motor and set its power
a. Set to 1
b. Set to 0
c. Set to -1
d. Set to 0.5
Create and print out Joystick input.
Set a motors power from Joystick input
Set multiple motors from Joystick input
Discuss classes
Make a Subsystem
a. Start with Drive Train
Make a Command

Introduction.md

  • What is embedded development about?
  • How is this different than dear-old-java?
  • Keys to success: knowing what is going on under the hood
  • Spartronics development
  • Coding style
  • Git workflow

What does it take to build a robot?

  • 100% marketing! Without marketing, we have no budget and no presence. Their efforts magnifies our build efforts
  • 60-20-20! There is only so much you can do for faulty mechanical design in electronics or software!
    • 60% mechanical
    • 20% electronics
    • 20% programming
  • 30-70!
    • 30% is your robot
    • 70% is your driving team
  • At the end of the match, did you do what you said you were going to do?

About

A guide for FIRST Robotics development, specifically targeted for FRC use.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%