c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Achim Pankalla
Datum: So, 06.05.2007 18:53:09
In-reply-to:
<38A4BFD9-CA32-436A-9A1E-B4E6E0652A5D@xxxxxxxxxxxxxxx>
References:
<BCF016D5ED5AC34FBB655D109519ABCF083EBE@xxxxxxxxxxxxxxxxxxxx> <45ED3B46.4030400@xxxxxx> <45EF385C.3080609@xxxxxx> <A2ED0A68-A8F1-438A-B1E3-18033ED489E3@xxxxxxxxxxxxxxx> <45F135B9.5030203@xxxxxx> <45F13A91.6090904@xxxxxxxx> <D053B7F5-6BDD-4052-B45F-28FCF0EF45F8@xxxxxxxxxxxxxxx> <45F2B74F.8090706@xxxxxx> <38A4BFD9-CA32-436A-9A1E-B4E6E0652A5D@xxxxxxxxxxxxxxx>
hallo,
weil 60kb überschritten, die docu als extra-patch.
gruss
a. pankalla
### Eclipse Workspace Patch 1.0
#P ct-Bot
Index: Documentation/eeprom-simulation.html
===================================================================
RCS file: Documentation/eeprom-simulation.html
diff -N Documentation/eeprom-simulation.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Documentation/eeprom-simulation.html 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,146 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
+ <TITLE></TITLE>
+ <META NAME="GENERATOR" CONTENT="OpenOffice.org 2.2 (Win32)">
+ <META NAME="AUTHOR" CONTENT="Achim Pankalla">
+ <META NAME="CREATED" CONTENT="20060528;19455600">
+ <META NAME="CHANGEDBY" CONTENT="Achim Pankalla">
+ <META NAME="CHANGED" CONTENT="20070505;21065990">
+ <STYLE TYPE="text/css">
+ <!--
+ @page { size: 21cm 29.7cm; margin: 2cm }
+ P { margin-bottom: 0.21cm }
+ -->
+ </STYLE>
+</HEAD>
+<BODY LANG="de-DE" DIR="LTR">
+<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><B>EEPROM Simulation für
+PC</B></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT SIZE=3><B>Author: </B></FONT>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT SIZE=3>Achim Pankalla
+(achim.pankalla@xxxxxx)</FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><B>Beschreibung:</B></P>
+<P ALIGN=LEFT STYLE="margin-bottom: 0cm; font-style: normal">Die
+EEPROM Simulation für den PC stellt das EEPROM des <I>Atmel
+MEGA32 Prozessor</I> auch dem Simulierten ct-bot zur Verfügung.
+Der Zugriff auf dieses EEPROM erfolgt über gleichnamige
+Funktionen, wie sie auch der avr-gcc besitzt und auch die
+Variablendefinition erfolgt über die gleichen Konstrukte. Eine
+Unterscheidung über #ifdef's ist also nicht notwendig.<BR>Durch
+diese EEPROM-Simulation, ist der Simulator dem realen Bot ein schritt
+näher gekommen und Programme mit EEPROM-Zugriffe können mit
+der Simulation getestet werden.</P>
+<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm; font-style: normal"><B>Implementierung:</B></P>
+<P STYLE="margin-bottom: 0cm">Alle Funktionen und Einstellungen der
+EEPROM Simulation findet Sie in den Dateien <I>pc/eeprom-emu_pc.c</I>
+und <I>include/eeprom-emu.h</I>. Das EEPROM selbst wird durch eine
+Binäre Datei (genau 1K bzw. 2K gross) repräsentiert (und
+kann so mit einen HexEditor bearbeitet werden), deren Pfad in der
+C-Datei festgelegt wird. Standard Pfad ist das Heimatverzeichnis des
+Ct-Sim. Natürlich können Sie das jederzeit ändern,
+dies geht über die Konstante <FONT COLOR="#000000"><FONT FACE="Courier New, monospace"><FONT SIZE=2>EEPROM_FILENAME.
+</FONT></FONT></FONT><FONT COLOR="#000000"><FONT FACE="Times New Roman, serif">B</FONT></FONT><FONT FACE="Times New Roman, serif">itte
+beachten Sie aber das Verdoppeln des Backslash im Verzeichnispfad.
+Der Name </FONT><FONT FACE="Times New Roman, serif"><I>eeprom.bin</I></FONT><FONT FACE="Times New Roman, serif">
+sollte dabei belassen werden.</FONT><BR>Die Datei wird automatisch
+neu angelegt, wenn sie noch nicht existiert. Dann besteht der Inhalt
+nur aus 0xFF, wie es auch beim unintialisierten EEPROM des Atmel der
+Fall ist.<BR>Damit die EEPROM-Funktionen des PC korrekt auf die Datei
+zugreifen können und nur ein Adressraum von 0 bis 1023(2047)
+entsteht, wie es auch beim avr-gcc verwalteten ist, gibt es die
+externe Variable „_eeprom_start__“. Diese enthält
+die Startadresse der ersten Variable im Segment .eeprom und dieser
+Wert wird dann von der übergebenen Adresse subtrahiert. Damit es
+diese Variable gibt, müssen Sie das Linkerscript
+„linker_script.lk“ an den Linker übergeben. Dies
+machen Sie mit den Parameter <I>-T</I> der Linkers. Tragen sie in
+Eclipse dies unter Project->Properties->C/C++
+Build->Linker->Miscellaneous->Linker flags „-T
+linker_script.lk“ ein. Die Datei muss dann natürlich im
+Debug-W32/Linux Verzeichnis vorhanden sein.<BR>Wie auch beim MCU
+Projekt wird nun auch beim Erstellen eines ct-sim bot die Datei
+ct-bot.eep erstellt, die die Initialisierungswerte der EEPROM
+Variablen enthält. Dafür muss unter
+Project->Properties->C/C++ Build->Build Steps->Post Build
+steps der Befehl eingetragen <I>objcopy -j .eeprom
+--change-section-lma .eeprom=0 -O ihex ct-Bot.exe ct-Bot.eep</I>
+sein. Dies müssen Sie natürlich nur in der Konfiguration
+DEBUG-W32/Linux machen.</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm; font-style: normal"><FONT COLOR="#ff0000"><FONT SIZE=4 STYLE="font-size: 15pt"><B>Achtung!!</B></FONT></FONT><BR>Beachten
+Sie die Zeigerarithmetik von C. Alle eeprom-Funktionen erwarten, wie
+beim avr-Compiler Pointer auf uint8 oder uint16 als Adressparameter.
+Damit auch alles sicher klappt sollten bei berechneten Adressen wie
+folgt vorgegangen werden.<BR>z.B. eeprom_read_word((uint16 *)
+(SCT_LEFT + i*2))</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm; font-style: normal"><B>eeprom_map.h</B></P>
+<P STYLE="margin-bottom: 0cm; font-style: normal; font-weight: medium">
+Enthält Deklarationen aller erstellten EEPROM Variablen.</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm; font-style: normal"><B>Probleme der
+Implementierung</B></P>
+<P STYLE="margin-bottom: 0cm; font-style: normal; font-weight: medium">
+Im Moment erstellen gleiche Compilerversionen (zu Überprüfen
+mit –version) auch gleiche EEPROM-Sections. Es gibt aber keine
+Garantien dafür, das zukünftige Compiler Versionen nicht
+die Reihenfolge der Variablen im Code ändern. Ein Einfügen
+neuer EEPROM Variablen kann auch zu Verschiebungen der Adressen
+führen. Nach solchen Änderungen ist man nur auf der
+sicheren Seite, wenn das EEPROM initialisiert wird (sprich Sie Ihre
+alte eeprom.bin bzw. auf den Atmel das EEPROM löschen). Einmal
+erstellte Werte sind dann natürlich futsch. Wenn man den
+Einfluss von Kodeergänzungen kontrollieren will, kann man dies
+vor und nach der Änderungen mit objdump machen, mit den
+richtigen Parametern kann man sich die Adressverteilung anzeigen
+lassen.<BR>Die Implementierung des EEPROM auf den PC kontrolliert
+noch nicht, ob nicht 1K bzw. 2K an Daten überschritten wird. Die
+Funktionen für den Zugriff aber schon, dh im Moment muss der
+Programmierer selbst darauf achten, das seine Daten nicht mehr als
+ein Kilobyte werden. (Spätestens der avg-gcc wird dann aber
+meckern).
+</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><B>Funktionen:</B></P>
+<P STYLE="margin-bottom: 0cm"><B>Nur in eeprom-emu_pc.c sichtbare
+Funktionen</B></P>
+<P STYLE="margin-bottom: 0cm">store_parameter() - Speichern von
+Informationen im simulierten EEPROM</P>
+<P STYLE="margin-bottom: 0cm">load_parameter() - Laden von
+Informationen aus dem simulierten EEPROM</P>
+<P STYLE="margin-bottom: 0cm"><B>Zugriffsfunktionen für den PC
+(Identisch zu denen von WinAVR)</B></P>
+<P STYLE="margin-bottom: 0cm">eeprom_read_byte()</P>
+<P STYLE="margin-bottom: 0cm">eeprom_write_byte()</P>
+<P STYLE="margin-bottom: 0cm">eeprom_read_word()</P>
+<P STYLE="margin-bottom: 0cm">eeprom_write_word()</P>
+<P STYLE="margin-bottom: 0cm">eeprom_write_block()</P>
+<P STYLE="margin-bottom: 0cm">eeprom_read_block()</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT SIZE=3><B>Dateien:</B></FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT SIZE=3>eeprom-emu.h Include
+Dateinamen mit Funktionsparameter</FONT></P>
+<P STYLE="margin-bottom: 0cm"><FONT SIZE=3>eeprom-emu_pc.c Funktionen
+fuer den ct-Sim</FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm; font-style: normal"><BR>
+</P>
+</BODY>
+</HTML>
Index: Documentation/Abstandssensor-Kalibrierung.html
===================================================================
RCS file: Documentation/Abstandssensor-Kalibrierung.html
diff -N Documentation/Abstandssensor-Kalibrierung.html
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Documentation/Abstandssensor-Kalibrierung.html 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,184 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
+ <TITLE></TITLE>
+ <META NAME="GENERATOR" CONTENT="OpenOffice.org 2.1 (Win32)">
+ <META NAME="CREATED" CONTENT="20060508;19143406">
+ <META NAME="CHANGEDBY" CONTENT="Achim Pankalla">
+ <META NAME="CHANGED" CONTENT="20070401;19571565">
+ <STYLE>
+ <!--
+ @page { size: 21cm 29.7cm }
+ H2.western { font-family: "Albany", sans-serif; font-size: 14pt; font-style: italic }
+ H2.cjk { font-family: "HG Mincho Light J"; font-size: 14pt; font-style: italic }
+ H2.ctl { font-family: "Arial Unicode MS"; font-size: 14pt; font-style: italic }
+ -->
+ </STYLE>
+</HEAD>
+<BODY LANG="de-DE" DIR="LTR">
+<H2 CLASS="western">Abstandssensorkalibrierung mittels EEPROM-Tabelle</H2>
+<P STYLE="margin-bottom: 0cm">Version 0.7 (03-April-2007)<BR><BR>Peter
+Jonas (peter.jonas@xxxxxx)
+</P>
+<P STYLE="margin-bottom: 0cm">Achim Pankalla (achim.pankalla@xxxxxx)</P>
+<HR>
+<P ALIGN=CENTER><U><B>Einleitung</B></U></P>
+<P ALIGN=LEFT>Mit diesem Behaviour kann mittels einer EEPROM-Tabelle
+die Kalibrierung der Distanzsensoren durchgeführt werden. Dies
+gilt auch für den ct-bot, sowohl als realen Bot auch als für
+den im Ct-Sim. Der Vorteil dieses Verfahrens sind. <BR>1) Beruhigte
+Messwerte (Natürlich nur beim realen Bot, im Sim rauschen die
+Werte (noch) nicht.)<BR>2) Beide Sensoren liefern bei gleichen
+Distanzen identische Werte.<BR>3) Die Messwerte liegen fest, dh. Man
+kann ohne Probleme im Code bestimmte Abstände abfragen. <BR><BR><BR>
+</P>
+<P ALIGN=CENTER><U><B>Einstellungen im Quellkode</B></U></P>
+<P ALIGN=LEFT>Die Kalibrierung wird über mehrere <I>#defines</I>
+in der Datei available_behaviours<I>.h</I> und <I>sensor_correction.h</I>
+gesteuert:
+</P>
+<P ALIGN=CENTER><BR><FONT COLOR="#ff0000">#define
+<FONT SIZE=3><FONT FACE="Times New Roman, serif">BEHAVIOUR_CALIBRATE_DSENSORS</FONT></FONT></FONT></P>
+<P ALIGN=LEFT>Wenn diese Zeile aktiviert ist, geht der Roboter in den
+Kalibrierungsmodus. Diese Einstellung ist nur einmal notwendig, um
+die Kalibrierung der Sensoren durchzuführen. Im späteren
+normalen Roboterbetrieb ist diese Zeile zu deaktivieren.
+</P>
+<P ALIGN=CENTER><BR><FONT COLOR="#ff0000">#define
+<FONT FACE="Times New Roman, serif">SENSOR_TABLE_AVAILABLE</FONT></FONT><BR><BR><BR>
+</P>
+<P ALIGN=LEFT>Wenn diese Zeile aktiviert ist, wird im normalen
+Roboterbetrieb eine im EEPROM abgelegte Tabelle für die
+Linearisierung der Distanzsensoren benutzt. Wenn diese Zeile
+deaktiviert ist, wird die ursprüngliche Linearisierung der
+Sensoren über die einfache Hyperbelfunktion durchgeführt.
+</P>
+<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><FONT COLOR="#ff0000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3><B>#define</B>
+SAMPLES_PER_AVG</FONT></FONT></FONT></P>
+<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3>Anzahl
+der Messungen pro Abstand, die zur Mittelwertberechung genutzt
+werden.</FONT></FONT></FONT></P>
+<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><FONT COLOR="#ff0000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3><B>#define</B>
+<FONT FACE="Courier New, monospace">SC_STARTDIST</FONT></FONT></FONT></FONT></P>
+<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3>Abstand
+in Zentimeter, bei dem die Messreihe beginnt. Dieser Wert muss dort
+liegen, wo die Sensoren ihre hoechsten Werte liefern und dann den Bot
+noch ein kleines Stuck weiter. Acht Zentimeter hat sich als guter
+Wert erwiesen. </FONT></FONT></FONT>
+</P>
+<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><FONT COLOR="#ff0000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3><B>#define</B>
+<FONT FACE="Courier New, monospace">SC_STEPWIDTH</FONT></FONT></FONT></FONT></P>
+<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3>Abstand
+zwischen den Messpunkten. Mit der aktuellen Auswertungsfunktion wird
+dieser Wert halbiert und man erhält so die Genauigkeit der
+ermittelten Werte. Bei mir hat sich der Wert 4 als gut erwiesen. Der
+Bot kann dann auf 20mm die Werte auflösen und diese sind auch
+sehr stabil. Der Wert entspricht natürlich Zentimeter. Man
+sollte aber auf eine Gesamtdistanz von mindestens 80cm kommen.
+Notfalls den folgenden Wert erhöhen.</FONT></FONT></FONT></P>
+<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><FONT COLOR="#ff0000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3><B>#define</B>
+<FONT FACE="Courier New, monospace">SC_NO_OF_STEPS</FONT></FONT></FONT></FONT></P>
+<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=3>Dieser
+Wert legt fest, wie viele Messungen gemacht werden. Man sollte nicht
+uber eine Gesamtdistanz von ca. 80cm kommen, da die Sensoren mehr
+nicht hergeben und Werte zu dicht beieinander liegen. Der Wert gibt
+die Anzahl der Messungen ohne Startwert an, dh. Für insgesamt 16
+Messungen, muss man hier 15 eintragen. Es nur ein <U>Maximum von 29</U>
+zulässig.</FONT></FONT></FONT></P>
+<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P ALIGN=CENTER><U><B>Kalibrierung</B></U></P>
+<P ALIGN=LEFT STYLE="font-weight: medium; text-decoration: none">Eine
+wichtige Bemerkung vorweg, bei der Aufnahme der Werte müssen Sie
+natürlich sehr exakt sein. Je genauer Sie arbeiten, um so besser
+das Ergebnis. Gerade in den Werten nahe der 8cm bedeutet ein
+ungenauer Abstand auch entsprechend abweichende Werte, da hier die
+Sensorkurve sehr steil verläuft. Sorgen sie außerdem
+dafür, das der Bot immer senkrecht auf ihren Messabstand, am
+besten eine ebene Wand, schaut.</P>
+<P ALIGN=LEFT><BR>Im Kalibriermodus sieht man auf dem Display
+zunaechst ein Menue. Man wird aufgefordert, den Roboter auf eine
+bestimmte Distanz in cm zur Wand zu stellen. Wenn man das gemacht
+hat, drueckt man die Taste "2" auf der Fernbedienung. (Kann
+beim erstenmal zweimal notwendig sein.) Es wird nun aus den folgenden
+vorgegebenen Zahl von Meßwerten pro Sensor ein Mittelwert
+gebildet. Dieser Wert wird dann in den beiden Tabellen (links und
+rechts getrennt) im EEPROM abgelegt. Danach wird man aufgefordert,
+eine neue Distanz einzustellen und der Vorgang beginnt von vorn.
+<BR><BR>Nach SC_NO_OF_STEPS Messungen ist die Kalibrierung
+abgeschlossen. Die Sensorwerte fuer die SC_NO_OF_STEPS Abstaende sind
+nun im EEPROM. (Meldung in Zeile drei des Displays) Man kann aber mit
+den Tasten „1“ (zurueck) und „3“ (vor)
+nochmal zu einzelnen Werten gehen und diese nochmal wiederholen,
+solang der letzte Wert nicht schon gemessen wurde.<BR>Mit der Taste
+"0" kommt man in den normalen Roboterbetrieb zurueck und
+kann die Kalibrierung gleich testen (SENSOR_TABLE_AVAILABLE muss
+dafuer definiert sein). Dies ist auch bei nicht vollstaendiger
+Kalibrierung moeglich aber nicht sinnvoll, wenn man die
+EEPROM-Tabelle fuer die Sensoren nutzen moechte. Zu beachten ist, das
+die Normale Belegung der Zahlentasten nicht gegeben ist, da diese
+fuer Kalibrierung genutzt wurden.</P>
+<P ALIGN=LEFT>Waehrend des Kalibrierungsvorgangs, zeigt die dritte
+Zeile des Displays immer die aktuellen Messwerte an (waehrend des
+Kalibrierungsvorgangs, MWert) oder das gemittelte Ergebnis an
+(EWert). Die Anzahl der Messungen pro Entfernung legt uebrings das
+<I>#define <FONT COLOR="#000000"><FONT SIZE=2><FONT FACE="Courier New, monospace">SAMPLES_PER_AVG</FONT></FONT></FONT></I><FONT COLOR="#000000">
+<FONT FACE="Times New Roman, serif">fest, dies befindet sich in
+<I>calibrate_sensors.c.</I></FONT></FONT><BR>Wenn die Sensoren im
+Normalbetrieb Distanzen messen, die außerhalb des eingestellten
+Distanzbereiches der EEPROM-Tabelle liegen, wird der Werte aus der
+Konstanten <FONT SIZE=2><FONT FACE="Courier New, monospace"><FONT COLOR="#000000">SENS_IR_INFINITE</FONT></FONT></FONT>
+ausgegeben. <BR><BR>Im EEPROM werden fuer den Distanzbereich
+SC_NO_OF_STEPS Messwerte pro Sensor gespeichert. Da die Sensoren
+jedoch auch Werte fuer Distanzen zwischen den gemessenen Distanzen
+ausgeben, wird im laufenden Betrieb des Roboters zwischen den
+Stuetzwerten interpoliert, um fuer jeden Sensorwert einen mm-Wert
+liefern zu koennen. <BR><BR>Beim Flashen muß man aufpassen,
+dass die Tabelle im EEPROM nicht ueberschrieben wird, deshalb sollte
+man sie unmittelbar nach der Kalibrierung zunaechst sichern. Bei
+PonyProg zb. Mit der Funktion <I>Command->Read Data</I> und diese
+dann auch auf der Platte sichern. <BR>Um spaeter ein Programmupdate
+zu flashen, liest man die Programm-Hexdatei mit "Open Program
+(Flash) File ..." ein und flasht es dann mit "Write Program
+(Flash)" und dann muss man die EEPROM-Datei wieder neu
+aufspielen, da diese durch das Flashen des Programms geloescht
+werden<BR>Speichert man den EEPROM-Bereich im BIN-Format, kann diese
+Datei direkt auch fuer den ct-Sim nutzen.</P>
+<P ALIGN=CENTER><B>Nutzung der Kalibrierdaten</B></P>
+<P ALIGN=LEFT>Hat man das Define <I>SENSOR_TABLE_AVAILABLE</I> in
+ctbot.h gesetzt, so werden die Daten in der Funktion <I>sensor_abstand</I>
+in <I>sensor.c</I> genutzt, um aus den aktuellen Messwerten der
+Abstandssensoren moeglichst genaue und ruhige Abstaende zu bestimmen.
+Dafuer wird beim ct-bot nochmal die Genauigkeit der Werte durch eine
+Mittlung ueber mehrere Werte erhoeht.<BR>Beim Simulator ist die
+Nutzung der Kalibrierdaten auch moeglich. In dem man die
+EEPROM-Simulation benutzt und die Werte vom realen Bot in einer Datei
+im BIN-Format ablegt und diese ins entsprechende Verzeichnis ablegt.
+(Siehe auch Docu fuer parameter-low).</P>
+<P ALIGN=CENTER><B>Vorteile und Nachteile der Kalibrierung</B></P>
+<P ALIGN=LEFT>Vorteile <BR>- Ueber Tabellen im EEPROM liefern die
+Distanzsensoren stabile werte. <BR>- Beide Sensoren sind nun
+kalibriert und liefern deshalb die gleichen Abstandswerte für
+die gleichen Entfernung, sind aber weiter unabhängig
+voneinander! <BR><BR>Nachteile<BR>- Eingeschränkte Auflösung
+der Distanzwerte (bei mir 10mm Auflösung noch super ruhig)<BR>-
+Kleinster Kalibrierabstand ist 2cm, damit erreicht man eine Auflösung
+von 1cm (10mm). <BR>- Man muss die Anleitung lesen ;-)
+</P>
+<P ALIGN=CENTER><FONT COLOR="#ff0000"><I><U><B>ACHTUNG!</B></U></I></FONT></P>
+<P ALIGN=LEFT>Fuer die Nutzung der Kalibrierung ist es wichtig, das
+die Konstanten (DEFINEs) immer die Werte haben, die auch bei der
+Aufnahme der Daten aktuell waren. Die neue Version der
+Kalibrierfunktion (Docu-Version ab 0.5) ist nicht kompatible mit
+BIN-Dateien vorheriger Versionen.</P>
+</BODY>
+</HTML>