Software

Version 3


Screenshot of the current VisualBasic program


To improve balancing, four force-sensors were added on each foot. Illustration is done
by direct display of data next to each sensor and grafically via a circle within each footplate.
This illustration points if the forces are uniformly distributed and the center of gravity is within
the footplalte(s). If not the servo positions have to be changed regarding this force distribution.

The control of the calfs got extended by two slidebars. Like in the previous versions each servo can be
controlled directly or both servos via the new slidebars to lean forward or sidewards.


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



Version 2


Screenshot of the VisualBasic program


With the development of the new Hardwareversion (faster Master-µC, Slave-µC,
Torque-Feedback) the VB Software got extended with a new transfer protocol and
additional visualisations. The TFB-Data is displayed as a bar under each slidebar.

With the Torque-Feedback a balancing system, in combination with the accelerometers,
and a collision detection will be realised. Therefor the servo positions in the walking
algorithms will get regulated to a minimum of torque in each servo during walking on
a flat surface. This algorithms get stored and will be used as base-algorithms, for reference.
During a movement, if the TFB values differ too much from this base-algorithm something is
wrong. Depending on wich servo has to deliver more power than usual, it is possible to conclude
wether there is an obstacle or uneven terrain (balancing). For example in most cases wrong
balancing causes higher TFB values in the calfs and hitting an obstacle frontally causes
higher values in the hip. So it will be possible for the robot to react on his environment.


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Version 1


Screenshot of the VisualBasic program


For now the control of the robot is done by a VisualBasic program. With the slidebars
the position of each servo can be set. These positions/ values can be stored in a
BiP-file and you are able to "replay" them. Refering to this stepwise developed moving
algorithms the program should be able to improve these with the feedback of the
accelerometers. The movements developed for now are just replayed as they were recorded.
(see videos).

The program for the microcontroller is written in AVR-assembler. The controller runs at
8MHz. The PWM-signal for controlling the servos is generated with Timer1. Valid values
for the servo positions are 40h-f1h (64-241) that get transfered from the PC via the
serial interface (the servos do have 180° freedom). With Timer0 a stepwise approximation
from the old to the new servo value is realised => less servo positions have to be
transfered. The controller is very busy by driving the servos continuously, therefor the
data from the accelerometers is read via 2 analog inputs of the controller (10 bit ADC
with 8 channel multiplexer). For this conversion there are no timers needed and the
interrupt of the ADC has a lower priority than the timers => the servos are still
continuously driven. At the output of the accelerometer there is a voltage about 2.5V
+/-300mV (+/-1g). These voltages get converted to values between 512 +/-61 and get
modified to transfer only values about 100 +/-61 (1 byte) to the VB program.


Serial data transfer: The PC and the microcontroller communicate via the serial
interface at 38400 baud. This is the fastest baud rate with a minimum error of 0.2% to
the target fransfer rate at 8MHz (see datasheet of AT90S8535). The servo data is
transfered in a (asynchronous) response procedure (handshake) in order not to overun
the target system. The control bytes were defined not to be in the range of valid servo
data (initially for better error detection, but there is none). If a data byte gets lost
there is no response and the procedure is blocked till the next timer interrupt of the
VB-program => 15h to µC for new transmission...


control byte description
15h / 21 PC: declaration, new servo data
µC: response on declaration
16h / 22 PC: get x-accelerometer value
µC: ready for next servo data
17h / 23 PC: get x-accelerometer value
µC: end of transfer