Wie kann ich den Rand einer Tabelle erkennen?

11

Ich bin neu im Roboterbau und habe gerade mein erstes Arduino zum Herumspielen bekommen.

Ich möchte einen Roboter bauen, der auf einem Tisch wandert und länger hält. Ich denke, wenn ich es schaffen könnte, nicht vom Tisch zu fallen.

Was ist der beste Weg, um die Kante eines Tisches zu erkennen, damit ich ihn anhalten und umdrehen kann? Es muss etwas Zuverlässiges und vorzugsweise Billiges sein.

Es ist auch besser, wenn ich dem Tisch kein zusätzliches Material hinzufügen muss, damit ich es auf jeder Oberfläche verwenden kann (meine erste Idee war, Pfadlinien auf dem Tisch zu zeichnen und einen Linienfolgerroboter zu erstellen, aber das tue ich nicht mag diese Idee sehr).

Thomas
quelle

Antworten:

15

Die Roomba-Lösung für dieses Problem bestand darin, Klippensensoren hinzuzufügen , die eigentlich nur nach unten gerichtete Näherungssensoren sind :

Scharfer GP2Y0A21YK Infrarot-Näherungssensor.  Der Sensor verfügt über einen Analogausgang, der von 3,1 V bei 10 cm bis 0,4 V bei 80 cm variiert.

Obwohl diese Technik Probleme mit einigen Oberflächen zu haben scheint, wie z. B. dunklen Fliesenböden , scheint dies für Ihre Anwendung kein Problem zu sein.

Sie können sogar selbst eine mit einer IR-LED und einer IR-Fotodiode herstellen, zum Beispiel diesen Arduino-kompatiblen DIY-Infrarot-Näherungssensor .

Möglicherweise können Sie auch einige Ideen von Tiny Wanderer - A Table Top Robot über Lehrmittel erhalten .

Mark Booth
quelle
7

Ein einfacher und billiger Ansatz besteht darin, einen Berührungssensor wie einen Whisker zu verwenden. Der Controller überwacht nur, ob der Whisker Bodenkontakt hat. Wenn dies nicht der Fall ist, stoppt er und bewegt sich von diesem Whisker weg.

Eine andere ziemlich billige Methode ist die Verwendung eines Satzes von IR-Entfernungsmessern, die auf den Boden gerichtet sind. Die Steuerung überwacht dann die von den Rangern zurückgegebenen Werte. Wenn einer von ihnen einen vordefinierten Schwellenwert überschreitet, stoppt der Roboter und bewegt sich von diesem Sensor weg.

DaemonMaker
quelle
Das Problem bei Berührungen besteht darin, dass der Sensor durch einen Aufprall eines Objekts auf den Boden beschädigt werden kann. Die Zuverlässigkeit der Sensoren ist ein wichtiger Bestandteil des Roboterdesigns.
Jay Beavers
3

Es gibt verschiedene Ansätze zur Lösung dieses Problems:

  • Abstandssensoren
  • Berührungssensor
  • RFID-Tags am Rand des Tisches (oder Magnete)
  • Kamera (Die Verwendung der Bildverarbeitung wäre schwieriger und das Arduino wäre wahrscheinlich nicht leistungsfähig genug dafür.)

Mit dem Abstandssensor müssen Sie prüfen, ob es sich um ein digitales oder analoges Signal handelt, das vom Sensor bereitgestellt wird. Für den Zweck Ihres "Klippensensors" ist Digital wahrscheinlich in Ordnung, da Sie den Sensor als Umschalter verwenden können, um zu erkennen, wenn die Entfernung eine Mindestentfernung überschreitet.

Wenn Sie an analogen Sensoren interessiert sind, um mehr Informationen (z. B. Abstand von einer Wand) als nur einen Kippschalter bereitzustellen, müssen Sie die Reichweite des Geräts überprüfen. Der in der obigen Antwort abgebildete scharfe Sensor liefert Ihnen eine Spannung, die Sie in eine Entfernung umwandeln müssen (sie hat eine umgekehrte Beziehung zur Entfernung). Sie benötigen 3 Sensoren, um den gleichen Entfernungsbereich abzudecken, den ein Ultraschallsensor zurücklegt (z. B. SRF08 Ultrasonic Range Finder). Scharfer GP2D120-Entfernungsmesssensor 4-30 cm für kurze Entfernungen, scharfe GP2Y0A02YK-Entfernungsmesssensoren 20-150 cm für mittlere Entfernungen und scharfe GP2Y0A710K0F-Entfernungsmesssensoren 100-550 cm für lange Entfernungssensoren. Ich hatte Probleme damit, dass der Ultraschallsensor sporadisch auf Null abfiel. Sie müssten also eine catch-Anweisung programmieren, wenn dieser Ausfall in Ihrer Anwendung nicht akzeptabel ist. Der Ultraschall-Entfernungsmesser SRF08 war viel einfacher zu handhaben, da er vom Hersteller optimiert wurde.

Tom Bamber
quelle