Holonomic Drive

Here's a holonomic drive robot that uses 3 motors (because that's all the motor ports an NXT has, and because that's all you need to make such a robot). Having coached a team that built and programmed a similar but much larger robot for the First Robotics Challenge, Wade Roach of Diamond High School challenged one of his students to build a similar robot during a RobotC class I took at the beginning of the summer. His student was able to successfully implement most of the functionality described below while I (a seasoned math teacher) ended up asking for his code and drilling him with questions for about 2 hours before I was actually able to understand how it worked. It was a humbling experience.

As you can see, the motors are offset from each other 120°, the bright green piece is custom printed using a Makerbot Replicator, and the omni wheels are from rotacaster.

Here's my version of the program based on the one originally written by Kyle Hackett during July of 2012 at the Alaska Summer Research Academy. Since the program is written in Labview, you can control it by feeding values to it from an Android device using App Inventor (both languages use Lego's standard bluetooth protocal-RobotC has its own). The program allows you to drive the robot in a desired direction independent of it's orientation while also controlling the orientation. It accomplishes this by using a gyro to constantly correct for deviations from the desired orientation and by keeping track of the accumulated divergence from the initial heading (determined when the program is first turned on).

Click to Enlarge

Mailbox 1 and 2 are receiving accelerometer values. Mailbox 3 is receiving either a positive or negative 1 depending on either a left or right button within the app being pushed by the user.

Here's the Sketchup file for the custom piece for those of you who have a 3D printer.