Hallo, ich habe einen sehr einfachen Roboter mit: - Odometrie Sensoren an den Rädern (schwarz-weiß übergang erkennung) - Fotodioden und eine Leuchtdiode an der Front (0 - dunkel --> 1023 maximal hell) - und Berührungstastern an der Front - 2 elektromotoren für 2 räder (links/rechts) nun möchte ich meinen roboter alleine über den tisch fahren lassen, sobald nun die tischkante erkannt wird soll er eine Kehrtwendung einlegen. Realisiert habe ich das so: Meldet eine der Fotodioden einen Wert unter einen bestimmten Schwelle (aufgrund des nicht mehr reflektierten Lichts) dann wird angenommen, dass die Front die Tischkante erreicht hat. So weit so gut. Das funktioniert auch soweit. Das Problem sind Schatten bzw. verschiedene Lichtverhältnisse auf dem Tisch. Idee 1: Ich merke mir den letzten Wert i[k-1] und nehme davon 75 % ist der neue Wert i[k] nun kleiner als der Schwellwert, wird angenommen, dass die Kante erreicht wurde - wegen der plötzlichen Verdunkelung. Problem: Ein etwas dunklerer Schatten auf dem Tisch führt auch schon zu einer Kehrtwendung ... Idee 2: Langsam fahren um so besser auf einen plötzlichen Lichtwechsel reagieren zu können Problem: Wenn die Motoren unter einer gewissen PWM Frequenz betrieben werden ist der Getriebewiderstand zu groß und die Steuerung funktioniert nicht mehr richtig... Idee 3: Etwas schneller fahren... damit der Getriebewiderstand überwunden wird... Roboter erkennt zwar den plötzlichen Lichtwechsel aber kann nicht mehr rechtzeitig "bremsen".. auch wenn ich mit "vollgas" den rückwärtsgang einlege haut es ihn vom Tisch... ;-) Irgendwie seh ich noch nicht den golgenden Mittelweg ;-) Hat jemand von euch eine Idee, wie ich meinen Roboter über den Tisch fahren lassen kann ohne stark von Lichtverhältnissen abhängig zu sein? Ciao
hi ich würde so einen art rollen endschalter nehmen sodass sobald dieser auslöst der roboter kehrt macht
Den Tisch zusätzlich anstrahlen, so dass der Fotosensor vom Umgebungslicht und dessen Schatten unabhängig wird? Wenn sichtbares Licht stört, dann zur Beleuchtung eine IR-LED und IR empfindliche Fotodiode nehmen. Ich verstehe aber nicht, wieso Idee 1 (Angst vorm Schatten) nicht die gleichen Probleme wie Idee 3 (Bremsweg) hat.
@sepp: Ich wollte das Problem erstmal mit meinen Lichtsensoren lösen, wenn das total scheitert, werde ich mir wohl was anderes einfallen lassen müssen. @Stefan: In der mitte habe ich eine rote led und links und rechts davon eine Fotodiode. Die Idee dahinter ist eigentlich damit eine Linienverfolgung zu realisieren. Aber ich wollte das ganze zur Tischkantenerkennung "missbrauchen".. weil es ja vom Prinzip auch nur eine Erkennung von "hell" nach "dunkel" ist, wobei die schwellwerte für hell und dunkel hier variabel sind - wegen der unterschiedlichen Lichtverhältnissen. Was ich bräuchte wäre eine sich schnell adaptierende Hell/Dunkel Erkennung. Aber meine momentane Lösung funktioniert nicht so toll bzw. ist zu sensibel: [c] schwellwert = sensor_alt - (sensor_alt >> 2); // sensor - (sensor / 4) = 75 % von sensor if (sensor_neu < schwellwert){ // Kehrtwendung } ciao :)
Helligkeit ist einfach das falsche Maß um die Tischkante zu erkennen. Eindeutig wäre der Abstand zur Oberfläche. Ist der größer als die Höhe von der Tischplatte zum Sensor, hängst du eindeutig über einem Abgrund...
Versuche es mit dem IR-Dedektor IS471F-SH als Reflektionslichtschranke hat auch auf Glastischen gute Dienste geleistet
Montier doch den Lichtsensor so nah an der Tischplatte das kein Streulicht mehr von der Umgebung dein Meßergebnis verfälschen kann. Dann brauchst du natürlich eine eigene Lichtquelle (LED) die du neben dem Sensor auf den Tisch leuchten läßt. Kommt das Licht der LED nicht mehr zurück (weil sie die Tischkannte runter leuchtet) hast du die Kante erreicht...
Moin, bei industriellen Reflexionslichtschranken und Lichttastern wird das Licht des Senders gepulst. Der Empfänger "sieht" den Puls, der mit dem Fremdlicht überlagert ist. Nun muss nur noch das Störsignal des Fremdlichts ausgefiltert werden. Viel Spass Stefan
Das mit dem gepulsten Licht ist auch ein interessanter Ansatz: Also ich pulse die LED z.B. mit einer PWM von 100 Hz und 50 % ... das rausfiltern.. meinst du das jetzt analog oder in software mit einem digitalen TP oder HP oder sowas? LG
Ich vermute er meint in Software. So würde ich es jeden falls lösen. Wenn das Einschalten der LED gegenüber dem vorherigem Wert etwas ändert -> Tisch, wenn sich fast nichts ändert -> kein Tisch.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.