For example, I think snakes use a very cool locomotion mechanism. They can move forward, sideways, turn and climb up a pipe with no legs or wheels! Now imagine if the snake locomotion is to be implemented on a wheeled robot, you will have something similar to the Roller racers from the 80's (remember those?).
In the late 80's snakeboards emerged, they are a good example of a nonholonomic system that uses the change in the geometry in order to propel in different directions. More information on the mechanism and operation of a snakeboard can be found on wikipedia and in this cool Youtube link.
As part of a research done at the American University of Beirut we decided to build a robot that is inspired by the motion of the Snakeboard. This is how ShakerBot was born. This robot will be used in the future to study different locomotion algorithms.
The following video shows the ShakerBot moving while being teleoperated wirelessly. The original 3D model of the ShakerBot is displayed as well.
In order to read about the theory behind the locomotion of the ShakerBot move to step 8. However if you want to see how the ShakerBot was designed and made move along in the steps.
The system is easy to build, follow the steps and you may get the weirdest moving robot ever!
For more info about our ShakerBot checkout this link.
Step 1: What you need
The choice of actuators ranges from DC motors coupled with encoders (like in our case) to simple RC servo motors. Full rotation might be needed for advanced gait generation, but simple bounded rotation can be achieved with simple RC servo motors.
The majority of the parts is custom made. The list of raw materials goes as follows:
Chassis: 50X60cm 12mm Plexiglass
Flywheel: 8mm thick steel disk, 27 cm diameter.
steel 8cm diameter rod, 15cm in length
steel 2cm diameter rod, 15cm in length
In addition, we bought many non custom parts:
1X Drill rod (12 inch in length) from Mcmaster (part # 4345T41)
4XFriction wheels from Mcmaster (part # 2471K26)
2X Creeper caster wheels(Mcmaster part # 2475T6) (Any caster wheel works)
Arduino Mega (Uno if servos were used)
2X DC motors (24V Planetary Gbox 100:1)
2X optical encoders AMT103
2X 10mmX26mm bearings(SKF part #6000-2RSH)
(24 X) 8mm washers
(28 X) 3mm washers
(8 X) 3*25mm bolt
(4 X) 8*70mm bolt
(8 X) 8*40mm bolt
(12 X) 3*10mm bolt
(12 X) 3mm nut
(12 X) 8mm nut
(4X) 5*5mm Allen screw
(2X) 6*6mm Allen screw
11.1V 2200mAh Lipo Batteries but any regular Ni-Cd battery (heavy) will do the job.
Wireless communication (bluetooth) was used for teleoperating the robot. Low cost Bluetooth adapter ARF32 or MikroElektronika Bluetooth Stick can do the job.
Step 2: Chassis and assembly
As mentioned the chassis is made with a laser cut 12mm thick plexiglass board. The board can be of any shape as long as it is symmetric and does not affect the balance of the system.
The different parts and sub-assemblies are shown next.
Step 3: The steering mechanisms assembly
They consist of a motor that rotates an axle connected to a couple of friction wheels.
8mm bolts attach this sub-assembly to the system.
The shaft coupler, the most important part in this subassembly, is shown below. It connects the 1/2 inch drill rod to the motor.
Step 4: The flywheel assembly
Forcing the motor to hold 2kg of steel in the air can actually cause high levels of stress on the motor shaft. For this reason, two 10mm bearings are used to hold the flywheel in place using a special made shaft that also serves as the coupling between the motor and the flywheel.
The flywheel has a threaded hole that connects it to the motor shaft, a locking nut makes sure the connection is rigid.
Step 5: Motor driver
The circuit schematic, and PCB as well as the Gerber files for the board can be found in the zip file below.
Step 6: Main controller and Arduino Shield
The Gerber files for the shield can be found in the zip file below.
Step 7: Encoders
The motors used have a long shaft from the back, making it easy to connect the AMT103 encoders that we used.
Step 8: So what is the theory behind the motion?
Typical inputs are sinusoidal and are given by the following simple equations:
where a and c are constants.
In order to achieve a forward gait: a needs to be equal to c.
For a Backward gait: a=-c
For a Rotating gait: a=c/2
and for a Parallel Park: c=1.5*a.
The following video shows a numerical simulation performed on Mathematica to display a forward and a rotating gait motion.
A simple Arduino code reads from wired serial(or bluetooth) and changes the variables correspondingly.
It is thus very easy to control the system using just Hyperterminal software or any bluetooth enabled device!