Robotics I - Introduction to Robotics and Programming
A course designed for students who have little or no experience with building robots. Beginning with the fundamental principles of construction and programming, we'll branch into the use of sensors, debugging techniques, and gears. Students use the Tetrix Robotics kit and ROBOTC programming environment from Carnegie Mellon to do hands-on exploration of all of these topics. Engineering notebooks are a central part of the course, and they are required to document their design and development process for review by the teacher. This is a project-based class that places emphasis on teamwork, risk-free experimentation, and student-led topics. Students who take Robotics I are well-prepared for Robotics II and more advanced robotics engineering.
On the pure programming side, students will work with the Processing programming environment to learn how programs are constructed and the building blocks that are used. The learning is also project-based but is more independent, and is accompanied by written work to teach and reinforce the basic principles of engineering. Programming principles taught include variables, functions, loops, if/then/else conditional statements, object-oriented programming (OOP), and much more. Processing is a language primarily for visual artists, but is also a great way for a beginner to learn programming with visual feedback.
Students who take Robotics I are well-prepared for Robotics II and more advanced robotics engineering.
Our textbook is "Learning Processing" by Daniel Shiffman. It contains tons of exercises, lessons, step-by-step instructions, and lots of supporting code and examples online to help you learn to program.
Also check out our Lincoln Robotics Wiki for info about our projects and part descriptions for the LEGO Mindstorms Education NXT kit we use to built our bots.
Challenge: Touch Sensors
This week's challenge is to attach a touch sensor to your bot and use it to create a "bumper bot" that navigates an enclosed space by bouncing off of walls, in a Roomba-like fashion.
We already have working examples of this behavior!
Posted Monday 10/18/10 4:01 PM
Challenge: Motor Synchronization
Using the "Motor Synchronization" exercise under RobotC Curriculum > Movement > Improved Movement, create a table of values for a program that makes your robot drive in four different circles, diameters 1" - 4". Note the values in your engineering notebook for one motor synch combo - either "synchBC" or "synchCB". After you have those values, work on eliminating the "wait1Msec" commands from your programs and use nMotorEncoder values instead to calculate the distance your bot needs to travel around the circles.
Use the NXT's precisely calibrated rotation sensors (instead of the speed/time method you've been using up to now) to make your robot accurately travel pre-determined distances.
Measure the distance (in mm) the robot travels in one rotation of the large tires. This is another way of measuring the circumference of the tires (you may check you answer by calculating the circumference mathematically as well).
Using this measurement, determine how many rotations the wheels need to travel 40cm. Test your answer programmatically on the table, with a meter stick.
CHALLENGE: Using the data and conclusions you've collected, program your robot to travel a specific distance, one that will be announced on the day of the challenge. The robot that gets closest to the line without going over will be declared the most accurate and win the enduring admiration of your classmates, at least until the period is over.