Kantenerkennung mit der Kamera

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
Matthias P
Beiträge: 7
Registriert: 28 Sep 2019, 12:04

Kantenerkennung mit der Kamera

Beitrag von Matthias P » 08 Feb 2020, 14:42

Für Projekte bei denen der Roboter auf einem schwarz markierten breiten Weg bleiben soll, wäre es gut, mit der Kamera nicht nur Linien sondern auch Kanten erkennen zu können oder sollte hierfür ein anderer Sensor verwendet werden?

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: Kantenerkennung mit der Kamera

Beitrag von uffi » 08 Feb 2020, 21:51

Klar geht das mit der Kamera, ist aber sicher langsamer als mit einem Infrarot Liniensensor, der knapp über dem Boden geführt wird.

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: Kantenerkennung mit der Kamera

Beitrag von uffi » 08 Feb 2020, 22:02


Benutzeravatar
fishfriend
Beiträge: 1791
Registriert: 26 Nov 2010, 11:45

Re: Kantenerkennung mit der Kamera

Beitrag von fishfriend » 08 Feb 2020, 23:28

Hallo...
oder eine PIXY2 nehmen.
Mit freundlichen Grüßen
fishfriend
Holger Howey
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Kantenerkennung mit der Kamera

Beitrag von hamlet » 09 Feb 2020, 12:06

Hallo Matthias,
Interessantes Problem. Eine Kantenerkennung bietet RoboPro leider nicht, nur die Erkennung einer Kombination zweier Kanten, den Linienfinder. Den hast Du ja auch schon in Betracht gezogen.

Die Pixy Cam bietet laut Dokumentation eine ziemlich funktionsreiche Linienerkennung, aber ebenfalls keine reine Kantenerkennung.

Den RoboPro Linienfinder kann man auf die Detektion sehr breiter Linien konfigurieren. Falls Deine Kamera die gesamte Breite des Fahrweges erfasst, könntest Du aus den Rückgabewerten für Position und Breite die Lage der Kanten berechnen. Die Linienerkennung funktioniert bei mir aber nur verlässlich solange die Breite unterhalb der halben Breite des Kamerabildes bleibt.

Oder ist Dein "schwarzer breiter Weg" so breit, dass nur eine Kante des Weges erfasst werden kann? Dann nutzt Dir der Linienfinder nichts.

Dann könntest Du eventuell mit einer Zeile oder einer Matrix von Farbsensoren eine Kantenerkennung manuell implementieren. Dabei ist es wahrscheinlich sinnvoll die Anzahl der Sensorfelder möglichst klein zu halten. Einerseits könnte die Rechenzeit bei vielen Sensor-Feldern zum Problem werden. Andererseits kann man in RoboPro nicht über einen Index auf ein Sensorfeld zugreifen, sondern muss für jedes Sensorfeld ein explizites RoboPro-Element ins Programm einfügen. Das wird schnell unübersichtlich.
Die Messwerte könntest Du in einem Unterprogramm in eine Liste einzulesen und die Kantenerkennung dann mit den indizierten Daten in der Liste realisieren. Die Position kannst Du vielleicht mit Interpolation auch aus nur wenigen Sensorfeldern genauer rekonstruieren, gleichmäßige Beleuchtung und eventuell eine Kalibration der einzelnen Sensorfelder vorausgesetzt. … Das wird ein Spaß (-;

Schilder Deine Problemstellung doch mal genauer, vielleicht gibt es ja einen viel einfacheren Lösungsansatz.
Grüße,
Helmut

hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Re: Kantenerkennung mit der Kamera

Beitrag von hamlet » 09 Feb 2020, 12:18

Nachtrag:
Vielleicht reicht ja ein ganz einfacher Ansatz wie beim Spursensor, halt nur mit dem großen Erfassungsbereich der Kamera:
Das Kamerafeld mit zwei Farbsensoren abdecken, einer rechts und eine links.
Beide dunkel => Geradeaus
rechts dunkel && links hell => Rechts lenken
rechts hell && links dunkel => Links lenken
Beide hell => Stopp oder todesmutig weiterfahren.

Matthias P
Beiträge: 7
Registriert: 28 Sep 2019, 12:04

Re: Kantenerkennung mit der Kamera

Beitrag von Matthias P » 24 Feb 2020, 19:47

Vielen Dank für Eure Tipps. Habe gar nicht gemerkt, dass ich Antworten bekommen habe. Hatte gedacht, ich werde dann per Email benachrichtigt. Das ist aber anscheinend nicht vorgesehen.
Mein konkretes Problem: Ich möchte einer 5 cm breiten schwarzen Linie folgen. Momentan habe ich die Kamera etwas höher angebracht, so dass sie ca. 75 Punkte der Gesamtbreite von 200 Punkten einnimmt, aber sie wird nicht erkannt, obwohl ich die minimale Breite auf 50 und die maximale Breite auf 150 gesetzt habe. Erst wenn ich die Kamera viel höher halte, wird die Linie erkannt. Jetzt kann ich natürlich die Kamera noch viel höher verbauen, dann sollte es funktionieren.
Mit den Farbfeldern könnte es evtl. auch klappen. Ich hatte noch keine Zeit es auszuprobieren.
Ihr habt eine PIXY- oder PIXY2-CAM erwähnt. Wo bekommt man diese und wie schließt man diese an und wie steuert man sie an?
Schöne Grüße, Matthias

Matthias P
Beiträge: 7
Registriert: 28 Sep 2019, 12:04

Re: Kantenerkennung mit der Kamera

Beitrag von Matthias P » 24 Feb 2020, 21:36

Einen Fehler habe ich jetzt entdeckt. Nachdem man die minimale und maximale Breite eingestellt hat, muss man die Kamera ein- und ausschalten, bevor die Werte wirksam werden. Jetzt erkennt er auch die breite Spur. Nur um die 90-Grad-Kurve fahren wird noch ein Herausforderung.

Benutzeravatar
ThanksForTheFish
Beiträge: 596
Registriert: 03 Nov 2010, 21:00
Wohnort: 30900 Wedemark

Re: Kantenerkennung mit der Kamera

Beitrag von ThanksForTheFish » 24 Feb 2020, 21:55

Matthias P hat geschrieben:
24 Feb 2020, 19:47
Hatte gedacht, ich werde dann per Email benachrichtigt. Das ist aber anscheinend nicht vorgesehen.
Hallo Matthias, eigentlich sollte das gehen. Und zwar über das Maulschlüsselsymbol rechts neben dem Antwort-Button. Dort kannst du 'Thema abonnieren' anklicken.
Bin mal gespannt, ob ich dann gleich eine Nachricht bekomme.
LG, Ralf
Nordconvention am 20. April 2024 im Schulzentrum Mellendorf in 30900 Wedemark

Benutzeravatar
fishfriend
Beiträge: 1791
Registriert: 26 Nov 2010, 11:45

Re: Kantenerkennung mit der Kamera

Beitrag von fishfriend » 25 Feb 2020, 23:26

Hallo...
Ich kann jetzt nur vermuten da ich das mit einem TXT und einer Kamera noch nicht gemacht habe, aber:
Da muss es noch eine andere Lösung geben.
Und zwar über OpenCV. Ist jetzt auch eine Versionsfrage, da ich mit einem Raspberry Pi und dessen Kamera was gemacht habe.
Zumindest kann man Masken deffinieren auf die OpenCV reagiert. Bei einer Linie ist das halt ein Balken, Kreuzung-Kreuz...
In der MagPi (englisch) gab es ein paar Berichte darüber. Ich vermute dass man das auch für einen TXT umsetzten kann.

Ich hatt mir auch schon das Pixy2 Video angeschaut und es juckt gewaltig in den Fingern, einen schnellen ft Roboter damit zu bauen.
Mit freundlichen Grüßen
fishfriend
Holger Howey

PS Das -ähm- übernächste (?) Projekt wird aber erstmal eine Micromaus...
ft Riesenräder PDF: ftcommunity.de/knowhow/bauanleitungen
TX-Light: Arduino und ftduino mit RoboPro

Antworten