Robot Motion Strategies
For this assignment you'll implement some simple reactive programs on the real robot. The programs will let the robot do some basic tasks like wandering around and not running into anything (it is hoped).
The basic idea is to take the tasks you implemented on the Simulator and demonstrate them on the real robot. For this week, use the Nomad robot. We'll go over how to connect up to the Nomad robot in lab
Do each of these tasks with a partner.
- 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.
- Write a program that lets your robot follow a single wall, similar to the cockroach robot, only with sonars instead of antennae.
- Using sonar as a feedback mechanism, have the robot approach an obstacle and stop a specific distance from the obstacle. If the obstacle can move, demonstrate the robot tracking back and forth as the obstacle moves.
- Spend some time characterizing the algorithm(s) you used in the perception exercises. How could you translate these to algorithms on the robot?
- Find a paper on robot navigation/goal achievement and develop some code for the robot. How does the algorithm relate to what you did on the first task?
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.
- 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:
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.