Months ago, for a larger project that is currently languishing in my “when I have time” pile, I built a very simple Kiwi-drive robot. Since it likely won’t be “finished” for a long while (and has been sitting in my trunk for weeks), I figured I ought to at least document it.
Very briefly, kiwi drive is a “holonomic” method of moving a robot, which basically means it can move in any direction without having to turn first. It accomplishes this using three omniwheels mounted at the points of an equilateral triangle. With some vector math, you can find rotational speeds for each wheen such that the robot will move in whatever direction you like. I won’t go into the theory too much here, but here are some diagrams and here’s some math (via).
In the video I’m controlling the robot with a Wii Nunchuck. That’s because my 14-year-old cousin was hanging out at the shop when I built it; he saw the controller in my parts bucket and said “you HAVE to connect the nunchuck to the robot!” So I did. I used Tod E. Kurt’s breakout board and example code.
The robot is dead simple. It essentially consists of three different parts — a microcontroller, omniwheels, and servos — and it took about five minutes to put together. Keep reading to learn how it works and download the code.
- 3 continuous rotation servos (you can use other types of motors, but this was simplest for me; I used these)
- 3 omniwheels (I used these, but using these or these or any omniwheels should work
- Arduino (or other microcontroller)
- Good power supply (if you don’t use a good one, you may get power problems or brownout resets)
- Some sort of platform (I used a scrap of acrylic)
- Double-sided foam tape (or servo brackets)
- Superglue (or screws)
- Attach your servo horns to your omniwheels using superglue or screws. Be sure that they’re centred!
- On your platform, mark three lines that meet in the centre of the platform and are each 120 degrees from each other. Use a protractor!
- Find the servo positions by lining up the shaft with each of the guidelines. Then, attach the servos to your platform using double-sided tape or servo brackets.
- Connect the servos: one wire goes to ground, one wire goes to the power supply, and one wire goes to an Arduino pin (determined in code).
And it’s built!
Download some example code! This inclues three Arduino sketches:
KiwiTest1.xml — runs a test pattern, moving the robot back and forth in twelve different directions
KiwiWii.xml — the robot controlled by the Wii nunchuck. Normally it’s controlled by the analogue stick, but if you hold down one of the buttons it switches to being controlled by the accelerometer
KiwiDrive — Doesn’t do anything on its own, but contains the functions used in the other two: give it an angle and a speed, and it drives the robot in that direction. Adding rotation is (for now) left as an exercise for the reader (because I don’t need it, and am too lazy to do it myself). Hint: see this site.