Forum: Mikrocontroller und Digitale Elektronik Problem mit mobilem Roboter


von high-side (Gast)


Lesenswert?

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

von sepp (Gast)


Lesenswert?

hi ich würde so einen art rollen endschalter nehmen sodass sobald dieser 
auslöst der roboter kehrt macht

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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.

von high-side (Gast)


Lesenswert?

@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 :)

von Sensorist (Gast)


Lesenswert?

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...

von ajkaner (Gast)


Lesenswert?

Versuche es mit dem IR-Dedektor IS471F-SH als Reflektionslichtschranke 
hat auch auf Glastischen gute Dienste geleistet

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

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...

von space (Gast)


Lesenswert?

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

von sunday morning (Gast)


Lesenswert?

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

von Malte _. (malte) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.