How the Direction-master works!

This gearing represents a simple solution for the problem of synchronisation of a two motor-driven robot. It permits even a blind navigation without having to read the rotations of each wheel. How does this work?
The wheel-rotations are transported to the differential-gearing from the right side reversed, from the left side double reversed e.a. the same direction as the left wheel itself. This forces the differential-gearing to turn at a certain speed, which is exactly half the difference between the left and the right wheels' speed.

So you'll only have to add a simple angle-sensor -which we made using a 50k potentiometer- to the differential-gearing. Program your robot in order to adjust the resistance of the potentiometer to a certain value. The position of the differential-gearing and consequently of the potentiometer may  be set by changing either the speed, either the direction of both motors individually. A potentiometer normally has a 270 degrees-range which does well the job, if the potentiometer-axis is geared large enough.

For the second version of the direction-master, we added a differential gear to produce the sum of the rotation-speed of the right and the left wheel. This gives us the opportunity to read the travelled distance.
While changing the direction, the program forces the wheels to turn in opposite directions, which makes the sum differential-gearing to stop turning.

The CAD-drawings of the Direction-master (II) show the gearing to divide the speed of both the w(d) and the w(a). This allows specially  the angle-sensor to read values over a robot's whole turn. Concerning the use of the optical rotation sensor for the reading of the sum differential-gearing, as shown in the drawings, it could be better to multiply the w(a) speed by the means of a gearing rather than to divide it. The actual design gives only an accuracy of 1 impulse = +/- 4 cm.

Of course this robot will deviate from its course. As well known, it's difficult to reduce or compensate these odometry errors. Real world is not ideal world! The main problem is the internal reference which is constantly operated. The robot thinks it is somewhere and really it is somewhere else. The odometry errors may cause simple or complex course deviation, they may even compensate each other and appear only if the robot turns in the opposite direction. The origins of odometry errors may be system-inherent or non-systemic.

System-inherent errors may be caused for example by:

Non-systemic errors may have there origin in:

The direction-master will be able to compensate transmission-friction errors, because differences in friction between the right and the left drive will make the differential gearing turn and so they will be mesurable by the angle-sensor. Unfortunately, unequal wheel diameters will not be recognized by the direction-master. The robot will turn in a more or less larger circle, without changing of the angle-sensor's position. Nevertheless there exists a solution for this problem. The potentiometer-angle-sensor has to be exchanged with a sensitive rotation-sensor, like the original Lego-part. Then by software-means, the RCX has to maintain the differential-gear w(d) at a certain pre-defined speed depending on the difference of the wheel-diameters. This motion-compensation is not possible to be done with a potentiometer, because after some turns it reaches the dead-end.

The Thompsons from Hergé's famous Tintin appear to turn around in the desert and find their own gas can.

Non-systemic errors are rather dfficult to be controlled in any way, without loosing orientation. One might equip the robot with bumpers, ultrasonic sensors and other obstacle-avoidance sensors and program the robot accordingly. Here the limits of odometry methods appear clearly.

Wheel-slippage could be controlled by avoiding overacceleration.
It could be helpful to introduce special motion controlling wheels called encoder wheels or even encoder trailor which are different from the traction wheels. These wheels are less likely to slip.

The direction-master presents a problem of the idle wheel. This auxiliary wheel disturbs correct alignement of the robot after turning, so that it will start swinging slightly. A solution could be a construction of the robot where the idle wheel has to support less weight.

As anyone can see, these odometry error controlling represent a rather interesting domain of robot-design.


For specialists we propose the challenge to design an out-door variant of the direction-master that will be able to refer to the sun. A light-sensor-equipped robot would do the job. After initial calibration, the robot should travel a certain distance in a given direction, then search the direction of the sun and compute the correct South-direction by using the robots internal watch, then return to travel in the given direction by operating an internal south-adjusting.

Pointing the number 12 of an analog watch in direction of the sun will give the South-direction as half the angle between 12 o'clock and the actual position of the hour hand.

Use the setwatch(hours,minutes) command to set the internal clock. If you tell the RCX to store the time in a variable by instructing setvar(VarNumber,Watch,0) or setvar(VarNumber,14,0), it will store the time in minutes.