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. Your code won't actually run the robots until week 2.
The first set of tasks you need to do with one or more partners. You need to writeup your own experience with the tasks.
The second set of tasks are all programming, and you each need to complete them individually. You are free to discuss the tasks with one another, but you should write your own code and note any collaborators.
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.
Download the file below, which contains a simple program for controlling the simulated Nomad robot. There are instructions for compiling and running the code in the README file included in the tgz file below.
After downloading the file, create a working directory, put the .tgz file into your working directory, and the following command.
tar xvfz nomad-classS17.tgz
Do each of the following tasks on your own. You may discuss how to solve the tasks with one another, but write your own code.
- 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.
- Implement one or more additional navigation algorithms. Within the simulator, you can rely on the robot's location being accurate.
- Using sonar as a feedback mechanism, have the robot approach an obstacle and stop a specific distance from the obstacle.
- Spend some time characterizing the algorithm(s) you used in the perception exercises. How could you translate these to algorithms on the robot? Write some pseudo-code.
- Find a paper on robot navigation/goal achievement and develop some pseudo-code or real code for the robot. How does the algorithm relate to what you did on the first task?
The report 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. The audience for your report is primarily me and should demonstrate that you have completed all of the tasks and provided evidence for all extensions. Please organize the writeup as follows.
- Title of the project and your name
- An abstract describing what you did in 200 words or less.
- A brief description of code you wrote and experiments you ran.
- 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:
Do not put code on your writeup page or anywhere it can be publicly accessed. Make a directory for the project inside your Private folder in your directory for CS363 on the Courses server.