When you think of robot locomotion, what is the first thing that comes to mind? A biped? a wheeled mobile robot? A differential drive system? I honestly believe that there are many more interesting biologically inspired locomotion mechanisms out there that just need to be implemented.
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 anonholonomic 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
As simple as it sounds, all that one needs is two steering assemblies and one rotor assembly.
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
A full 3D model of the system can be found in the zip file attached (IGES FORMAT). A 3D PDF document is also attached.
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
As can be seen in the previous step there are two steering assemblies.
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
The flywheel is designed to be a heavy disk with high inertial with the purpose of providing momentum to proper the ShakerBot. The flywheel is chosen to be a 27 cm diameter and 8mm thick steel disk with hollow sections, this gives a weight of 2kg.
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 motors used are high power DC motors. To drive those motors a custom circuit driver was made using the Dual Hbridge L298 IC (each motor requires a driver board). The dual Hbridge on each circuit is connected in parallel in order to provide current up to 4A.
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 system is controlled using an ARDUINO MEGA 2560 board, a custom made shield reroutes the wiring in order to simplify the wiring of the system and distribute the I/O ports to the encoders and motor controllers.
The Gerber files for the shield can be found in the zip file below.
Step 7: Encoders
The encoders give feedback of the exact position the motor. They can be used to show the user the response of the system to the inputs given.
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?
The theory behind the motion of the Snakeboard is complicated and requires plenty of math. For those interested can download the following paper by Lewis A. et al. However, in order to simplify the explanation, let us just imagine that the only control that we have is that to the angular position of the steering motors A and B and flywheel angle C.
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!
Step 9: The end
Happy snakeboarding everyone!