Crum is a mobile robot driven by 2 modified servos with built in encoders.  I designed and built a custom controller using an Atmel ATMega32 with an on-board h-bridge for motor control.  I equipped Crum with 3 sharp IR sensors and an SFR05 sonar sensor mounted to a servo.  It also has a digital compass module to measure the direction the robot is facing.  With this sensor combination it was possible, by sending data to a PC, to create a map of the environment as the robot explored.

I started mapping using a simple method of plotting the path of the robot and marking this area as free space.  This evolved into using occupancy grids.  The area to be mapped is broken into a grid of equally sized squares or cells.  As the robot explores, the state of any cells that the robot or its sensors encounter will be altered to reflect of an object is present or not.  This approach is based on probabilities and the rule used to update the cells tends to involve a recursive algorithm so that data from every reading taken regarding a cell is taken into account when updating the cells value.  Check out the videos below to see a map being created.  The first video shows mapping using just the IR sensors and the second video uses data from the sonar sensor as well.




5 Responses to Crum

  1. merih tudis says:

    Hi Peter,

    I need a urgent help about your crum project. Well in my master thesis i use 3 ultrasonic ping sensor and 1 servo with arduino duemilanove.
    Check my video here:

    as you see in the video the servo is scanning 180 degrees and 3 sonar (has 120 degree intervals) take the readings.

    Basically in excel macro that i prepared the value was converted polar to cartesian and thats all.

    however i am a mechanical engineer (very poor knowledge of programming)my teacher did not accept it and said it was only rough data.

    So i need a help from u about occupancy grid method.

    I can send you all my code if you want.

    And i beg u:) please help me to finish my project cause i have not enough time to do it. And you are master as i see about that:)

  2. Merih Tudis says:

    Thanks for your help Peter. Well as I said before I could not implement the probabilistic function neither to my arduino code nor the excel macro code because of my poor knowledge of programming. I can only get the distance value from sonar and the angle value with servo then I use this values to create 2d map in excel macro sheet by using polar to Cartesian conversion basically. Now I have to use occupancy grid method to create more accurate map. But I don’t know how I can do it. So please help me about that if you send me your email I can send all code that I prepared I have. I will appreciate for your help.

  3. merih tudis says:

    Peter i dont want to disturb u so much but i really need help for programming about occupancy grid method

    we can communicate via e-mail.

    wait your support please.

    • bigface83 says:

      Hi, I would like to help you but my time is a bit limited at the moment. The first thing you have to do, using whatever programming language/method you know, is to split up the area of the map on the computer into a grid. The grid will consist of lots of equally sized cells, one of which will contain your robot when the mapping begins. Each cell will contain a numerical value the represents the probability of there being an object present in that cell. Each sensor reading will pass through many of these cells in a straight line indicating that these cells contain empty space. The sensor reading itself will indicate the cell that contains an object. Using the method you have already implemented you can work out all of the cells involved in each sensor reading. Its then a case of updating the probabilities of the cells involved in each sensor reading using a learning rule (probably a bayesian estimation). I hope this gives you somewhere to start. As I said, I would like to be able to help a bit more but I have my own projects to work on. Good luck!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Facts and Thoughts on Technological Progress

Turing's Radiator

Pleasantly Warm Topics in Computational Philosophy

Mind the Leap

One small step for the brain. One giant leap for the mind.

Steve Grand's Blog

Artificial Life in real life


Hi, I'm Jim. Read what I write and I'll write more to read.

%d bloggers like this: