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.
- Introducing Git and GitHub
- Git Fundamentals
- Next Level Git
- Git Flow
- FAQ: git, vi, bash shell
- GitHub Projects
- Lesson 1: Introductory Syntax
- Lesson 2: Variables and Datatypes
- Lesson 3: Method Calls
- Lesson 4: The If Statement
- Lesson 5: Method Definitions
- Lesson 6: Classes
- Lesson 7: Inheritance
- Helpful Programming Resources
- Contribute
- Developer Process @todo move
- Style Guide
- 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
- Programming Talon SRX
- Servos
- Pneumatics
- The PCM
- Programming
- Using boolean variables
- Troubleshooting
- Talon SRX
- 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
- Networking
- 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
- Working with your peers
- Catching your failures
- More on initialization
- Try / Except blocks
- Logging and Debugging
- Test Mode (even I don't know what this is)
- Competition Readiness
- @TODO: move... somewhere?
- Competition Checklist
- Other types of robots
- Timed, State Machines, etc
- Different types of drives
- http://www.simbotics.org/resources/mobility
- Six-wheel Drop Center
- West Coast
- TANK
- Rocker / Slide
- Mechanum
- Vectors yes
- Holonomic
- mmm
- Swerve
- Fill with %MATHS%
- This is Declan's and Jeffrey's forte.
- What's vision for? (similar to introduction to programming/readme)
- https://github.com/Spartronics4915/Vision
- Compile resources
- This is bling
- 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
- How GitHub Pages works
- Resources
- During the preseason?
- Include the app?
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 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
- 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
- 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?