You are previewing Winning Design!: LEGO MINDSTORMS NXT Design Patterns for Fun and Competition.
O'Reilly logo
Winning Design!: LEGO MINDSTORMS NXT Design Patterns for Fun and Competition

Book Description

Winning Design! LEGO Mindstorms NXT Design Patterns for Fun and Competition is about design that works. It's about building with LEGO MINDSTORMS NXT for fun, for education, but especially for competition. Author James Trobaugh is an experienced coach and leader in the FIRST LEGO League. In this book, he shares his hard-won knowledge about design principles and techniques that contribute to success in robotics competitions.

Successful design for competition recognizes that at the critical moment, at the moment when the most people are watching, at the moment when you are the most stressed, that you have only one chance to "get it right". You therefore need designs that are proven and robust, that will withstand variation such as from a battery running down its charge, that won't be thrown off by changing light levels, that will repeatedly do just what you have designed them to do, no more, no less.

Winning Design! unlocks the secrets of reliable design using LEGO MINDSTORMS NXT. You'll learn proven design patterns that you can employ for common tasks such as turning, pushing, pulling. You'll reduce and compensate for variation in performance from battery charge levels and motor calibration differences. You'll produce designs that won't frustrate you by not working, but that will delight you with their reliable performance in the heat of competition.

  • Written by a coach who knows what it takes to field a winning team in competition

  • Useful to coaches who teach, and to students wanting to grow their skills

  • Presents proven design patterns that help take the stress out of competing

Table of Contents

  1. Copyright
  2. About the Author
  3. About the Technical Reviewer
  4. Introduction
    1. Four Principals of a Winning Robot
    2. Getting the Most from This Book
  5. 1. Introduction
    1. 1. Design Considerations
      1. 1.1. Understanding the Rules
        1. 1.1.1. Knowing the FLL Robot Parts Rules
        2. 1.1.2. Studying the Game Mission Rules
        3. 1.1.3. Grouping Missions into Zones
      2. 1.2. Tasking the Missions
      3. 1.3. Mapping Out the Field
      4. 1.4. Working with Constraints and Obstacles
        1. 1.4.1. Field Obstacles
        2. 1.4.2. Environmental Obstacles
      5. 1.5. Choosing Software
        1. 1.5.1. Introducing ROBOLAB
        2. 1.5.2. Introducing NXT-G
      6. 1.6. Understanding the LEGO MINDSTORMS Hardware
        1. 1.6.1. NXT Intelligent Brick
        2. 1.6.2. Touch Sensor
        3. 1.6.3. Light Sensor
        4. 1.6.4. Ultrasonic Sensor
        5. 1.6.5. Servo Motor
      7. 1.7. Beginning the Design Process
        1. 1.7.1. Brainstorming as a Team
        2. 1.7.2. Presenting Your Design
        3. 1.7.3. Drawing Your Design
      8. 1.8. Resource Contention
      9. 1.9. Summary
    2. 2. Chassis Design
      1. 2.1. Understanding Basic Design Aspects
        1. 2.1.1. Size
        2. 2.1.2. Power
        3. 2.1.3. Speed
        4. 2.1.4. Batteries
      2. 2.2. Finding the Center of Gravity
      3. 2.3. Gearing Up
        1. 2.3.1. Spur Gears
        2. 2.3.2. Crown Gears
        3. 2.3.3. Bevel Gears
        4. 2.3.4. Double Bevel Gears
        5. 2.3.5. Worm Gears
        6. 2.3.6. Clutch Gears
        7. 2.3.7. Pulleys
        8. 2.3.8. Knob Wheel
        9. 2.3.9. Gear Ratios
      4. 2.4. Getting Your Wheels
        1. 2.4.1. Circumference
        2. 2.4.2. Mounting
      5. 2.5. Treads
      6. 2.6. Exploring the Most Common Chassis
        1. 2.6.1. Two-Wheeled Robots
        2. 2.6.2. Three-Wheeled Robots
        3. 2.6.3. Four-Wheeled Robots
        4. 2.6.4. Six-Wheeled Robots
        5. 2.6.5. Tracked Robots
      7. 2.7. Troubleshooting
      8. 2.8. Summary
  6. 2. Navigation
    1. 3. Going Straight
      1. 3.1. Design Influences
        1. 3.1.1. Wheelbase
        2. 3.1.2. Weight
        3. 3.1.3. Wheel Circumference
        4. 3.1.4. Wheel Support
      2. 3.2. Programming to Go Straight
        1. 3.2.1. Move Block
        2. 3.2.2. Motor Block
        3. 3.2.3. Reset Motor Block
        4. 3.2.4. Custom MyMove Block
      3. 3.3. Batteries
        1. 3.3.1. Replaceable Batteries
        2. 3.3.2. Rechargeable Battery Packs
      4. 3.4. Helpers
        1. 3.4.1. Wall Following
        2. 3.4.2. Base Jigs
      5. 3.5. Tips
        1. 3.5.1. Motor Matching
        2. 3.5.2. Removing Gear Slack
        3. 3.5.3. Troubleshooting
      6. 3.6. Summary
    2. 4. Consistent Turning
      1. 4.1. Turning Designs
        1. 4.1.1. Differential Steering Systems
        2. 4.1.2. Steering Drive Systems
      2. 4.2. Calculating Turns
        1. 4.2.1. Single-Wheel Turns
        2. 4.2.2. Dual-Wheel Pivot
      3. 4.3. Programming
        1. 4.3.1. Move Block
        2. 4.3.2. Motor Blocks
        3. 4.3.3. Creating a Custom MyPivot Block
        4. 4.3.4. Creating a Custom MyTurn Block
      4. 4.4. Summary
    3. 5. Line Following and Detection
      1. 5.1. NXT Light Sensor
        1. 5.1.1. Ambient Light
        2. 5.1.2. Reflective Light
      2. 5.2. Positioning the Light Sensor
      3. 5.3. Calibrating the Light Sensor
        1. 5.3.1. Making the Calibration
          1. 5.3.1.1. Using the NXT-G Calibration Block
          2. 5.3.1.2. Using a Local File
        2. 5.3.2. Viewing the Calibration
        3. 5.3.3. Deleting Calibration Data
      4. 5.4. Shielding the Light Sensor
      5. 5.5. Line Following
        1. 5.5.1. A Dual-State Example
        2. 5.5.2. Defining More Than Two States
        3. 5.5.3. Implementing a Proportional Algorithm
        4. 5.5.4. Using Dual Light Sensors
      6. 5.6. Line Detection
        1. 5.6.1. Finding a Line
        2. 5.6.2. Detecting Color in Lines
      7. 5.7. Summary
    4. 6. Squaring Up
      1. 6.1. Squaring Up with Walls
        1. 6.1.1. Passive Wall Squaring
        2. 6.1.2. Interactive Wall Squaring
      2. 6.2. Aligning with Lines and Edges
      3. 6.3. Summary
    5. 7. Collision Detection
      1. 7.1. Touch Sensor
        1. 7.1.1. Monitoring the Pressed State
        2. 7.1.2. Detecting the Released State
        3. 7.1.3. Achieving the Bumped State
      2. 7.2. Light Sensor
      3. 7.3. Ultrasonic Sensor
      4. 7.4. Summary
  7. 3. Manipulation
    1. 8. Passive Attachments
      1. 8.1. Types of Passive Attachments
      2. 8.2. Pushing
        1. 8.2.1. Bumper
        2. 8.2.2. Plow
        3. 8.2.3. Delivery Box
      3. 8.3. Hooking
        1. 8.3.1. Simple Hook
        2. 8.3.2. Fish Hook
        3. 8.3.3. Carabineers
        4. 8.3.4. Fork
      4. 8.4. Dumping
      5. 8.5. Collecting
        1. 8.5.1. One-Way Box
        2. 8.5.2. Sweeper
      6. 8.6. Spring-Loaded Attachments
      7. 8.7. Attachment Interfaces
        1. 8.7.1. Snapping Pins
        2. 8.7.2. Nonsnapping Pins
        3. 8.7.3. Magnets
      8. 8.8. Summary
    2. 9. Power Attachments
      1. 9.1. Power Attachment Locations
        1. 9.1.1. Adding an Attachment to the Front
        2. 9.1.2. Adding an Attachment to the Center
        3. 9.1.3. Adding an Attachment to the Rear
      2. 9.2. Types of Attachments
        1. 9.2.1. Attachments That Grab
          1. 9.2.1.1. Claw
          2. 9.2.1.2. Vise Grip
          3. 9.2.1.3. Trap
        2. 9.2.2. Attachments That Lift
          1. 9.2.2.1. Lever
          2. 9.2.2.2. Forklift
        3. 9.2.3. Attachments That Push
          1. 9.2.3.1. The LEGO Actuator
          2. 9.2.3.2. Custom Actuator
      3. 9.3. Power Interfaces
        1. 9.3.1. Direct Connections
        2. 9.3.2. Gears
        3. 9.3.3. Driveshaft
      4. 9.4. Summary
    3. 10. Pneumatics
      1. 10.1. Operation of Pneumatic Parts
      2. 10.2. Available Pneumatic Parts
        1. 10.2.1. Pumps
        2. 10.2.2. Air Tank
        3. 10.2.3. Pneumatic Switches
        4. 10.2.4. Pneumatic Actuators
        5. 10.2.5. T-Joints and Air Hoses
        6. 10.2.6. Air Gauges
      3. 10.3. Integrating Pneumatics with the NXT Robot
        1. 10.3.1. Starting Out
        2. 10.3.2. Triggering the Attachment
        3. 10.3.3. Building Attachments
      4. 10.4. Summary
  8. 4. Programming
    1. 11. Master Programs
      1. 11.1. My Blocks
        1. 11.1.1. Defined Start and End Events
        2. 11.1.2. Example Mission Code
      2. 11.2. Simple Sequencer Program
        1. 11.2.1. The Setup
        2. 11.2.2. Creating My Blocks
        3. 11.2.3. Creating the Sequencer
        4. 11.2.4. Looking at the Code
      3. 11.3. Creating a Better Sequencer
        1. 11.3.1. Program Navigation
        2. 11.3.2. Sequence Rollover
      4. 11.4. Creating an Advanced Sequencer
        1. 11.4.1. Program Display
        2. 11.4.2. Saving State
      5. 11.5. Summary
    2. 12. Program Management
      1. 12.1. NXT Updates
      2. 12.2. RoboLab Updates
      3. 12.3. Managing Source Code
        1. 12.3.1. Single Computer
        2. 12.3.2. Network of Shared Computers
        3. 12.3.3. Flash Drives
      4. 12.4. File Naming
      5. 12.5. Summary
    3. 13. Documentation and Presentation
      1. 13.1. Program Documentation
        1. 13.1.1. Program Description
        2. 13.1.2. Printed Copies of Programs
      2. 13.2. Robot Design Documentation
        1. 13.2.1. Documenting Chassis Design
        2. 13.2.2. Attachment Design and Description
      3. 13.3. Presenting to the Technical Judges
        1. 13.3.1. Describing Your Solution Process
        2. 13.3.2. Presenting Your Technical Notebook
        3. 13.3.3. Talking to the Judges
      4. 13.4. Summary
    4. A. Building DemoBot
      1. A.1. Assembling the Left-side Wheels
        1. A.1.1. Left-Side Submodel One
        2. A.1.2. Left-Side Submodel Two
        3. A.1.3. Left-Side Main Assembly
      2. A.2. Assembling the Right-Side Wheels
        1. A.2.1. Right-Side Submodel One
        2. A.2.2. Right-Side Submodel Two
      3. A.3. Assembling DemoBot
    5. B. Building the Motor Matching Machine