- LiFePO4 Speicher Test         
Seite 17 von 19 ErsteErste ... 71516171819 LetzteLetzte
Ergebnis 161 bis 170 von 188

Thema: Asuro: Umbau der IR-Schnittstelle zur Hinderniserkennung

  1. #161
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Anzeige

    Praxistest und DIY Projekte
    Du muss auch nicht vergessen variabelen beim anfang mit neutrale werten zu initialisieren. Beim anschalten von Asuro kan in die speicherplatzen jeder art von wert stehen. Speicherplatzen sind nicht immer leer, oder 0. Gibb den werten selbst ein dammit du darauf verlassen kannst das die if-regeln nicht mit kwatsch werten anfangen.

    Also:
    Code:
     ir = 0; 
       ir1 = 0; 
       ir2 = 0; 
       ir3 = 0; 
       ir4 = 0;

  2. #162
    Neuer Benutzer Öfters hier
    Registriert seit
    06.01.2010
    Alter
    36
    Beiträge
    18
    jop, hatte ich jetzt schon gemacht
    hab den code jetzt etwas abgewandelt. auffällig ist, dass er mit sehr dunklen hindernissen, wenn er sie seitlich anfährt, oftmals probleme hat, diese rechtzeitig zu erkennen, oftwohl ich teilweise impulsbreiten wie 0xD0 verwende

  3. #163
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Naja, wenn ein Hindernis kein Licht zurückwirft ( also schwarz ist ), kann es auch nicht detektiert werden.
    Wobei allerdings viele für uns "sichtbar" schwarze Objekte das IR-Licht immer noch reflektieren.

  4. #164
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    @robo.fr, hallo Sir William,

    Zitat Zitat von robo.fr
    ... Wobei allerdings viele für uns "sichtbar" schwarze Objekte das IR-Licht immer noch reflektieren ...
    Nichts für ungut, robo.fr wenn ich meinen Senf dazugebe: Dein Einwand gilt natürlich auch bei weißen Flächen - die auf IR bezogen ziemlich "schwarz" - also mit geringer Reflexion - sein können (und beides auch umgekehrt). Das hatte ich bei meinem WALL R bei einigen Testfahrten deutlich gemerkt. Und schliesslich hatte ich weisse Wandfarbe mit viel IR-Rückstrahlung von weisser Wandfarbe mit wenig IR-Rückstrahlung einfach experimentell trennen können. Sozusagen der asuro mit Sternthalers CIRpendem IR-Belichtungsmesser *ggg*.
    Ciao sagt der JoeamBerg

  5. #165
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Halllo oberallgeier,
    Du hast natürlich recht und ich war etwas unpräzisse mit meinen Ausführungen

    Vor kurzem ist mir ein neuer Algorithmus zur Auswertung eingefallen, der etwas schneller und weniger störanfällig sein könnte:

    Man macht eine Schleife und beobachtet den IR-Signalpin. In der Schleife wird die Lichtstärke langsam erhöht. Bei jedem Mal, wenn der Signalpin aktiv ist, wird ein Zähler erhöht. Wenn ein bestimmter Zählerstand erreicht ist ( z.B. 10 ), wird die Schleife verlassen. Die Anzahl der Schleifendurchläufe ergbt den Messwert.

    Vorteil des ganzen: Einzelne Störimpulse führen nicht zu einer Fehlmessung. Um so heller die LED ist, desto wahrscheinlicher, dass der Pin auf High ist.

    Was meint Ihr dazu?

  6. #166
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    Zitat Zitat von robo.fr
    ... war etwas unpräzisse ...
    Bei meinem Einspruch wars mir recht unbehaglich, so etwas klingt manchmal nach I-Tüpfel-Reiterei. Das wollte ich Dir gegenüber keinesfalls - aber der Sir sollte eben auch die andere Seite kennen(lernen).

    Zitat Zitat von robo.fr
    ... neuer Algorithmus zur Auswertung eingefallen, der etwas schneller und weniger störanfällig sein könnte ...
    Das klingt mir etwas nach der CIRperei von Sternthaler. Wo ist der Unterschied zu Deinem Ansatz? Im Link ist ein zip vom Sternthaler. Mit dem dort enthaltenen hex kannst Du mit dem asuro die Funktion des Algorithmus prima testen. (Dazu/davor bitte in der test.c den Abschnitt Inhalt lesen).

    Vorausgesetzt wird, dass die Empfindlichkeit des 5110 oberhalb 50% duty cycle sich sinngemäss verhält wie unterhalb. Das habe ich durch Messungen verifiziert. Gecirpt wird also mit PWM {0 .. 127}. Ein Messvorgang startet die LED mit 64. Danach wird mit einer Bitschieberei iteriert, sodass man nach sieben Messungen an der Messgrenze des Sensors angelangt ist. Dieser Wert wird sechs bis zehn mal geholt - sprich: sechs bis zehn Iterationen - und arithmetisch gemittelt. Nach einem solchen Durchgang schalte ich zum nächsten Sensor weiter. Das Timing beim Weiterschalten des PWM-Wertes ist dabei so gewählt, dass der 5110 mehr als die im Datenblatt vorgeschriebenen 6 Pulse in einem Burst bekommt, sodass sein Antwortsignal einigermassen glaubhaft ist. Der WALL R zeigt, dass die Sensorik auch bei 1,5 m/s und den drei sequentiell abzuarbeitenden Sensoren damit im Bereich von knapp über 1 m Distanz ausreichend (zeitlich und distanzmässig) auflösen kann, um den Überblick nicht zu verlieren (siehe Video). Verwendet wurde stets der m168 mit 20 MHz.

    Die Sternthaler´sche Cirperei habe ich an meinem Dottie, am MiniD0 (vorgesehen, noch nicht eingebaut) und an meinem WALL R. Immer habe ich drei komplette Sensoren mit IRLED SFH415 (Ausnahme WALL R: SMD SFH4600) und IREmpfänger SFH5110-36, die umlaufend gecirpt werden. Bei den Dosen sind die Sensoren in Blindenstockmanier angeordnet, sodass ich sowohl Hindernisse als auch Absturzstellen detektieren kann. Ein Sharp GP2D120 dient zur genaueren Kontrolle - der kontrolliert immer in die Richtung und dann, wo und wann ein Sensor glaubt, etwas erkannt zu haben.

    Aber jetzt fehlt mir, wie erwähnt, der Durchblick, wo und wie sich Dein Ansatz vom CIRpen unterscheidet.
    Ciao sagt der JoeamBerg

  7. #167
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Sehr beeindruckend, Dein WALL R. Den kannte ich ja noch gar nicht.

    Deiner Erklärung verwendet Sternthaler das "sukzesive Approximationsprinzip" wie es in AD-Wandlern bisweilen verwendet wird.
    Das ist natürlich sehr schnell. Für 8 bit bräuchte es 8 Itereationen. Mittelt man über 10 Werte braucht man 80 Werte.

    Mein Verfahren funktioniert anderst. Es wird einfach ein Zähler von 0 bis 256 hochgezählt und damit die Helligkeit erhöht. Es ist also langsam, weil 256 Schritte benötigt werden.
    Soweit wäre es einfach, jetzt kommt aber noch der Grenzwertzähler dazu: erst bei 10 Highpulsen wird die Schleife gestoppt. Der Effekt ist eine Árt mitlaufende Mitttelung.
    Mit 256 Messungen scheint das Verfahren im Nachteil. Ich habe allerdings festgestellt, dass es bei verschiedenen SFH5110 ein bauteilbedingtes "Spikeverhalten" gibt.
    Ich bin mir nicht sicher, aber möglicherweise gibt es da Unterschiede im Ergebnis der beiden Verfahren, was das Störverhalten betrifft. Eventuell könnte man die Schrittweite statt auf 1 auf 4 setzen, da der Abstand ohnehin nicht so genau aufgeöst werden kann. Dann wäre das Verfahren mit 64 Messungen auch so schnell.

  8. #168
    Neuer Benutzer Öfters hier
    Registriert seit
    16.02.2010
    Beiträge
    13
    Eine frage die ich habe die asuro lib v2.8 funktioniert der umbau und die hier gezeigten progs auch mit dieser lib???
    MfG Striker1985

  9. #169
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo striker1985,

    willkommen im Forum.

    Ich beziehe mich mal bei deiner Frage auf den Code von mir, den oberallgeier oben unter "CIRperei von Sternthaler" aufgeführt hat.
    Der Code läuft mit dem dort vorhandenen Testprogramm vor allem mit der Version 2.8.
    (Nur ältere Versionen benötigen eine Anpassung. Sieh dort in test.c)

    @robo.fr
    Ja, das "WALL R"-Dingsda von oberallgeier ist schon beachtlich.

    Zum Thema Entfernungsmessung muss ich jetzt aber bei meinem Code noch hinzufügen, dass auch hier eine Bewertung von gemittelten Messungen vorhanden ist.
    Es sind in cir.h 4 Defines angegeben, die das Verhalten steuern.
    Hier mal die Kurzbeschreibung:
    - CIR_ANZ_IR_PULSE = 6; Minimale Anzahl wegen des IR-Empfängers.
    - CIR_ANZ_ITERATION = 6; 6 Bit Auflösung vom Ergebnis. Reicht bis ca. 1,5m
    - CIR_ANZ_MESSWERTE = 10; Anzahl Messwerte pro Helligkeitsangabe
    - CIR_ANZ_MESSWERTE_OK = 2; Filter für Messfehler

    Hier also CIR_ANZ_ITERATION * CIR_ANZ_MESSWERTE Messungen. Nur 60
    Über CIR_ANZ_MESSWERTE werden bei mir die Messwerte "gemittelt" und mit CIR_ANZ_MESSWERTE_OK eben versucht, einen "guten" Wert zu finden. Der Ansatz ist nicht, dass irgendetwas gerechnet wird, sondern nur die "kein Hindernis erkannt"-Ergebnisse gezählt werden. Ist diese Anzahl kleiner/gleich zum CIR_ANZ_MESSWERTE_OK-Wert, gilt es als Hindernis.

    Anders ausgedrückt müssen also (mit diesen Einstellungen) 8 von 10 Messungen ein Hindernis sehen, um es als Hindernis zu betrachten. Das ist meine Variante zum Mitteln.

    Als Vorteil gegenüber deiner Variante sehe ich hier vor allem, dass ich dadurch eine konstante Messzeit bekommen. Die Geschwindigkeit könntest du ja auch per sukzessiver Annäherung erreichen. Aber dann geht ja wohl der von dir erhoffte Vorteil in Bezug zum Störverhalten wieder verloren.
    Müstest du nicht auch 2 Abbruchkriterien berücksichtigen. Deine 10 Highpulse, und ein weiteres Kriterium, um im Extremfall überhaupt wieder aus der Messschleife raus zu kommen? Oder wirst du abbrechen, wenn die Lichtleistung bei 'volle Pulle' angekommen ist?
    Deinen Vorschlag, dass die Schrittweite von 1 auf 4 gesetzt werden könnte, würde ich nicht machen, da du dann ja die Auflösung 'künstlich' reduzierst. Meine Messungen haben mir nahegelegt, dass man da sowieso zu wenig machen kann. Die Auflösung hängt nun mal genau an der Steuerbarkeit der Lichtleistung.

    So, genug gelabert.
    Viele Grüße
    Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  10. #170
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.652
    Hallo,
    Zitat Zitat von Sternthaler
    ... Der Ansatz ist nicht, dass irgendetwas gerechnet wird, sondern nur die "kein Hindernis erkannt"-Ergebnisse gezählt werden ...
    Meiner Meinung nach ist eine Art Rechnerei doch da - es ist der "Analogrechner" mit den unterschiedlichen duty cycles der LED. Erst durch ihn erhalte ich den wertbehafteten Anhaltspunkt über die erkannte bzw. nicht erkannte Beleuchtungsstärke meiner Umgebung. Diese Werte werden dann gemittelt und als Messergebnis abgegeben - wenn die eingestellte "ja"-Statistik sie für glaubhaft erklärt.

    Zitat Zitat von Sternthaler
    ... Über CIR_ANZ_MESSWERTE werden bei mir die Messwerte "gemittelt" und mit CIR_ANZ_MESSWERTE_OK eben versucht, einen "guten" Wert zu finden ...
    Vermutlich läuft bei anderen Entfernungsmessern eine ähnliche Statistik.

    ................Bild hier  

    Der Sharp GP2Dxx (hier Messung der Sendediodenspannung durch Manf) misst ja offensichtlich 32 mal mit 1kHz, bevor er im ersten Drittel der Sendelücke seinen Messwert ausgibt. Dass sein Messverfahren mit einem PSD durchgeführt wird, ist da wohl eher Nebensache.

    PS: Danke robo.fr und Sternthaler für die freundliche Anerkennung zum WALL R - Dingsbums.
    Ciao sagt der JoeamBerg

Seite 17 von 19 ErsteErste ... 71516171819 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen