The making of Omnibot mkII

Copyright (C) 2013 by Michal Zalewski < lcamtuf@coredump.cx

This page documents the (ongoing) work on Omnibot mkII. The project is a new version of Omnibot mkI. The new model is meant to achieve much higher miniaturization and improve several other aspects of the original design.

Both the original Omnibot and this revised approach feature a novel reconfigurable drivertrain, which enables the robot to perform on-the-spot 360° turns and to effortlessly alternate between forward and sideways motion. As opposed to most other omnidirectional designs, Omnibot can do so without losing registration with the environment, and without relying on exotic and expensive components. In fact, it uses just three extremely cheap brushed motors and four regular wheels.

Prefabricated components

Electronics

Mechanical components

Ball bearings: 8 * 6 x 10 x 2.5 mm,

Steel dowel pins: 10 * 2 x 6 mm, 4 * 2 x 14 mm,

Machine screws: 6 * #000-120 x 3/16", 4 * 1.5 x 4 mm, 4 * 1.5 x 8 mm.

Custom-made parts

In this spirit, master patterns for all the plastic parts were machined on Roland Modela MDX-540 in Huntsman RenShape 460 medium density modeling board, using 0.25 mm, 1 mm, and 3 mm diameter square end cutters from Hanita. Negative molds and rubber parts were cast in Quantum Silicones QM262 platinum cure silicone. Last but not least, all the rigid plastic components - around 120 parts total - were made out of Innovative Polymers IE-3075 and OC-7086 polyurethane resins, manually pigmented with several low-cost dyes.

The approximate cost of all these custom materials does not exceed $30. A detailed photo blog explaining the entire manufacturing workflow can be found here:





Mechanical design

Crucially, the position of the wheels is synchronized with the help of a third motor coupled to a simple mechanical linkage. This permits the platform to seamlessly cycle through three different layouts of the drivetrain, and perform complex maneuvers with great ease:

In addition to moving forward, backward, or sideways, the configuration shown in the middle permits the robot to rotate its body without leaving the currently occupied spot.

Planetary transmission

Because the moldmaking process is explained in detail on a separate page, I don't want to cover all the gory details again. The following illustration shows the CNC-machined master, a negative mold made out of silicone, and the final parts:

Because of the tiny dimensions of the parts and the tight tolerances of the device, putting the gearbox together is a fairly challenging operation all by itself:

The following video captures a test run of an almost finished gearbox. The yellowish cast is due to thin strips of polyimide tape used to temporarily hold the assembly together:

The planetary transmission used for Omnibot mkII is about three times smaller than the one used in the earlier build. Thanks to the use of two-part molds for the carrier assembly, it has fewer parts, too.

Chassis and linkage

Each of the four axle assemblies is coupled to the chassis using a ball bearing. This allows it to swivel freely. An additional centrally-mounted motor uses four linkages to synchronize the angular position of the axle assemblies. The powered wheels are couples to turn in the same direction as the linkage motor:

The free wheels swivel in a direction opposite to the powered ones, thanks to a pair of gears placed in line with the linkage:

The above picture also shows the two optointerrupters used to detect the orientation of the linkage and monitor traction across the freely rotating wheels.

A complete rendering of the chassis is provided below. Note the 7.4 V, 350 mAh lithium-polymer battery mounted underneath; this should be sufficient for around 100 minutes of driving across flat terrain.

Later on, the robot will be fitted with a smaller top cover screwed onto the four protruding spacers. The cover will hold the PCB and several ultrasonic distance sensors needed to navigate the environment.

The machining of molds for the chassis is fairly uneventful. In this picture, a 1 mm cutter is used to reproduce some of the finer details of the platform, after the initial pass with a 3 mm tool:

For the curious, this photo illustrates the surface finish and edge definition for RenShape 460 molds straight off the mill. Gear teeth visible in the image are around 0.5 mm thick near the base. It is possible to get even better results with denser boards or more careful machining strategies - but in this particular case, I'm just aiming to get things done quickly.

...and here is a close-up of the resulting negative mold made out of silicone:

Finally, here is a snapshot of the main part of the chassis made out of polyurethane, as it came out of the mold:

Here are all the parts of the main assembly, still without tires and wheels:

Wheels, tires, final assembly

The oversized 4.5 cm wheels provide generous ground clearance of almost 2 cm - more than enough to deal with a variety of common obstacles.

Here's a photo of the chassis with the wheels:

...and a test run of the linkage:

Finally, you can have a look at this close-up of one of the assembled wheels. Both position sensors are clearly visible, but not hooked up yet:

Electronics

Actively discharging the battery below 5.6 V is a concern, too, as it may negatively affect its chemistry; for this reason, MAX8212 voltage monitor and a cheap, high-current p-channel MOSFET are coupled to cut off all power to the DC-DC converter as necessary.

The 1 MΩ and 250 kΩ resistors are used to set the MAX8212 threshold voltage, and should be matched reasonably closely; the same goes for the 270 Ω resistor used to set the output voltage of OKR-T/3-W12-C. The p-channel MOSFET and its 68 kΩ bias resistor can be substituted freely. It is advisable to place a low-ESR MLCC capacitor in the vicinity of 10 µF between the output pin of the DC-DC converter and ground.

The main circuit uses an 8-bit AVR microcontroller running at 20 MHz (ATmega1284P). The MCU is interfaced to several accessories:

An HD44780-compatible 8x2 character LCD - 10 I/O pins.

Three narrow-beam ultrasonic distance sensors, operated as single-shot, pulse width output - 6 pins.

Three H-bridge controllers for motors, with speed control implemented via a trim pot - 6 pins.

Three optointerrupters to sense wheel rotation and linkage position - 3 pins.

A single diagnostic LED - 1 pin.

An obvious and accessible self-destruct button.

All capacitors, resistors, and diodes can be replaced with ballpark substitutes, except for the resistors connected to the "contrast" pin of the LCD; this point needs to be held at approximately 0.5 V. The 20 MHz crystal and the nearby capacitors can be skipped to operate the MCU at its nominal speed of 8 MHz.

The remaining circuit blocks are similarly unassuming:

Once again, the components don't have to be matched with any special zeal. The motor supply pin (VS) for the TA7291SG driver is connected to +5 V through a medium-power resistor that limits in-rush current. The motor is also coupled to a low-ESR 100 nF capacitor and a bidirectional transient voltage suppresor. The TVS can be substituted with two low-voltage Zener diodes if necessary. Several capacitors between VCC / VS terminals of the drivers and ground may be useful in case of any stability issues with the MCU.

Well, that's it!

Software

Closing words

You can reach me at lcamtuf@coredump.cx.