An improved version of Philippe Hurbain's seesaw
We try to balance a free turning wheel on a seesaw. Quite simple for humans, but for a robot, it's a real challenge. This tiny robot-challenge brings us to very exciting physics:
Planopedia: http://philohome.free.fr/seesaw/seesaw.htm . Download our slightly transformed version as a Leocad-file: seesaw.lcd
Two major factors act on the system: the moment of decision to flip coming from the sensor's redings and the flipping speed which can be influenced by the transmission ratio. In order to reduce parasite movement and provide perfect symmetry, specially identical slope-angle on each side, pay attention to the correct position of the 6 holes-wheel (6-way symmetry vs 4-way of the axis).
We added 2 transformations from the original design:
The seesaw should be well balanced.
R = D/2 = 20,75 mm (40 teeth-gear
assembled as shown) r = d/2 = 3,75 mm m : mass of the wheel g = 9,81 gravitation constant acceleration of the translation movement: a = m / (m + J / r2) * g * sin(alpha) J : inertial moment of a cylinder = m/2 * R2 by simplifying we get for the used Lego piece approximatively: a= +/- 8/13 * sin(alpha) {up or down} sin(alpha)=1 cm / 12,75 cm { length of a 1 x 16 Lego-brick : 12,75 cm; the seesaw slopes 1cm } so: a= +/- 0,0483 m/sec2 (During the flipping time, a must be expressed as: a= - 0,0483 * cos(theta), where theta is the instant angle of the wheel linked to the motor by the rubber. This produces a curved reverse of the acceleration, but for these calculations can be ignored.) |
|
Friction of the system causes the
amplitude to diminish at every turn. This has to be
compensated by lengthening the descending slope by L. We
have:
|
We wrote a somehow tricky program. The difficulty is to force the RCX to calculate a square-root with only integer variables. The whole movement is divided into 3 phases, each beginning with a pass of the wheel in front of the light-sensor:
A three times version works as well, but in this case the period is measured alternating the side.
{ SEE-SAW robot} {...tasks...} #define(calculate,1) {....subroutines...} #define(SQRT,0) {...variables...} #define(threshold,0) #define(ActPeriod_length,1) #define(WaitTime,2) #define(counter,3) #define(value,4) #define(argument,5) #define(res,6) #define(h1,7) #define(result,8) {...constants...} #define(MotorOnTime,50) #define(precision,6) #define(little_bit,2) #define(StdPeriod_length,40) #define(SQRStdPer,1600) selectprgm(slot_2) A NQC-version will follow soon. |
This is a nice example of a robot that may not be realized by what Seymour Papert calls "bricolage", but by deduction.