Let's Make Robots!

TOW - TriOmniWheeler

Holonomic Rover

Here's the latest from BOA-Labs: My first omni-wheeler.

It draws very little from the suggestion here. Most roving robots must turn to face their direction of travel. The plan with this one is that it should be able to move around in 2D space without having to turn to face "forward." It's called "holonomic" motion. It's annoying that so many variations on this have already made it to market. Other omni wheelers have a perceived flaw where they might slide off the sloped roof of your house. Not this one.

Programming it is going to be the entertaining bit. Have barely contemplated it. All ideas welcome.

I have reused the the controller from Harmenszoon. This controller was also used in my first biped. In fact, in modifyig the software to operate continuous rotation servos, I found a glitch in the biped code which may well re-ignite the project.

I'm seriously considering my old Psion Series 5 as a controller because it's got an RS-232 port and its own built-in high-level programming language (OPL). It looks like some clever bugger has already thought of that, although they use a Palm Pilot.


The second video show the first signs of life. You're thinking "Cool, all he has to do it flip it over!" Not just yet. First I have to do the next bit....

The first video is the last video. It "does stuff."

Closeup Pictures

Some pics of the chassis. Here's the underside, showing the arrangement of the three continuous rotation servos.


Detail of the servo mounting.


The Maths

All the maths (discussed later in the threads) boils down to this:

d = SQRT(3)/2 (this also happens to be COS(30). Useful because 30+90 is the relative angle of each wheel to the chassis.

N1 = w - x

N2 = x / 2 - y * d + w

N3 = x / 2 + y * d + w

N1, N2 and N3 are the wheel speeds. w is the angular velocity (it can rotate as it travels).

The Conclusion

It's time to take this one apart for the motors. I wanted to get it to do "something" first, though, so here it is moving around in all the prescribed ways on the floor.

The wheels weren't good - they were too slippy.

The servos in continuous rotation mode were extremely difficult to control accurately for speed.

A pity, really. I will try coating them with liquid latex or something at some point to make 'em more sticky.

Case closed.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Like those wire wrap things weren't already difficult enough to get off, some idiot has hotglued them AS WELL!

Looks like omni wheels are the new fasion. I think the base is a nice logical minimalistic design.

Grog is on the right track except for the bit about rotating since you have said you don't want it to turn but simply move in any direction. This means you need to orientate your sensors to suit your wheel layout if you want to keep the code simple.

If for example you made a robot that seeks light then have three sensors, one above each wheel. When a sensor detects light it increases the speed of the other two wheels so that it moves towards the light.

By having each sensor and opposite pair of wheels combo independant from each other combo and using a mixer to combine multiple signalsgoing to each wheel you would have a very efficient light chaser. So efficient that no code would be needed, it could be done without a processor. Just 3 LDRs and some op amps.


PS. where's the video! :P

Omni wheels are the new black. The platform is unexpanded polystyrene. It used to be part of a 2m x 4m signboard in my work, but they rebadged recently, and I made off with the sign. Brilliant stuff. Softens at about 80 degrees (Centigrade), so it can be formed in hot water.

The design is simple because I'm doing this primarily as a programming excercise! I do like your analog solution, but I'm going with an old-fashioned style digital brain!

No sensors. The motors are continuous rotation servos and I'm relying on my ability to calibrate them in software. I'm prepared for them all behaving differently.

I'll make it turn, too, because I think it will look really slick. I wil lbe exceptionally pleased if I can get it to move in a straight line WHILE rotating at the same time.


perfect  pivot rotations, and side strafe capability eh...

not bad! 

As soon as I read the word triangular, there was a bit of a brain haze right behind my eyes. Then my visual cortex kicked in and now I have a migraine!

Please let us know..... Forget video. We want code! Or in your case: high level pseudo code.

Clean start BOA,
Is the general idea 2 wheels rotating will move the bot in one of 3 linear directions - pushing or pulling depending on direction.

3 wheels will rotate the bot.

Looks great, umm, where's the paint sticks? 

TOW04_Fwd.jpgPaint sticks are for artists. I'm a scientist and an engineer. That's why nothing I start is ever really "finished."

The idea is that one or more wheels, potentially rotating an various speeds and directions relative to one another will move the "bogie" in a given direction regardless of what direction it's facing.

TOW05_Right.jpgYeah, 3 wheels rotating the same direction and speed should rotate it about its centre. Any two wheels rotating in opposite directions will send it off in a straight line in the direction perpendicular to the third (non-rotating) wheel.

But look at the scribbles here. It's clear that the wheels should be rotating in the direction of teh blue arrows in order to produce the overall motion indicated by the red arrows. The question is: what should the speed be?

To get it to go "forward" (bear in mind it has no "front") as fast as possible, we drive the "front" wheels as fast as possible, leaving the "back" wheel fixed. To get it to go to the "right," the "back" wheel rotates to the right with the frontleft wheel rotatingforward and the frontright wheel rotating backward. (Even though it relies on <I>Starfleet Universal Up</I> as it has no "front," I'm now going to stop putting quotes round every reference.)

 Hands up who doesn't see the problem? Clearly, when arrempting tomove to the right, if I make the back wheel go full speed, it will move in a curve towards the top right.


 Glad I stumbled upon this post. I have a quick question I hope you couled help me with. In regards to omni wheels, I have a setup (or close to completing) which is outlined in the below drawing (crude). The top 2 wheels are driven off the same motor and  share a drive shaft.The lower wheel has it's own motor. It is also worth mentioning these wheel are the Vex Omni Wheels.

 The question is: what possible movements will the bot posses given all possible scenarios? Logic tells when I can achieve a "floating" motion, but I'm just not sure how this setup will respond. Any insight would be super helpful.




Hmmm... Let's give the bits names. The ones at the top are the "coaxial pair" and let's call the bottom one the "transverse.

There are only two motors. Driving the coaxial motor alone should certainly cause it to go in a straight line.

If you drive the transverse keeping the coaxials steady, you would hope to spin (probably about a point close to the middle of the coaxials). However, since there's nothing to stop the coaxials sliding sideways, my fear is that they will do so, possibly causing it to move in a straight line, or at least in an arc of a (nearly) unpredictabe radius.Let's hope I'm wrong; if I'm right, it won't be possible to correct the motion as the coaxial pair can only be driven in the same direction.

I think the correct way to control this robot woud be like a car. Use the coaxial motor for drive and teh transverse for steering. In fact, the transverse motor needn't be a roataional motor at all: hae you considred just using a servo?

You have a fixed "back axle" but by using poly wheels, you have eliminated the need for a diferential drive.

I think it would work very well in this fashion, but I'm not confident you can achieve the desired "floating" motion.

By the way, those wheels are bloody brilliant looking! What a great find!! You should consider adding them as one of our LMR links!

Good luck!

I disagree with you BOA, because the rollers on the co-axial omni wheels are 90 degrees to the direction of the wheels rotation it will not negate the need for a differential.

The transverse wheel would still need a motor or a continuous rotation servo as it would not require returning to centre for the robot to go straight ahead.