28-OCT-09 BREAKOUT SESSION Team 3125 Programming/Electrical Subteams Cody Harris Technical Director
Introduction Programming “Programs the robot control interface and autonomous mode” (Team 3125 Handbook) Pre-Season: Algorithm Development, Learn Syntax Build Season: Design and Implement Robot Software Drive Season: Work Pit Crew, Troubleshoot Post-Season: Make code accessible for next year’s team Electrical “Works with the mechanical team to design and implement the electronics of the robot” (Team 3125 Handbook) Pre-Season: Learn Control System layout, Soldering Techniques, etc. Build Season: Construct Control System, Implement Software, Wire Robot Drive Season: Work Pit Crew, Troubleshoot Post-Season: Ensure Control System is ready for next year’s team
Programming Pre-Season Algorithm Development (October – Mid-November) Think Like a Computer Understand Object-Oriented Programming Determine necessary classes and patterns of inheritance Write Pseudocode to solve a problem Selection of Language (Mid-November) Sun Microsystems Java Development Kit (BETA Release) National Instruments LabView (Graphical Programming) C/C++ with FRC API (Less specific documentation) Learn Syntax of Selected Language (Mid-November – December)
Algorithm Development Algorithm: A method of solving a problem involving a finite series of steps Binary Decision-Making Flow-chart layout Symbology
Think Like a Computer Mass Casualty Incident START Triage
Putting it all Together – PB&J Lab How do you make a peanut butter and jelly sandwich?
Level of Detail Breadth vs. Depth
Subroutines, Interrupts, Parameters, Returns What about breathing? Repetitive tasks are defined in subroutines Subroutines can be called from another method by name, or called when the program is interrupted, such as by a timer or a button press A subroutine can require a parameter, or piece of data, be provided every time it is called that it will use in the routine; interrupts can pass the interrupter as a parameter Once the routine is done, the program goes back to where it left off; it can pass a piece of data in return based on its execution, or it can pass void to indicate it is complete
Pseudocode Pseudocode is an abstraction of source code Pseudocode is language-specific, but there are strong similarities between C/C++ and Java pseudocode Pseudocode is not strictly defined, as it is for human interpretation A method pseudocode would look like this: (, ) { Do something Do something else If something is true Do something Otherwise Do something Different Return something }
Example of Pseudocode
Electrical Pre-Season Learn Control System (October – Mid-December) National Instruments “Compact RIO” Microcontroller FRC Driver Station Pulse Width Modulation Proportional-Integral-Derivative Controller hardware Tools of the Trade (October – Kickoff) Soldering techniques Electrical safety Working with Programmers Electronics Testing and Evaluation Oscilliscopes
Control System
Driver Station
Compact RIO
Digital Side Car
Tools of the Trade
Oscilloscope – Purpose and Operation PWM Demo
Summary Non-Mechanical Technical Fields Programming (“Brains” of the bot) Electrical (“Nerves and bloodstream” of the bot”) Next Workshop Programming: “Skeleton Programming” for Aim High! Game Electrical: How to format and work with the cRIO Assistant Position Effective Span of Control (1 Supervisor : 3-7 Subordinates) Interested Juniors: Details at next meeting, or contact me
Future Meetings Online Chats via Skype Online IMs via AIM, FacebookIM, etc. Conference Call Service In-house meetings will be held on Mondays and Wednesdays Mondays will be a short business meeting of the entire team to ensure subteams are coordinated Wednesday meetings, by subteam, will consist of workshops; teams may meet online as an alternative when practical
Questions?