Middle East Technical University - Department of Computer Engineering
 

CENG786 - Robot Motion Planning and Control
Homework #1 - Implementing Tangent bug

  • Out: Oct 25, 2015
  • Due: Nov 8, 2015

For this homework, you are required to implement the tangent bug planning algorithm in a language of your choice.

In your implementation, you can create your own simulation environment or use an existing system of your choice. As described in the assignments section of this web site, your submission should be in the form of a web page which nicely describes your work. Please do not collaborate with your classmates except exchanging ideas and other inspirational materials.

Your simulation environment should have the following properties

  • A bounded, 2D rectangular workspace modeled as two continuous coordinate variables. You should not use a discretized grid environment to represent your state.
  • A configurable set of polygonal obstacles, not necessarily convex. In fact, you should include nonconvex obstacles in your examples.
  • "Virtual" sensors for measuring the positions of the robot and the goal
  • A "virtual" laser range sensor with a configurable range limit (initialized before starting the simulation), returning an array of distance values for a discrete set of angles (for example, 180 equally spaced samples spanning 360 degrees).
  • The ability to accept either velocity, or discrete displacement commands from a "controller", that can be used to implement a particular planning algorithm.

In summary, you should do the following for this homework

  1. Create a simulation system with the properties outlined above. The most important requirement is that your simulation is faithful to not letting algorithms use more information than would be available on a real robot with a range sensor (i.e. only use range information and direction and distance to goal as well as the position of the robot).
  2. Implement the tangent bug algorithm in this system. Your implementation should be sound and complete. You should test it in a variety of environments ranging from a simple single-obstacle setting to more complex scenarios. If you extend the algorithm in any way, you should describe your extensions in an understandable way such that anyone reading it can implement it as well. You can discretize time if you wish, but you could also implement it as a continuous dynamical system using the ode45 facility of Matlab.
IMPORTANT: As we discussed in class, your submission should really be organized like a good report, perhaps even like a technical paper. It should have logical sections, starting with a brief description of the problem, followed by an outline of your approach and possibly a discussion of difficulties you expect to encounter. You should describe key properties of your implementation, not going into unnecessary detail, bit highlighting aspects that you think were critical. This should be followed by an experimental section, investigating the performance of your implementation under a variety of different scenarios, and in each case, discussing your observations and drawing appropriate conclusions. Anybody looking at this web page should get a clear understanding of what you have done. Good luck!

[ Home | Schedule | Assignments | Readings | Projects | Software | Resources ]

saranli@cs, Uluç Saranlı
The overall design of this web page was inspired by similar pages by Frank Pfenning.