I am thinking of creating a robot that can navigate using a map. It is controlled from a PC. An 8-bit controller performs low level tasks and the PC is doing the image processing. I plan to implement it in a single room where the robot is placed and the robot and environment are tracked by a camera from a height or from the ceiling of the room. First, the robot needs to be mapped, like this http://www.societyofrobots.com/programming_wavefront.shtml

To do:

  • Track the robot from some height using a camera Following the Wavefront algorithm to locate the robot and obstacles.

Procedure:(just my idea)

The camera will give an image of the robot surrounded by obstacles in random places. using some OpenCV technique draws some grind over the image.

  • Locating the grid which contains robot (by having some colored symbol over the robot) and locating the grids containing the obstacle.

  • Now, the grids with an obstacle are thought of as wall and the remaining is the free space for the robot to navigate.

  • The robot is going to get the goal place which should be reached is given from the pc(maybe like point the place to reach in the image by mouse click).

Unknowns :

  • Mapping the room and locating the robot

How to do that? The robot should know where it is in the map or the image. We cannot believe only the camera is enough to locate the robot. So I thought of adding triangulation mapping like placing two IRs in the room and a receiver in the robot.

The doubt I have in this is how an IR receiver can know from which direction it is receiving the IR signal (from left or right ). I think it knows only that it receives IR, not the direction. Then how is the triangulation going to happen if I don't know the angle and direction?

  • coming to the image processing, how can I implement the Wavefront algorithm (that captures the live video and draw grids over it to find the robot and the obstacles)?

I have HC-05 Bluetooth module, Arduino, Bluetooth dongle, chassis with dc motors and driver, and a dc supply.

  • $\begingroup$ I'm unclear as to what you are asking. The title implies you are looking for information on implementing the wavefront algorithm but the body of the text seems more focused on localization, i.e. determining where one is at on a map. Would you please clarify? $\endgroup$ Commented Jul 16, 2013 at 16:14
  • $\begingroup$ Welcome to Robotoics, VV... your "How to do that" is quite a big "How to do..." Please focus the question abit... $\endgroup$
    – Andrew
    Commented Jul 22, 2013 at 10:59
  • $\begingroup$ ya it is big.if i edit it to small, people will asks for extra information $\endgroup$ Commented Jul 22, 2013 at 11:55

2 Answers 2


The camera is enough to locate the robot if its mounted high enough,unless the robot is hidden by furniture. If the furniture hides the robot from the camera, it will hide it from a IR Beacon. If you start the robot in a visible position, don't have too much cover, and use dead reckoning when under cover, you should be okay.The dead reckoning will add error to the robot's known position, but really, how much time is it going to spend underneath a table? The position can be corrected when the robot comes back into view.


First run the Canny edge detector on the captured image. Next dilate the edges by 1 or 2 pixels in the image. Then search the colour image for what ever colour you are looking for. generally pure R,G,or B are good as they aren't very natural. This allows you to localize in the image. Now run the wave front algorithm in the Canny image. It's not very hard to implement its just breadth first search where neighbours are pixels and pixels with value 255 (white) aren't added to the search queue as they are walls. You may want to convert the canny image from 8bit to 16bit so that you can move more than 255 pixels.

The only problem is that is assumes the ground plane has no edges (i.e. not tile or hardwood floor) and it can't deal with obstacles like tables that one can navigate under.

In order to remedy this you would have to find the ground plane somehow. This could be done with a stereo camera or a Kinect.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.