Up, not North

Quick and dirty Arduino kiwi drive robot (controlled by Wii nunchuck!)

July 10th, 2011

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.

Parts

  • 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)

Building it

  1. Attach your servo horns to your omniwheels using superglue or screws. Be sure that they’re centred!
  2. 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!
  3. 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.
  4. 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!

Code

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.

Tagged:

§ 3 Responses to “Quick and dirty Arduino kiwi drive robot (controlled by Wii nunchuck!)”

  • Mark says:

    Saw a great use for these at a Siggraph several years ago.
    Put a small (bathroom scale) sized platform on top and have at least three units all communicating to get lined up in front of each other.
    You can then walk along by stepping on top of them while they move underneath you. Thereby keeping you in-place while you walk forwards.

    I hypothesised a perfect prison with a floor containing many of these and as the ‘prisoner’ in the middle of the room, tried to escape by running in any direction, the floor moved underneath them to always keep them in the center of the room. Occasionaly individual floor ’tiles’ would move off for a recharge.

    he he :-)
    Wonder what you are building…?

  • Awesome project!

    I’m building an omni wheeled robot, and could use some general help. Do you mind answering a few questions?

    1. Should I use a 3 or 4 wheeled omni directional robot? I’m looking for reliability and ease of use.

    2. Do the plastic omni wheels provide enough traction?

    3. Would modifying a servo for continuous rotation work just the same as buying one already modified (like the one you linked)?

    Thanks!

    • 1. I honestly don’t know! I’ve only ever made the one three-wheeled robot, never tried four. I found it very reliable and easy to use.
      2. This is a bit subjective; it provided enough traction for my needs, but maybe not for yours.
      3. Yes, it would.

§ Leave a Reply

*

Post Information