PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Asuro] Anfängerfrage zur Odometrie



g3ler
22.02.2006, 12:29
Hallo,

bin neu hier im Forum :-)
Als absoluter Anfänger in Sachen Roboter würe ich mir gerne den Asuro zum experimentieren kaufen, da es so ziehmlich der günstigste Einstieg ist. Außerdem würde ich damit gerne meine (nur rudimentär vorhandenen) c-Kenntnisse verbessern ;-)

Ich habe mir mal die Anleitung vom Asuro gezogen und festgestellt, dass die Funktion zur Auslesung der Odometrie-Sensoren nur den Helligkeitswert direkt ausgibt. Ändert sich der Wert je nach Radfläche automatisch, oder muss man die Funktion immer wieder aufrufen (Was ja den mega8 dann völlig ausbremsen würde, oder?). Wie zählt man die Helligkeitsübergänge? Mit einer If-Funktion in Verbindung mit einem (experimentell ermittelten) Schwellenwert? Oder per Interrupt, was für mich als Anfänger wahrscheinlich noch unverständlich ist...

Noch was: lohnt es sich, das Buch "mehr spass mit Asuro Band 1" zu kaufen? Oder ist das nur eine etwas erweiterte Dokumentation?

mfg,

g3ler

MSSputnik
23.02.2006, 07:46
Hallo,

Zu dem Buch kann ich leider nichts sagen.

Zu deiner Frage mit der Odometrie:
1. Ja, man bekommt immer nur Helligkeitswerte.
2. Die Funktion mußt du immer wieder aufrufen. Da passiert nix automatisch d.h. der Counter muß in Software implementiert werden.
ein Programm sieht pinzipiell so aus:


Lese Odometrie Data
ist Helligheit > schwellwert und letzter gemessener Wert < schwellwert dann counter++; // übergang von Dunkel nach Hell
ist Helligheit < schwellwert und letzter gemessener Wert > schwellwert dann counter++; // übergang von Hell nach Dunkel

Die ganze Funktion ist ziemlich zeitkritisch und sollte wirklich in eine Interrupt Routine verpackt werden oder aber du mußt sicherstellen, das du nie einen Übergang verpasst.

Es gibt auf sourceforge eine erweiteret Asuro Library in der die Odometrie in einer Interrupt Routine verpackt ist. http://sourceforge.net/projects/asuro

Martin

g3ler
23.02.2006, 09:22
OK,

danke :-)


Also ein grundsätzlicher Denkfehler von mir ](*,) : Der AVR macht NIX austomatisch, sondern immer nur genau das, was man ihm sagt (hoffentlich :-k )
Ich habe mir mal die Einträge im RN-Wissen zu den Interrupts und die modifizierte Asuro-Lib angesehen. Warum die Lösung mit den Interrupts besser ist, habe ich nun verstanden, wie das genau funktioniert, eher nicht. Aber dafür gibts ja das AVR-GCC Tutorial :-) Und dank der Lib kann ich ja auch erst mal die Funktion einfach nutzen. Wenn ich dann mehr von der Materie verstehe, wende ich mich dem WIE zu.

mfg,

g3ler

PicNick
23.02.2006, 09:37
Der AVR macht NIX austomatisch, sondern immer nur genau das, was man ihm sagt (hoffentlich )
Sag nicht "hoffentlich", das ist etwas, was man eher befürchten muß :mrgreen: