Students from Stanford's Experimental Robotics course put their programming chops to work by teaching robots to play golf, tennis and soccer goalie; line up dominoes; and swat balloons in the style of King Kong swatting at airplanes.
"Some of these students have been here all night long," said computer science Professor Oussama Khatib, motioning to the half-dozen groups of students hunched over computer screens and robotic arms.
"They've built a robotic soccer goalkeeper," he said, pointing to a mechanical arm mounted on a wheeled platform as it darted across the floor. "Over here is one that lines up dominoes, and downstairs there is a very scary gorilla that swats balloons. If these all work, this is going to be a lot of fun."
This random assortment of 'bots were among the final projects designed by students in the Experimental Robotics computer science course, taught by Khatib, and recently put on display in the Artificial Intelligence Laboratory.
The course builds on the theoretical mathematics and programming skills students learned in their Intro to Robotics course during the winter quarter and provides critical real-world lessons.
"It is one thing to learn about an equation; it's a completely different thing to see how this equation is going to work. What is fun about robots is that you can really see exactly the result, and you see it immediately," Khatib said.
The final course project is very open ended: Students simply must program a pre-fabricated robot to perform some sort of task. There are few restrictions on what this task can entail, but it typically requires students to design and program a robot that can sense where it is in space, detect objects around it and then interact with those objects in its environment.
While Khatib is always interested to see the students put their new programming chops to work, he is perhaps more excited to see their creativity. This year's lineup included a robotic golfer, a giraffe-headed 'bot that played fetch, a tennis-playing robotic arm and a touch-sensitive arm that could draw and play tic-tac-toe. Students and professors still talk about the Star Wars-inspired JediBot from 2011, a mechanical arm programmed to engage in lightsaber duels.
"I have been teaching this class for many years, and every year the students come up with something completely different, and this is really remarkable," Khatib said.
In addition to learning new programming languages and software to control the robots, students must also quickly master the nuances of other critical components, such as motion sensors, high-speed cameras and force-feedback sensors. Integrating all the pieces, and then getting the robot to perform in a reliable fashion, doesn't always go smoothly.
"Once you kind of get over the joy of just playing around with a cool toy, it slowly starts to get more frustrating," said Michael Bunne, a first-year master's student in mechanical engineering. "As you get more and more complicated, [the robot] tends to work less and less. And then, eventually, there's usually a breakthrough that just causes everything to come together … and then it becomes fun again."
Many of Bunne's classmates shared similar frustrations, but they agreed that troubleshooting was a valuable learning experience.
"If your ideal solution doesn't work, you're going to have to come up with a Plan B, and that's what I think being a mechanical engineer is all about," said Xiao Ying Zhao, a senior in mechanical engineering. "Whether I'm going to be programming robots in my future, I don't know, but the problem-solving skills I've developed here will definitely help in the future."
Explore further: Not exactly your grandfather's Lego