Ein Paar Freunde und ich werden einfache Roboter bauen, um eine weiße Linie auf einer schwarzen Oberfläche zu verfolgen, wir haben so etwas noch nie gemacht und ich habe einen sehr hohen Angriffsplan,
Holen Sie sich ein Mini-ATX-Board für alle Computeranforderungen, eine Webcam für die Verfolgung der Straße und zwei Elektromotoren für den Antrieb und für die Richtung.
Mein Hauptanliegen ist, gibt es eine bessere Möglichkeit, die Straße zu verfolgen? Oder funktioniert eine Webcam für den Job?
BEARBEITEN:
Die Antwort auf die Antworten mit dem Photowiderstand scheint der richtige Weg zu sein, aber ich habe noch eine Frage: Es wird Signale geben, die dem Roboter auf der rechten Seite zeigen, in welche Richtung er sich wenden soll. wieder weiß auf schwarz. So wie ich an einer T-Kreuzung links abbiegen muss. Gibt es eine Möglichkeit, dies ohne Kamera zu bewältigen?
Es ist am besten, aufwendige Bildverarbeitungssoftware vollständig zu umgehen und einfache Elektronik zu verwenden. Es gibt sogenannte Fototransistoren, die lichtempfindlich sind. Punkt zwei nach unten auf jeder Seite des Roboters, von Licht von oben beschattet. Wenn der Roboter beginnt, nach rechts zu gehen, anstatt der Linie zu folgen, wird der linke Sensor aktiviert. Wenn es nach links geht, wird der rechte aktiviert. Verwenden Sie die Rückmeldung dieser Signale, um den Roboter zu führen (Sie könnten sie möglicherweise fast direkt auf die Motoren anwenden, wenn Sie zwei Motoren haben).
Eine Webkamera wird keine Probleme haben, eine weiße Linie auf einem schwarzen Hintergrund zu verfolgen, und wenn Sie feststellen, dass Sie Empfindlichkeitsprobleme haben, ist dies ein leicht aktualisierbares Teil des Systems. (Sie müssten nur eine teurere Kamera anschließen)
Es könnte Sie interessieren, sich OpenCV anzuschauen,
(Open Source Computer Vision) ist eine Bibliothek von Programmierfunktionen für Echtzeit-Computer-Vision.
Es kann Ihnen einige Ideen für Ihre Implementierung geben oder sogar für Sie nützlich sein, wenn Sie C ++ verwenden
edit: obwohl die Verwendung von LDRs wie Andrew M vorgeschlagen wird, könnte eine einfachere Lösung sein:)
Ich machte einen ähnlichen Roboter in der Schule und machte zwei kleine Sensoren, im Grunde genommen nur LDRs in einer lichtdichten Röhre mit einer Schaltung, um die Lichtschwelle zu steuern, die den Flip von Ein auf Aus machte. Es machte die Logik sehr einfach - gibt es eine schwarze Linie unter diesem Sensor? Ja | Nein.
Die Verwendung einer Webcam kann eine Menge visueller Verarbeitung beinhalten.
In der Zwischenzeit können Sie an Ihren anderen Subsystemen arbeiten, dh die Motoren vom Computer aus steuern und das Ding selbst bauen und herausfinden, wie man alles antreibt.
Vorige Kommentare über die Verwendung eines Fotosensors sind gute Vorschläge, auch wenn es schwieriger sein könnte, etwas zu finden / herzustellen, das an einen USB-Anschluss angeschlossen wird.
Wenn Sie die Kamera Route gehen, würde ich vorschlagen, Sie emulieren einen einfachen Sensor; vielleicht nehmen Sie einen Durchschnitt der linken und rechten Hälfte der Eingabe als eine Angabe, um gerade / links / rechts zu fahren.
Wenn Sie jedoch weniger Zeit mit dem Erstellen der benutzerdefinierten Teile verbringen möchten, können Sie das LEGO NXT-Kit ausprobieren. Sie kommen mit einem optischen Sensor und einer grafischen Programmierumgebung. Selbst wenn Sie keins kaufen, können Sie aus den Diskussionen in der Umgebung lernen.
Würde vorschlagen, dass Sie beide Motoren verwenden, um es zu fahren, eine Seite saß in der Mitte Ihres Chassis und dann zwei Rollen vorne und hinten (etwas vom Boden angehoben, so dass es auf den Antriebsrädern schaukeln kann). Dann können Sie es wie ein Tank fahren und es kann ein sechs Pence (oder Groschen, wenn aus den USA) einschalten.
Sieh dir den ehemaligen Roboter-Kriegsteilnehmer an :)
Wenn Sie mit der Kamera gehen, müssen Sie möglicherweise eine einfache Bildverarbeitung durchführen. Der einfachste Weg wäre wahrscheinlich das adaptive Thresholding - nehmen Sie alle Pixel aus dem Kamerarahmen, konvertieren Sie in Graustufen (wenn es in Farbe ist), berechnen Sie den Durchschnitt und verwenden Sie ihn als Schwelle - Sie werden eine weiße Linie auf schwarzem Hintergrund haben. Wenn Sie immer noch kleine weiße Flecken (durch ungleichmäßige Beleuchtung) bekommen, können Sie sie herausfiltern, indem Sie das Bild in verbundene Komponenten (mit Flutfüllung) trennen und kleine Flecken entfernen. Danach würden Sie hoffentlich einen einzelnen weißen Streifen auf dem schwarzen Hintergrund bekommen.
Ich habe etwas Ähnliches gemacht und es in ein Modul geschrieben. Ссылка
Tags und Links computer-vision robotics