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
- 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).
- 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)?
HC-05 Bluetooth module, Arduino, Bluetooth dongle, chassis with dc motors and driver, and a dc supply.