Hands On Robotics
EECS 464 / ROB 464
Robots are real, physical devices. The theory is there because generations of engineers have discovered that the quantitative modeling and control of robots requires this theory. Of course they may have been wrong; there may be a better way; a more innovative way. When building physical devices, the final arbiter of correctness is success at performing the desired task, together with the accumulation of knowledge that allows us to do even better next time. This philosophy is the core of Hands-On Robotics.
Structure of the course
The course is designed around three lab projects done in small teams. Each project consists of a task definition with a goal function the robot must optimize. Students design and build the robots, and compete at performing the task. 50% of lecture time is “classical” lectures and 50% is presentation of project related milestones and their evaluation. Lecture material is reinforced with 10 minute quizzes given online and announced well in advance.
To make it possible to design, build, and program robots so quickly, students use techniques from Prof. Revzen’s research on modular robots and rapid robot prototyping and fabrication. [1,2,3,4]
Project 0
Build a robot that races through a figure 8 track under remote control, using a limited number of “joint” motors – motors that can rotate only 190 degrees each.
Topics covered: Python programming for robotics: core language, ipython, numpy for matrix computations, matplotlib for plotting. Basic networking, command-line, and remote desktop on RPi. Technical & Scientific Writing fundamentals: document structure, language, common mistakes. Rapid manufacture of robot mechanisms and use of the class’s modular robotics kits. What’s a mechanism? Four bar mechanisms. The principle of virtual work and its relationship to gear ratios. Rigid body motions in the plane using complex numbers.
Project 1
Build a robot (typically a vehicle of some kind) that autonomously navigates between waypoints using very limited sensing.
Topics covered: Electrical motors. The force-velocity behavior of motors and back EMF. Kinds of motors: brushed, stepper, servo, BLDC. Holonomic and non-holonomic motion. A* algorithm for path planning. Requirement for admissible heuristics. Particle Filters and conceptual understanding of Bayesian filtering in sensing and estimation. The pinhole camera model. Homographies and their use. Use of simulation placeholders for improving robot development project structure.
Project 2
Build a robot (typically an arm of some kind) that can draw on a piece of paper.
Topics covered: Homogeneous representation of points, velocities, and rigid body motions. Forward kinematics: planar using complex numbers; spatial using product of exponentials. PID control of mechanical systems. What is it? How is it implemented? How can PID gains be chosen and tuned? “PID” control in commercial products and what many of the additional parameters means and are used for. Systematic errors in robot motion planning; gravity compensation;
Teaching history
Hands-on Robotics has been taught almost every year since 2012. The current class wiki contains all projects since 2014, when it was upgraded.
In june of 2024, Prof. Revzen also taught a version of this class as a short course in the Technion Mechanical Engineering Department #036710 Selected Topics in Modular Robotics