Zum Inhalt
c't

c't Projekte - c't-Bot und c't-Sim - Mailinglisten

c't-Bot und c't-Sim


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

Re: [ct-bot] CMUcam3 Implementierung

Absender: Timo Sandmann
Datum: Mo, 15.09.2008 21:16:53
In-reply-to: <48CE9D77.8090201@xxxxxxx>
References: <000001c91695$89998e50$0200a8c0@mexpnew> <48CE9D77.8090201@xxxxxxx>


Hi,

Am 15.09.2008 um 19:37 schrieb Harald W. Leschner:
Jetzt habe ich die halb-fertigen Routinen auf den echten Bot übertragen.
Die Kamera wird nun über die Hardware UART des ct-Bots mit ATmega644
betrieben, habe dafür alle Logs und andere Kommunikationsmodule erstmal
deaktiviert, damit die Schnittstelle frei ist. Idee war ja, dem Bot
dafür später ein 2. Board zu spendieren, aber erstmal will ich die
Kamera so "rudimentär" am Bot betreiben, also geht es hier nur um die
simpelste Anbindung, trotzdem gibt es ein paar Problemchen...

also der ATmega644P hat 2 UARTs, vielleicht ist das auch eine Alternative. Müsste man aber evtl. ein oder zwei Pins umlegen.

Folgendes passiert: Die Kamera wird korrekt initialisiert und man kann
mittels eines eigenen Screens und ein paar Menupunkten (0=IDLE,
1=TRACKING ...) die Funktion überwachen. Die empfangenen Daten werden
dann in einem Kontainer gespeichert, angezeigt und stimmen auch so.
Insgesamt funktioniert es ganz gut, manchmal stürzt der Bot aber auch ab...

Nun zum eigentlichen Problem: Lässt man die Kamera im IDLE-Mode, fährt
der Bot normal. Aktiviert man die Trackingfunktion, scheint die
Geschwindigkeitsregelung völlig rumzuspinnen und der Bot dreht total ab,
ruckelt und stottert. Stoppt man das Tracking, ist es manchmal wieder
ok, manchmal sind dann aber auch nach einem Reset oder An/Aus die PWM
Werte völlig zerschossen, man muss den Bot neu programmieren.

Kann es sein, dass dein Code irgendwo an falsche Speicheradressen schreibt? Pufferüberlauf, falsche Pointer oder so was? Oder belegst du mehr RAM als der Prozessor hat?

Ich nehme an, die UART des Bots arbeitet absolut zuverlässig, denn bei
Übertragungen an den Sim fährt er ja auch normal. Kann sich einer von
Euch mal den Code angucken und mir sagen, ob vielleicht ein Fehler drin ist, den der Compiler nicht erkennt, oder überhaupt vielleicht Ideen für
das geschilderte Verhalten geben?

Kann ich mal machen, das wird aber etwas dauern, bis ich dazu komme.

Grüße,
Timo