PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Robotersteuerung mit Kamera



stochri
05.01.2006, 21:00
Hallo Zusammen,
mein Plan ist, einen Roboter mit einer Kamera zu beobachten und dann von einem PC steuern zu lassen. Dieses Verfahren findet sich bei den Fussballrobotern der Midsize-Leage.

Ziel ist, am Bildschrim eine Wegstrecke vorzugeben, die der Roboter dann abfährt.
Wenn man jetzt einen Stift am Roboter befestigt, müßter er eigentlich die vorgegebene Wegstrecke aufzeichnen.

Ich habe festgestellt, dass sich eine rote Farbe relativ gut erkennen läst, deshalb klebe ich auf den Roboter ein Stück roten Karton.

Die Bilderkennung möchte ich mit SCILAB und SIP realisieren, weil es dort schon ein paar vorgefertigte Bildverarbeitungsfunktionen gibt.

Als Roboter verwende ich den ASURO, gesteuert wird er über die Infrarotschnittstelle.
Grundsätzlich kann ich ihn schon steuern:

https://www.roboternetz.de/phpBB2/viewtopic.php?t=15727

Soweit erst mal,
stochri

stochri
05.01.2006, 21:10
Den Roboter kann ich auch schon lokalisieren.
Im folgenden die 3 Bilder der Positionserkennung:

1. Orginalbild
2. Farbdifferenzbild ( wird über die Vektordifferenz zu Farbe Rot berechnet )
3. Bild mit vom Algorithmus positionierten Lokalisationskreuz

solo
05.01.2006, 21:39
Ich selbst hab da folgendes in Bangkok miterleben dürfen. Da haben sich Studenten in einem Fussballmatch mit Robotern alt Torschützen um die meisten Tore gebattelt. Sehr interessant wie ich finde. Da waren ein haufen Asiaten und ich. War eine Atmosphäre wie in einer Fussballarena!
Die Roboter hatten neben Rot noch weitere Farbcodes bestehend aus den Grundfarben bzw. Blauen und Gelben Punkten die von einer Sony CCD3 Kamera erfasst wurden.
Leider kann ich nicht mehr dazu sagen, aber das Thema finde ich selbst sehr interessant und vor allem schwierig aber in diesem Forum habe ich schon so manche passende Antworten auf verzwickte Fragen erhalten!

stochri
06.01.2006, 10:30
Hallo solo,
das Thema Bildverabeitung ist nicht so einfach. Aber das mit der Positionserkennung über Farbe klapt gerade recht gut. Im Moment ist das ganze aber etwas langsam und das liegt nicht an der Rechnerei, sondern an der langsamen Bildaufnahme. Ich vewende unter Linux das Programm webcam und das braucht länger als eine Sekunde, um ein Bild aufzunehnehm (ärgerlich, weiss noch nicht, wie ändern )

Hier mal ein Bild der Bahnverfolgung:

Alrithmus:
do
go(7)
turn(90)
get_picture
calculate_pos
while (true)

Die Ungenauigkeit im Bild kommt übrigens nicht von der Positionserkennung, sondern vom ungenauen fahren des Roboters.

Gruss,
stochri

stochri
07.01.2006, 17:30
Jetzt habe ich es geschaft, den ASURO über die Bilderkennung zu steuern. Weiter geht's hier:

https://www.roboternetz.de/phpBB2/viewtopic.php?p=146330#146330

plusminus
04.04.2007, 13:47
Moin, bin hier auch gerade am rumexperimentieren mit kantenerkennung und solchen geschichten...

funktioniert auch alles perfekt soweit, nur... es ist schei ße langsam :!:
(Nutze VB.NET...) brauche für nen einfachen 3x3 (Sobel)-Operator auf 200x140 Pixeln 350ms hier auf dem Uni-Rechner (mit 2,8GHz + 1GB Ram)

Ok ich hab auch keine Ahnung, ob der Rechner nur verhackstückt ist, aber >300ms... bei läppischen 200x140 Pixeln das ist definitiv zu langsam :!:
Vor allem, falls sowas mal für nen AVR gemacht werde sollte...

Wenn man auf nem zweidimensionalen Array arbeiten würde, müsste es doch Welten schneller gehen, oder?

Mit was hast du denn dein tool gecoded ?

scales
04.04.2007, 13:55
Ich vewende unter Linux das Programm webcam und das braucht länger als eine Sekunde, um ein Bild aufzunehnehm

ich benutz auf einem 200Mhz Linux Router den spca Treiber um an Bilder zu kommen,
und damit schaff ich 30 320*200 oder 15 640*480 Bilder in der Sekunde.
Ich glaub da machst du irgendwas falsch.

Vitis
04.04.2007, 21:01
hab bilddaten von Kamera C328 auf AVR verarbeitet,
Kantenerkennung mit Sobel und n paar kleinere
andere Geschichten und schon gings auf 2-3 Sekunden
hoch je Frame. Wobei n nicht unerheblicher Teil war
schon die Datenübertragung und das bedienen des
externen RAM (man braucht halt ne ganze Menge davon)