Challenges of Building an Omni Wheel Robot
January 22, 2019
You may wonder why wheels that roll at 90degrees to their traditional axis, and their 45 degree Mecanum cousins, aren't more commonly used in industry and high-end robotics. For one thing, they're expensive.
Consider a wheel with rollers arranged at 90 degrees to its traditional axis of rotation. This would allow the wheel to roll not just forwards and backwards, but side to side as well. While not a new concept, and something that’s commonly employed in industry in conveyor systems these wheels can also be used to create a robot that can travel forwards and backwards, turn to the left and right, and, uniquely, slide left and right.
While these wheels have some obvious advantages, you may wonder why they, along with their 45° Mecanum cousins, aren’t more commonly used in industry and high-end robotics. For one thing, they tend to be much more expensive than solid wheels, and as I found out when I tried to build my own omni-bot, things are (as usual) more complicated than they initially appear.
Traction Traction Traction
Once you have a solid mechical design, actually constructing making an omni-bot isn’t too difficult. In theory, the radially aligned stepper motors driven by Easy Driver driver boards and an Arduino Nano should give it very precise control. In fact, I’d envisioned using this robot as a sort of advanced camera dolly or even something that could perform CNC operations as it traversed and turned “effortlessly” in the X/Y plane.
Unfortunately, the reality of the situation was much different, and my original choice of wheels with plastic rollers tended to slip on smooth surfaces. I tried to correct this by coating the rollers with Plast Dip to increase the traction, moving it in an “X” orientation where all four wheels are powered in forward and side-to-side movement. I even designed spacers and shocks in an attempt to increase contact of all four wheels. Unfortunately, none of this worked well on a smooth surface, though these hard rollers did perform admirably on a yoga mat—for whatever that’s worth.
Ultimately, I did purchase new wheels with flexible rubber rollers. The ‘bot has performed much better after this replacement, but there are still intermittent issues when one wheel’s rollers are in positions with minimal rolling contact.
Programming and Electronics
Beyond that “small” traction detail that took me an embarrassing amount of time to resolve (yet another reminder to never underestimate the scope of a “small” problem), I of course had to get the programming in order. The device nominally uses one pair of motors at a time to go forwards and backwards, and its code, available here on GitHub, uses a series of functions to help handle high and low level control of the motors. In the final stages of this project, I mistakenly overwrote my code with something else I was working on, but had an earlier version that I as able to go back and modify. This was inconvenient, but not as disastrous as it could have been. Always back your code up, preferably somewhere that can’t be overwritten in one step!
Power-wise, I originally used a USB supply, but switched to a LiPo battery, adding eye-like warning lights to show when its voltage dropped too low. I used a screw terminal shield with the Arduino Nano, eliminating some soldering work, and allowing me to modify things without too much trouble as needed. Interestingly, I thought the 12” circumference of this robot would leave plenty of room for its wiring, but as usual, things were crammed into its body. This worked out without much issue, but it makes me appreciate, once again, why no one ever complains about having too much electrical cabinet space.
While an exciting concept, in my opinion this mechanical technology hasn’t really taken off because of its added complication and cost compared to normal wheels, along with—and perhaps foremost—its difficulty obtaining sufficient traction on different surfaces. One might note that my robot resembles (unintentionally) a Roomba vacuum cleaner, and I can’t help but think that engineers at iRobot likely considered this technology, eventually settling on a simpler, cheaper, and more “tractiony” 2-wheeled design.
While not the proper solution for every problem, this type of wheel would be good to consider in some situations. Of course, if you need to reduce friction in multiple axes—such as in a conveyor— these wheels would certainly be a solid choice. You can see the initial build process for this device on YouTube here, and I plan to release a second showing the extra work needed to “perfect” it soon!
Jeremy S. Cook is a freelance tech journalist and engineering consultant with over 10 years of factory automation experience. An avid maker and experimenter, you can follow him on Twitter, or see his electromechanical exploits on the Jeremy S. Cook YouTube Channel!