PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ACS Entfernung messen



schmiereck
28.12.2009, 21:15
Hallo,

hat jemand eine Idee, wie ich mit die Enfernung auslesen kann die die ACS Messung mit den Infrarot-Dioden liefert?

Ich finde nur die Ergebnisse mit obstacle_left und obstacle_right.
Meine Idee war, das im acs_event_counter etwas brauchbares steht, das scheint aber nicht so zu sein.

Ich würde gerne die RP6RobotBaseLib weiterhin verwenden, aber wenn es nicht geht kann ich diese auch ändern oder ersetzen.

Gruß,
Thomas Schmiereck

radbruch
28.12.2009, 21:48
Hallo

Man kann die Leuchtstärke der ACS-LEDs beeinflußen:

setACSPwrLow()
setACSPwrMed()
oder
setACSPwrHigh()

schalten verschiedene Vorwiderstände vor die LEDS. Je weiter entfernt dabei das Hinderniss ist, umso stärker müssen die LEDs leuchten um ein empfangbares Echo zu erzeugen. Es gibt dann noch

setACSPwrOff()
enableACS()
und
disableACS()

zur Steuerung des ACS. Das habe ich übrigends in RP6RobotBaseLib.c gefunden...

Gruß

mic

schmiereck
28.12.2009, 22:28
Hallo,

der große RP6 Bastler hat mich gefunden ;-), wobei "Bastler" etwas bescheiden ist für Deine großartigen Projekte (Duzt Ihr euch eigentlich im RN?), na, auf jeden Fall - Respekt!

So, zu dem Ding an sich, dass wäre eine Idee, die Leuchstärke "durchzuprobieren" und damit eine Entfernung zu ermitteln. Aber das benötigt natürlich Zeit...

Meine Idee war, das es irgendwie möglich ist, die Anzahl der empfangenen Impole pro Zeit zu messen und daraus auf die Entfernung zu schließen. Manche Teile der Empfangsroutine scheinen auch auf die Art zu funktionieren, aber selbst wenn ich den Debug Moduls mit DEBUG_MEASURE_DUTY_CYCLE anschalte steht in cycle_h_l nichts sinnvolles, obwohl da irgendwas gezählt zu werden scheint.

Aber ich muss zugeben das ich die "ISR (TIMER0_COMP_vect)" nicht richtig verstehe, die ist einfach ein wenig zu "hacki".

In der "void task_ACS(void)" wird ebenfalls so einiges ausgewertet, aber da geht es auch so richtig ab - ich verstehe es nicht.

Noch eine Idee? Sonst probiere ich das mal mit den verschiedenen Vorwiderständen aus.

Gruß,
smk

radbruch
29.12.2009, 11:11
Hallo

Impuls/Zeit wird nichts bringen, hier eine kleine Einführung ins Thema von SlyD:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=298564#298564

Eine kleine Diskussion über die Empfindlichkeit des ACS (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=32881) führte zu diesem Update der Lib:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=304868#304868

Gruß

mic

schmiereck
29.12.2009, 14:53
Hallo radbruch,

yup, dankeschön, sieht so aus, als ob das nicht wohl funktionieren wird.

Hat sich aber weitgehend erledigt, mein "Wandverfolger" funktioniert bereits auch so.
Ich lasse den RP6 jetzt:
1. immer in einem kleinen Bogen zur Wand fahren bis der entsprechende Sensor sie erkennt,
2. fahre dann in einem kleinen Bogen weg bis er sie verliert (plus etwas Offset um der Wand nicht zu nahe zu kommen)
3. fahre dann wieder wie in 1.

Sieht zwar ein wenig "lustig" aus, wie er die Wand "entlangwackelt" aber funktioniert im Grunde recht gut. Die Optimierung der Parameter für konkave und konvexe 90 Grad Winkel hat zwar Zeit gekostet aber jetzt tut es. Durch das Bogenfahren habe ich so eine Art "adaptive Messung" ohne den genauen Abstand messen zu müssen.

Von den Verhaltensweisen bin ich also so weit, jetzt geht es an den "MetaController" aus dem anderen Thread.

Vielen Dank für die Hilfe und Grüße,
smk

suicide
29.12.2009, 15:36
Hi,

hast du den Ansporn, die Wandverfolgung nur mit den RP6 Sensoren zu erledigen oder kämen auch weitere Sensoren in Frage? Sonst würd ich mal die Sharp GP12D in den Raum (oder an die Wand) werfen.

schmiereck
29.12.2009, 15:58
Hallo,

nö, für spätere Verbesserungen bin ich unendlich offen ;-)

Jetzt geht es mir erst einmal darum dem RP6 einige Verhaltensweisen beizubringen, da tun es die eingebauten Sensoren erst einmal.

Das Teil ist heiß, ich habe schon kurz gegoogelt.

Wenn meine Idee von dem übergeordneten Controller funktioniert dann komme ich darauf zurück.

Grüße,
smk