Control Systems/ Software Training Curriculum

Guiding Principles

  • Students hate lecture style teaching. Better to be hands on. Avoid powerpoint lectures.
  • Students have a wide variety of skill levels. Take care not to cater to any one particular level.
  • Many students do not attend every meeting (due to conflicts with sports, band, family obligations, etc).
  • Make sure to coordinate/ review with software leads

The Plan

There are three technical skill levels that build on their predecessors. Not all students start at level one. Idea: If we come up with 3-5 activities at each level we can mix and match.

Immediate needs

  • Identify the challenges and activities for the first 4 weeks.

BoB/IROC competition preparation (experienced students)

Skill Level 1: Students new or beginners at Java programming (Robocode)

  • Software fundamentals.
  • Java Programming Basics
  • Computer focused.
  • Individual Challenges/ Competition
  • Learn to compile and run Java
  • Eclipse Basics
  • For while loops,if statements, functions.
  • Emphasis on Individual Challenges/ Competition.
  • Supplement with online training resources (on student's own time)
  • Zhaozhou/Jill? running point on this skill level.
  • Action: Talk to dev lead, identify dependencies (machines?), create a few exercises on Robocode. See something working, change it, create something new.
    • Set up robocode environment.
    • Show idea/walk them through it.
    • Have them make changes.
    • Custom activity/challenge: Battle Royale?
  • (Setting_Up_Robocode)

Skill Level 2: Familiar with simple programming, no embedded/io/robot experience (Minibots)

  • Pibots
  • Bots are fully built up front with OS installed. A bit of risk given timeline.
  • Basic bot / hardware familiarization (This is power, this is control, different parts)
  • Basic IO manipulation with Java
  • Drive manipulation/autonomous without sensors with Java
  • Sensor manipulation with Java
  • Integration Challenges
  • Small Team
  • Alan running point on this skill level (Chris D helping).
  • Action: Build minibot. Come up with exercises like above.

Skill Level 3: Familiar with embedded java/simple robots (Midbots/ peanut/ roborio/ wpilib)

  • Roborio
  • Frcsim
  • Wpilib
  • Jason running point on this skill level.
  • Action: Get simulator running, figure out what there is to teach from Student Software Lead.
  • Challenges:
    • Autonomous navigation (navigate an increasingly difficult course)
    • PID control (balancing something e.g. on an arm, constant speed despite terrain, etc.)
    • Vision/targeting
    • Shooting/grabbing/lifting/driving


  • All students take safety class.

Software Development

  • "Bob taking point on this"
  • Git
  • Peer reviews
  • Testing (Blackbox/ Clearbox)
  • Phases of Software Development
  • Basic Design
  • Problem Solving/ Debugging
  • Teambuilding
  • All students should take this?
  • Student to teach git?
  • Block diagrams flow charting
  • OOA&D
  • Problem Solving/ Broken Code (Fix some code?)

Sensor Deep-Dive

  • Can we mesh in the Ardinuo stuff?
  • Encoders
  • Switches
  • IR reflectors/interrupters
  • Ultrasonic
  • Accelerometer/9DOF
  • Cameras/vision

Student Training/ Activity Ideas

Level 0: Basic Java

Level 1: Robocode

  • Battle Royale: Design own bot to win!

Level 2: Minibots

  • Wheres my dinner? Have the minibot transport me a bag lunch in the next room.
  • King of the Hill! Stop a robot on a landing on a top of a ramp at specific point.

Level 3: Midbots

  • Develop wpilib like interface for midbots
  • Go through code of current bot, discuss design
  • Figure out FRCSim
  • Mobile app to control minibot via Bluetooth

Software Engineering

  • Classic OOA&D decomposition
  • Find the error. Take turns breaking the code, using git toolset to figure out what happened
  • Mock peer review

Sensor Crosstraining

  • Study/ Try out common sensors
  • Apply minibot ultasonic sensor
  • Apply install minibot 9DOF sensor

Electrical Crosstraining

Mechanical Crosstraing

  • design and 3D print a carry / table assembly for the minibot
  • design and make a simple gripper/manipulator for the minibot (can be done with a single servo motor)

Last modified 4 years ago Last modified on Sep 2, 2017, 5:09:48 PM