I'm working on an robot that would be able to navigate through a maze, avoid obstacles and identify some of the objects in it. I have a monochromatic bitmap of the maze, that is supposed to be used in the robot navigation.

I am just a first year electrical engineering student, and so need help on how I can use the bmp image. I will be making my robot using the Arduino mega microcontroller.

So how should I get started on it.

If you need me to elaborate on anything kindly say so.

Link: http://ceme.nust.edu.pk/nerc/files/theme_ind_2015.pdf


3 Answers 3


It sounds like what you have is an occupancy grid, which you could simply convert to a 2D array of booleans in memory. Your challenge will be to figure out what grid square you are in at any given time, and (when you are very confident about your location) mark down additional map obstacles as "occupied" on your map.

One way to figure out where you are over time is to use a particle filter, and one way to find a path across an occupancy grid is to use the A* search.


User 9428

The task you define is quite easy to solve. First see the sample file BMP as uploaded in FAQ Area in NUST NERC Edu Page. Its a small file 56 bits by 96 bits of information in it.

The question most of students ask and face is how to read the BMP file?

BMP file or any other file what so ever is never so difficult to read or manage.

If you consider it as image you will think about it as image.

It is a text file - can any one read a text file simple with a room temperature or student marks obtained.

its some thing same like that.

upon investigating you will notice that the image it self is border white out side on all sides

then the line of black color starts the white path is all covered on all sides and fully with white elements. black color path is all round except two place which are gates to enter and exit ead them in Arduino and note them and mark as S and F - Start and Finish -

the white lines around are 4 bits by 56 on top and 4 bits by 56 bits are lower most line black lines are inside start from 5th bit and goes to 8th bit on left side wall then on the right side 49th to 52nd bit is black on left side from top to bottom ending is again 53rd bit to 56th bit white line.

Can you code them in Arduino ? quite simple and easy

This above tell opening and exit Marked as S Start and F Finish

Next like wise read the cells and code them by if and them loop to know they are black or white

Once you decode map to Array a 2D array can be manipulated and get all required results to find path and move for motors

some thing like below 001110 011110 011101 111111 111111 010011 010111

each element is coordinate form values

BMP is converted to Array and tell you in map form to deal as arithmetic problem

Arduino or any simple micro can do quite comfortably

the path found is decoded to move

you find two goals location from image also

but image is not telling color to pot in them the color sensor is easy answer to do that

reach place and find which color to pot

when both balls are pot come out of arena or maze

Hope you win this



We begin with a image as BMP of 56 x 96 Pixels as on sample demo on NERC page

The file BMP with name Blue Black BMP gives us the below Matrix generated by Arduino Code

Now Row Number 0 is Entry Wall

1 (1,1)     1 (1,2)     1 (1,3)     1 (1,4)     1 (1,5)     Now Row Number 1
0 (2,1)     0 (2,2)     1 (2,3)     0 (2,4)     1 (2,5)     Now Row Number 2
1 (3,1)     1 (3,2)     0 (3,3)     1 (3,4)     1 (3,5)     Now Row Number 3
1 (4,1)     1 (4,2)     1 (4,3)     2 (4,4)     1 (4,5)     Now Row Number 4
1 (5,1)     0 (5,2)     1 (5,3)     1 (5,4)     1 (5,5)     Now Row Number 5
0 (6,1)     1 (6,2)     1 (6,3)     0 (6,4)     1 (6,5)     Now Row Number 6
2 (7,1)     0 (7,2)     1 (7,3)     1 (7,4)     1 (7,5)     Now Row Number 7
1 (8,1)     0 (8,2)     0 (8,3)     1 (8,4)     1 (8,5)     Now Row Number 8
1 (9,1)     1 (9,2)     1 (9,3)     1 (9,4)     0 (9,5)     Now Row Number 9
0 (10,1)    1 (10,2)    1 (10,3)    1 (10,4)    0 (10,5)    Now Row Number 10
0 (11,1)    0 (11,2)    0 (11,3)    0 (11,4)    0 (11,5)    Now Top Wall   11

Each above is 8 Bits Cell - Given are 5 block 5x8 = 40 bits + 8 bits Left Side + 8 Bits on Right Side 40 + 16 are 56 and 10 Rows each 8 bits info 10 x 8 = 80 and one line on top and one below each 8 Bits so 80 + 8 + 8 = 96 bits info

Please feel free to ask any info regarding more on reading images / Image processing on Micros or Fpga

Well wishes


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.