Robots with AI

Chapter: Robots with AI

In lab 6 all our robots had one major feature in common: The only way to control their speed and direction was for the user to do it directly. By clicking in different sectors of the applet, the user could cause the robot to turn left, turn right, speed up or slow down.

You may find such robots to be dull, mindless, boring even.

(The image is from a student computer graphics project at Stanford.)

This week we will investigate the general question of adding an AI (short for Artificial Intelligence) to our robots. "Artificial Intelligence" is a totally unsuitable term, of course, our robots will understand nothing in the human sense of understanding. Nevertheless, they will provide some entertaining diversions while we concentrate on studying some important concepts underlying problem solving by computer, design of software, design of object interaction, and other good things.

The applet below contains some robots that I developed while playing around with random ideas for this lab. If you click inside the robot pit, you will (usually, but the program is far from perfect!) launch a Clinger Robot. You'll see why it's called that, even though it's very imperfect. The image will make sense if you've ever seen an episode of the television series M*A*S*H. Clicking outside the pit will launch a robot with random behavior. Be aware that a Clinger robot can open up the pit by allowing another robot to escape through a red obstacle.

        
             
            Your browser is ignoring the <APPLET> tag!      
        

I don't normally share my failed experiments with you, but for this lab I want to encourage you to think widely about different strategies for solving the same problem. I want you to try out some ideas and discover that they lead to unexpected difficulties. I want you to experience that feeling of "I wish I'd designed it differently". I even want to see you reach a point where the only sensible course of action is to abandon a whole lot of work that you've done, and start all over again.

It's important to think deeply and plan carefully. It's just as important to know when to stop with one plan and go back to the drawing board. For this lab, I want you to fail. I want you to fail often! And I want you to know why you failed. And I want you to try again. Fail again. Try again a different way. Fail again. ...

The lab notebook you keep for this week's lab is even more important than all the lab notebooks you've kept up until now. Most of the grade for this lab will be for your failures! I'm not kidding. I want you to try lots of ideas, lots of different appoaches to solving the same problem. I want things to go wrong for you, and I want you to keep careful notes of what your intentions were, how you proceeded, when your realized you were on the wrong track, and how much more time you wasted on that approach, knowing in your heart of hearts that your were wasting your time. Ideally, I also want to hear about how eventually you overcame all the difficulties and triumphed.

But let me emphasize, the most important part of this lab is for you to document your failures. There is no better way to learn the importance of studying good design techniques than to struggle with the consequences.

I am not ashamed to share with you the applet above which embodies tens of hours of work trying to develop a nice set of lab problems for you to work on. For various reasons, the designs above were flawed and the resulting applets not suitable for use in illustrating computer science concepts in this class. I abandoned them. But they served their purpose. I learned some of what not to do when developing simulated robots for classroom education.

I hope you learn a huge amount from failed and abandoned projects for this lab!


rhyspj@gwu.edu