Home / Ramblings / Rotacaster wheel contest: the ideas

Rotacaster wheel contest: the ideas

As per request, here are the ideas of the winners.  I have copied and pasted (most of) the information from the original mails and edited it slightly.

Benoît Genest: An omniwheeled container handler.

In almost every Intermodal port, you can find Container Handlers (or Reachstacker) . These are usually 4- wheeled telehandlers featuring a specially adapted claw to handle containers from ships -to-> trains -to-> trailers -to-> stacks of containers. They’re very useful for minor containers moving and/or loading. But they also have a major flaw, which is the important space around the containers needed to operate correctly the handlers. [Great handler vid] On the Omni-wheeled side, no containers handlers exist at this time. One of the only vehicle to feature Omni-directional wheels is the Airtrax SIDEWINDER© introduced in 2000. [Vid of the SIDEWINDER] My idea would be to combine the telehandler’s boom and claw to carry containers and the Airtrax’s Omni-wheeled system to reduce substantially the space needed around containers. The Airtrax system would need to be modified a bit to use 3 wheels instead of 4. The project would use a total of 3 NXTs : 2 in the handler and 1 in a Bluetooth remote.
The remote would feature :
A 3-axis joystick (left-right, forward-reverse and rotation)[3 motors used as rotation sensors] ;
One big red button to control the automatic container grabbing (1 touch sensor).
The handler with its 2 NXTs (NXT1 and NXT2) would feature :

  • 3 motors to drive the omni-wheels (NXT1) ;
  • 1 motor for the boom raising/lowering (NXT2) ;
  • 1 motor for the boom extension (NXT2) ;
  • 1 motor for the claw mechanism (NXT2) ;
  • 2 colour sensors (NXT1) placed underneath the handler for accurate positioning in the container yard ;
  • 1 ultrasonic sensor (NXT2) to detect container’s distance from the handler ;
  • 2 touch sensors for emergency stop.

For a rough placement of the omni-wheels and NXTs, see this link. The 2 NXTs would also be linked together via their port 4 using the Andi Milluzzi’s RS485 block. This would allow a relatively fast response of the handler.
One of this robot’s goal would be to make it partially or totally autonomous. Which means that during shows, you could either decide to control the handler and to position it by yourself in front of a container, or let the robot choose randomly the container it wants to move, and to move it by itself. This would be possible by using an easy-interlocking system on the containers, and by guiding the robot with coloured lines through the yard.
For the partially autonomous actions, you would control the robot with the 3-axis remote, place it in front of the container and then press the big red button. The handler would then correct its placement using 2 coloured tiles underneath it, check if a container is really in front of it (US sensor) and at which distance it is, extend its boom, open its claw and finally grab the container. At this point, you would become the master again and you could move the handler with its container to another spot where you would press again the big red button.

Brian Bachmeier:


The inspiration for my design idea came from the Rotacaster Minifig Vomit Mobile on your blog.

I had posted the following comment on your blog:

Do you think that the compass sensor would be responsive / accurate enough to also be used to drive the omnibot while also having a constant rotation?

1. orient robot in desired direction and read compass (initial heading)
2. calculate desired angle relative to changing compass heading

Or is the Gyro rotation rate integration more accurate?

I decided that I should build an OmniBot robot and find out for myself. The plan was to build an OmniBot robot that could be remote controlled using a joystick. The left joystick analog would control the robots translational movement (forward / reverse / left / right) while the right joystick analog would add rotation to the robot.

The main challenge was to use the compass sensor to allow for continuous (adjustable) rotation of the omniwheel robot, while maintaining the original translation directions. The end result is a robot that moves forward based on original forward direction, regardless of its current rotation position.

Robot Design


The OmniBot robot that I built was based upon the design created by Danny Benedettelli (which of course was inspired from your One-Kit OmniWheel robot).

I decided to add the Mindsensors PSP-Nx to allow for remote control operation using a wireless PS2 controller. The Compass sensor was mounted on a tall vertical support to keep it removed from any interference.

The only components missing from my robot are a set of Rotacaster wheels.

Program Design

The program was created using NXC with the following basic structure.

  1. when program starts calculate initial heading from compass sensor
  2. continuously calculate relative angle of robot based on initial heading
    angle = SensorHTCompass(CompassPort) – initHeading;
  3. poll the PSP-Nx for the requested X and Y translation values, and also the amount of rotation
    Vx = currState.l_j_x; // Scaled -100 to 100
    Vy = currState.l_j_y; // Scaled -100 to 100
    Rot = currState.r_j_x / 4; // Scaled -25 to 25
  4. Calculate the motor speeds for all 3 motors for the desired translation movement
    V1 = Vb*(cosd(angle)*cosd(theta)+sind(angle)*sind(theta));
    V2 = Vb*(cosd(angle + 120)*cosd(theta)+sind(angle + 120)*sind(theta));
    V3 = Vb*(cosd(angle + 240)*cosd(theta)+sind(angle + 240)*sind(theta));
    angle = change from initial heading
    theta = translation vector angle
  5. Normalize the motor speeds based on desired amount of rotation input, no motor exceeds 100%
  6. Add in desired amount of rotation based on joystick input
    SpeedA = V1 + Rot;
    SpeedB = V2 + Rot;
    SpeedC = V3 + Rot;

I added the following information to the NXT screen for debugging purposes:

V1 = motor 1 speed
V2 = motor 2 speed
V3 = motor 3 speed
MAX = max motor speed
initHead = initial robot heading
angle = difference between current heading and initial heading
theta = desired translation direction based on X and Y joystick input
Rot = amount of rotation based on right analog joystick input

The program has been fully tested and appears to be working exactly as intended.

Simon Burfield: Robotic Snake

So my idea would be to use the rota wheels to create a modular snake where each section contains 3 wheels in parallel and 3 motors  I believe the wheels will have to be angled at 45 degrees vertically for it to move forward (all motors on) however by changing motor directions and turning motors on and off, the snake would have a high degree of movement. I think having 3 sections would make for an interest model however controlling 9 motors could be fun.  All sections would be joined via a pivot and would need a high degree of freedom.  With many sections the snake could actually curl up.

About Xander

Xander Soldaat is a Software Engineer and former Infrastructure Architect. He loves building and programming robots. He recently had the opportunity to turn his robotics hobby into his profession and has started working for Robomatter, the makers of ROBOTC and Robot Virtual Words.