Crum
So my mapping robot is dead, robbed for parts! It could only move on flat, smooth surfaces and i wanted something that could drive around the house. Meet crum. Ive built Crum to continue my endevour to create a robot that can draw a map. The body is made of expanded pvc (an idea taken from several robots posted recently, thanks guys!). Its armed with 3 ir sensors and a sonar sensor. The old mapping robot used just ir sensors and i think the addition of the sonar will help with the mapping and the avoiding of chair legs!! Ive also included an I2C LCD screen, looks cool and very useful when debugging. Crum has the compass module and the wireless link, same as my old bot. Ive been working on software for the pc end where data from the robot is recieved and displayed. Ive decided to try an occupancy grid approach to mapping. Data from the robot can be used to draw a map but thats as far as it gone at the minute.
Above is a pic of the LCD screen in all its glory. Ive also got the sonar working this evening which is nice.
Ive played around with the code and managed to get the robot to plot an occupancy grid map using just the IR sensors at the moment. The screen shot below shows the grid being filled with white cells to represent unoccupied space and black cells to show where objects are located. Im getting a lot of false or inaccurate readings at the moment from the IR sensors. I dont think they are very accurate at longer distances, hence the addition of a sonar sensor.
Update: Ive just added a video of the robot drawing a map. It is currently only using the ir sensors to measure distances to objects. Each cell in the grid has a value associated with it that is altered when the robot sees either an object or free space in that cell. When a threshold is reached the program either colours the cell white or black. I programmed the robot to travel slowly in a square path, no obstacle aboidance or wall following yet. It is clear from the video that even over a short distance, odometry errors occur leading the program to think the robot is in a different place than it actually is.
Navigates, draws maps
- Actuators / output devices: 2 servos
- Control method: Autonomous.
- CPU: ATMEGA32
- Power source: 6V
- Programming language: C
- Sensors / input devices: SRF05 Ultra Sound, 3xSharp IR GP2D12
- Target environment: Indoors - Carpet