CS 363: Assignment #1

Robot Motion Strategies

For this assignment you'll implement some simple reactive programs in a robot simulator. The programs will let the robot do some basic tasks like wandering around and not running into anything (it is hoped).


Part of the first assignment we'll do in lab, and part of it you'll do in the simulator with a partner. Your code won't actually run the robots until week 2.

  1. Perception exercises: Do each of these exercises with a partner. We'll do some examples in lab. In each case, write down what the experience was like, and whether you were able to develop some algorithms that would let you solve the problem.
    • Open loop navigation: Mark a spot on the floor as a goal point. Go somewhere else in the room with no obstacles between you and the goal. Get a good look at the goal, then close your eyes and go to the goal. Do this five times and estimate your error.
    • Open loop with landmarks: Arrange some landmarks in the room that can be told apart by touch. Place them around the goal, but not necessarily in the path from start to goal. This time, the person--with closed eyes--can use their hands to find and identify landmarks. Do this five times and estimate your error.
    • Open loop with uncertainty: Do the same as the prior case, but make two or more of the landmarks identical. Then start the person in an unknown location (blindfold, spin around, and move them to a random starting point). Do this five times and estimate your error.
    • Local navigation: Set up an obstacle course between you and a goal. With your hand over your eyes so you can see only 1-2 feet in front of your own feet, try to achieve the obstacle. Keep track of how quickly you do this.
    • Global navigation: Do the same as the prior case, but the person can see the entire course. Note the character of the path the person follows to the goal point. Could you find a more optimal path?
    • Maze navigation with local sensing and a map: Set up a goal point or landmark and let the person get a good look at the room and the goal point location. Then blindfold them, spin them around, and move them to a point in the open. Using hands only, the person should try to achive the goal point. The person should talk about their strategy and where they think they are as they navigate.
  2. Simulator Tasks: Do each of these tasks with a partner (assigned) in the nomad robot simulator. We'll go over how to get it up and running in lab.


    • Write a program that takes in a command line argument that is the number of degrees to turn. Positive is a left turn, negative is a right turn. Have the robot turn that number of degrees in a smooth fashion.
    • Write a program that takes in a command line argument that is the distance the robot should move forward. Positive is forward, negative is backward. Have the robot move that distance in a smooth fashion.
    • Write a program that takes in a position on the plane relative to the robot's current position and has the robot move smoothly to that position. The robot's starting location is always (x, y, r) = (0, 0, 0), where x is forward, y is left, and r is orientation relative to a global direction axis.
    • Write a program that lets the robot wander around without bumping into things. Use the sonar sensors to identify obstacles in the robot's path. You can make and save maps in the nomad simulator.



The writeup for each project should be a brief summary of what you did along with some code examples, terminal output, or screen shots, depending upon the assignment. Please organize the writeup as follows.

  1. Title of the project and your name
  2. An abstract describing what you did in 200 words or less.
  3. A brief description of code you wrote and experiments you ran.
  4. Results.
  5. A brief description of what you learned.


Make your writeup for the project a wiki page in your personal space. If you have questions about making a wiki page, stop by my office or ask in class.

Once you have written up your assignment, give the page the label:


You can give any page a label when you're editing it using the label field at the bottom of the page.

Do not put code on your writeup page or anywhere it can be publicly accessed. To hand in code, attach it to an email and send it to the prof.