Let's Make Robots!

OmniBOT Arduino Based Three Omni Wheels Holomonic Movement Rover (Kiwi Steering)

Holomonic Movement Kiwi Steering 2DOF
Omni_Robot_Main_2010091171159.pde9.42 KB

Hi to all,

this is an Arduino based three omni wheels rover with 2DOF.

The 2DOF is accomplished by three omni wheels on a continuous rotation servo (modified) each in a 120 deg. angle.

The code was a little bit tricky but with good old trigonometry and physics it is done :)

The actual sketch can be found here: OmniBOT Arduino Sketch

(Yes it is in GREEK it doesn't just sound like it :) but the code is readable (english) )

A few more pictures can be found here : OmniBOT photos

Any thoughts, suggestions or comments are welcome !!

Thank you for your time.



I am saying this is complete cause the main purpose of the project was the code.  

Next will be a completed "sensore-ised" rover.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Very nice work! I love omnidirectional wheels :-) and I have something similar (http://dir.adamh.cz/robot-omnibot/foto/2010_09_11_omnibot-cd/omnibot_cd4.jpg) on my table now.

How did you mounted whells to servos? And didn't you have problems with wheel adhesion as I have? (I have to put my robot on some rougher or rubber surface if I want him moving straight)


Looking forward to the version with sensors! :-)

Thanks adamh,

actually the CD-based rover is a great idea !!! nice thinking.

I super glued the spare horns on the wheels so they are stable as rocks :) I used a pencil as an axis so they where centered.

I do have problems with wheel adhesion they are slippery as on ice !!! but I had to work with them as you :)

You can tell how slippery they are watching the video :((((

Did you read the sketch ? Did you tried it ? 

I am waiting for yours to be alive !!!

Thnx again

No, and I don't use Arduino, so I have another code :-) Where can I find yours? Did you solved problems with servo non-linearity?

The pencil is an interesting idea, I tried gluing it too first, but centering was a little bit tricky :(

When will you have version with sensors? :)

I was waiting for someone to have some questions about it !!!! Thank you for that.

I am using 3 different ways to "fine tune" the servos.

1.Because they were modified for continuous rotation they didn't have the same settings

(max/min pulses and of-course the center). So I used an array with their Offsets. Every time I am

asking the servo to do something the offset is there.

2. There is an option to mount some servos with different "polarity"  so I am using a "polarity" variable (vals: 1,-1) to

multiply by the final speed.

3. The linearity was a tricky bit. I am using logarithms (ln(1+cos(dir)*1,718)) and then I am "mapping" the values to the

servo pulses limits. Not perfect but close enough !! 

About the sensors, I am going to use 2 IR mounted on a servo with 180 angle between them, so I am going to have

360 degrees scanning region with one sweep . That's to have omni robots, obstacles can be everywhere around !!!! :)

Hope you find it useful.

Thank you again !!



What uC are you using ?


Very nice, I had the same problems with servo's "center" value :-)

I am using cubic regression from http://www.cs.cmu.edu/~pprk/tech_info.html for counting servo speed, it works well. I use jBotBrain controller (http://jbrain.c-bot.eu), it's board with AT91SAM7S256 running Java (like lejos on Lego Mindstorms). I've uploaded my robot's video on http://www.youtube.com/watch?v=wrWtY4WH_PU, but I don't have time now for playing with t and adding more sensors :(

Have you mounted IR rangefinders already? I am looking forward to next video :)

Hi Adam, nice video and good idea for the plastic floor !!! :)
I didn't even think of cubic regression but using the logarithmic approach I am getting a close match.

I am going to measure the wheels speed to make it more accurate (Nice thinking !!!! thnx)

The jBotBrain is a very nice uC unit and as I can see you are getting a nice movement.

The goal with our type of robots is to: Always Have The Front Side Ahead and I am not there yet.

Maybe I have to blame the wheels !!!??? but I am still "fighting" with the code. 

I am not going to add any sensors till I got the accurate movement I am looking for so I am back to "software coding" issues.
I am having some hard time at work (New Cisco ASAs) so I am a little bit back but hopefully I will have some free time to spend
on it.

Please keep me posted with your progress always two minds is better than one ;) 


Adamh you can see the code here : OmniBOT Sketch

(or see the attachment above)