AUTONOMOUS ROBOTS Project 1 Solution



Navigating a known Obstacle Course with the Lego Robot

The objective of this assignment is to navigate a mobile robot through an obstacle course to a goal location. The start position of the robot as well as the locations of all obstacles and of the goal are given before the robot is started.

The workspace for the robot is a rectangular area, 4.88 m x 3.05 m in size (this corresponds to exactly 16 x 10 floor tiles in the lab). Obstacles are black cardboard squares 0.305 m x 0.305 m in size (the size of 1 floor tile) which will be placed in the workspace. The goal is a black circle with a radius of 0.305 m. To simplify experiments, the center of the goal area, of the obstacles, and of the start will coincide with the intersection point of four floor tiles and their orientation will be aligned with the tiles. An example of such an obstacle course is shown in the figure below.

Obstacles, goal, and start location of the robot will be selected arbitrarily with the restriction that if a path exists, then there will always be a path which is at least 0.61 m (2 tiles) wide. The location of obstacles, start, and goal will be provided at compile time so it is not necessary to write interactive input routines. One possibility is to include them as a header file by providing the coordinates of their centers. For the obstacle course shown above this could look as follows:

Manfred Huber Page 1

CSE 4360 / 5364 – AUTONOMOUS ROBOTS Project 1: Robot Navigation

#define MAX_OBSTACLES 25

/* maximum number of obstacles */

int num_obstacles = 13;

/* number of obstacles


double obstacle[MAX_OBSTACLES][2] =

/* obstacle locations


{{0.61, 2.743},{0.915, 2.743},{1.219, 2.743},{1.829, 1.219},

{1.829, 1.524},{ 1.829, 1.829}, {1.829, 2.134},{2.743, 0.305},

{2.743, 0.61},{2.743, 0.915},{2.743, 2.743},{3.048, 2.743},

{3.353, 2.743},



double start[2] = {0.305, 1.219};

/* start location


double goal[2] = {3.658, 1.829};

/* goal location


At the end of the project each group has to hand in a report and give a short demonstration of their robot. During this demonstration you should provide a short description of the robot and navigation system, and be prepared to answer some basic questions.

The Project

  1. Build a mobile robot for this task.

Using the parts in your robot kit, build a mobile robot for the navigation task. (Since the robot has to be able to navigate through the course, an important design criterion might be that the robot is able to keep track of its position and maybe to detect the goal once it is reached).

Your project report should include a short description of your robot design (including the critical design choices made).

  1. Implement a navigation strategy to address the task.

Implement a navigation strategy which will permit your robot to accomplish the navigation task with arbitrary obstacle, goal, and start configurations (subject to the constraints described above). The speed of your robot and the length of the path generated by your robot are not of major important here. The main objective is reaching the goal while not hitting any obstacles (i.e. without crossing over one of the obstacle tiles). In addition, the robot has to stay within the assigned workspace.

Your report should contain a description of the important components of your navigation strat-egy and the actual code for the robot.

Words of Caution

Dead reckoning (i.e. keeping track of the position of the robot using only internal sensors) for the Lego Robots can be relatively imprecise and navigation strategies might therefore sometimes fail. Don’t get discouraged if your robot does not succeed all the time. Also, moving at slower speeds can improve the overall precision.

Manfred Huber Page 2