PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TicTacToe Roboter mit Video Erkennung und Greifarm (C++)



th1alb
31.10.2005, 04:44
Morgen muss ich in der Schule mein Projekt angeben, die Note wird danach gerichtet sein, ob ich schaff was ich mir vornehmen werde.

Ich habe einen Roboter Arm geplant, den ich selbst bauen werde, der ueber Schritt-Motoren und einem Drucker Port gesteuert wird.
Zusaetzlich will ich eine Video Kamera haben, mit der der Computer das Spielbrett erkennen soll.

Ich denke C++ waere geeignet, wobei ich auch in anderen Programmier Sprachen ein basisches Wissen hab. Die Platform wuerde Windows XP sein.

Ich habe inzwischen unzaehlige Stunden auf Google gesucht und auch schon einiges gefunden.
Leider nichts besonders relevantes.

Hab ein C++ Programm, das ueber eine Webcam ein Video nimmt und dabei rote Objekte mit einem Kreuz kennzeichnte.

Kennt jemand irgend welche insider Links, zb von aenlichen Projekten?
Was meint ihr, C++ geeignet fuer so eine anwendung?

Sommer
31.10.2005, 06:49
Hi,

ja also mit C++ kannst du eigentlich alles machen.
Das Frauenhofer macht auch Bildverarbeitung mit C++
und da habe ich schon die schönsten Sachen gesehen.

Es kommt halt immer drauf an wie Fit man ist :-)

Kannst du mal den Code von den Webcam Prog. posten?

Danke

Ulli

michaelb
31.10.2005, 09:23
Hi,
cooles Projekt!


Kannst du mal den Code von den Webcam Prog. posten?

jo da wäre ich auch interessiert!
Gruß Michi

Teddybär
31.10.2005, 10:44
Schau mal hier :

http://www.image-integration.de/ImagePP/imagepg.htm

th1alb
31.10.2005, 11:04
Danke fuer den Link, werd ich mir gleich mal anschaun.
Hier ist der Link von wo ich den code fuer das oben genannte Programm hab:

http://www.kyb.tuebingen.mpg.de/bu/people/berger/mindstorms.html

michaelb
31.10.2005, 11:47
Danke!
Werd ich mir mal anschauen!
Gruß Michi

maze2k
31.10.2005, 14:24
Also ich würde grundsätzlich Java empfehlen, das ist nicht so Hardwarenah und man hat keine Probleme mit Zeigern und Speicherfehlern...

maze2k
31.10.2005, 14:40
Aber für ein Schulprojekt würde ich das als sehr umfangreich einstufen, vor allem wenn du den Greifarm selbst bauen willst.

Also wenn du das schaffst bekommst du garantiert eine 1 *g*
Ich würde dir einen fertigen Greifarm empfehlen, eine Webcam und eben Java mit Comm-API.

Für die Bilderkennung gebe ich dir mal diesen Link (http://forum.java.sun.com/thread.jspa?threadID=450616&messageID=2048826) und das Stichwort JMF (Java Media Framework)

Bitte halte uns auf dem laufenden, denn ich finde dein Projekt sehr interessant!

themaddin
31.10.2005, 14:43
Haste denn schon Pläne von deinem Arm? Wie willst du eine Rückmeldung über die Position bekommen? Potis?

MfG
Martin der Arm-Fetischist :mrgreen:

michaelb
31.10.2005, 17:25
Hi Maze2k,
anscheinend hast du Erfahrung mit Videobildern in Java einbauen! Kannst du mal beschreiben wie man sowas bewerkstelligt?
Gruß Michi

maze2k
31.10.2005, 19:36
Nenn mich lieber Matthias *g* der Name war aber leider schon vergeben, als ich mich hier angemeldet habe :)

Ich hab mal einen Lego-Mindstorms Roboter mit Webcam-Farberkennung gebaut (siehe Beitrag in der Kategorie "Eigene Projekte").

Ich habe dazu das speziell für Lego Mindstorms entwickelte Java-OS Lejos verwendet. Das benutzt für die Bildverarbeitung das JMF (Java Media Framework).

Hier ein Link mit Beispieldateien, wie man einen Videostream einer Webcam mit dem JMF captured:
http://www.mutong.com/fischer/java/usbcam/

Hier eine weitere Seite mit Beispielen, direkt von SUN:
http://java.sun.com/products/java-media/jmf/2.1.1/solutions/

Hier die JMF Hauptseite:
http://java.sun.com/products/java-media/jmf/index.jsp

Du kannst dir mit wenigen Zeilen Code ein Live-Bild von der Cam anzeigen lassen, einzelne Bilder grabben und eben das aktuelle Bild analysieren.

Codebeispiele habe ich zur Zeit leider keine mehr, aber ich werde mich demnächst auch wieder an diese Thematik ransetzen, da ich an der Uni gerade eine Vorlesung Bild- und Signalverarbeitung höre und das ganze nicht nur mit der vorgeschlagenen Software ausprobieren, sondern selbst etwas implementieren möchte :)

michaelb
31.10.2005, 21:32
Hi Matthias,
jo danke! Werd mich mal damit beschäftigen!
Gruß Michi

Sommer
01.11.2005, 12:46
Hi,

was für eine C++ Entwicklungsoberfäche benutzt Ihr denn?
Visual C++ C# ???

Bye Ulli

th1alb
03.11.2005, 02:51
Hallo Leute,
wollte eigentlich erst wieder posten wenn ich neuigkeiten hab. Bin zur Zeit zutiefst frustriert!!
Seit Tagen such ich jetzt schon im Internet nach tutorials oder einfach zu verstehender source code. Wie eine Nadel im Heuhaufen. Bis jetzt hab ich noch nichts relevantes gefunden, ausser das wo ich schon den Link gepostet hab.

Zur Entwicklungsoberflaeche, ich verwende Visual Studio 2003 .NET und NetBeans IDE fuer Java.
Diese Programme sind fuer mich ein Alptraum, ich kenn mich da garnet so gut aus.

Nach Java Applikationen hab ich auch umfangreich gesucht aber nichts gefunden.
Wenn ich mal was find, ist es entweder viel zu kompliziert oder ich bekomm den code erst garnicht zum laufen.

Ich bin mit QBasic aufgewachsen, Object Oriented Programming hab ich noch nie so richtig verstanden.
Es macht immer den eindruck als brauch ich mehrere Dateien. Wieso kann das nicht alles in einer Datei sein, eine einzigste.

Alles was ich runterlad, hat so viele Files. Ich komm da total durcheinander. Wenn ich versuch den code einfacher zu machen und versuch Schnick-Schnack raus zu loeschen, dann geht natuerlich wieder garnix.

SEUFZ.

@themaddin: Positionsrueckmeldung wird nicht noetig sein, werde Schrittmotoren verwenden. da werd ich dann allerhoechstens einen Taster wo ran baun zur Justierung.

Ich bedanke mich jedenfalls schonmal fuer das ganze Feedback und hoffe das ich bald den magischen Link finde, ein Link zu einen "Noob-WebCam Integrations Tutorial" :)

maze2k
03.11.2005, 09:29
Also mit Java bekommst du eine Remote-Steuerung auf dem PC ganz gut hin, das dürften dann auch nicht zu viele Klassen (Files) werden.

Du brauchst eigentlich nur die Bibliothek für den Zugriff auf die serielle Schnittstelle:

http://java.sun.com/products/javacomm/index.jsp

Keine Angst, du musst nicht alles verstehen, was diese Dateien machen. Du brauchst hiervon nur die Datei "comm.jar".

Ok, entwickeln tust du es am besten in einer Entwicklungsumgebung. Eclipse ist da die beste kostenlose die es gibt:

http://www.eclipse.org

Da erstellst du ein neues Projekt.
Dann erstellst du ein Source-Folder.
Dann erstellst du ein Package (z.B. tictactoe.gui, das ist im Grunde nichts anderes als der Ordner tictactoe/gui)
Dann erstellst du noch ein Package (z.B. tictactoe.core)

In das GUI-Package packst du alle GUI-Sachen, in das Core-Package alles andere, also deinen Anwendungskern. Da kommt z.B. alles rein, um über die serielle Schnittstelle zu kommunizieren.

Hier eine allgemeine Einführung in Java:
http://noebis.pi-noe.ac.at/javanuss/

Hier ein kleines Mini-Tutorials zu GUIs (und zu Java allgemein):
http://java.rrzn.uni-hannover.de/tkji/javakurs/kursdemos/

Hier ein kleines Mini-Tutorial für die Schnittstellen-Kommunikation (für Linux, für Windows habe ich mal ein Beispiel hier im Forum gepostet):
http://java.sun.com/products/javacomm/javadocs/API_users_guide.html

Mehr finde ich jetzt gerade nicht auf die schnelle, ich hab gleich wieder Vorlesung :)

Ich kann dir aber auch bei der Entwicklung des GUIs helfen, wenn du gar nicht voran kommst (aber nur dann!) könnte ich dir ein GUI-Dummy in Java erstellen...

Sommer
03.11.2005, 13:38
Hi,

das sieht alles ja ganz gut aus :-)
Habe mir mal Eclipse geladen und gestartet, jetzt wäre ne Hilfe
was man da so machen kann recht net.
Zum lernen wäre Deutsch auch nicht schlecht.

Gibts da einen Link, wo beschrieben wird wie man Schritt für Schritt
ein Programm unter Eclipse erstellt?

Oder kannst du mal eine kleine Vorgehensweise posten?

Ich denke da spreche ich für mehr Leute :-)

Bye Ulli

michaelb
03.11.2005, 14:12
Hi,
ich arbeite mich gerade auch in Eclipse ein!! Bisher hab ich meine Robotersteuerungssoftware per Notepad gemacht!!! Hab dann da auch so JInternalFrames benutzt und so!! Würde mich freuen wenn man sich hier über Eclipse unterhalten könnte! Ich liebe Java!
Gruß Michi

michaelb
03.11.2005, 14:47
Hi,
warum muss man Eclipse eigentlich nicht installieren??
Gruß Michi

Sommer
03.11.2005, 18:12
Ja das sind alles so fragen was ich mir auch stelle :-)

Ich arbeite momentan mit Visual Basic und Visual C#

Jedoch würde mich brennend Java interessieren :-)

Jedoch finde ich wenig in Deutsch darüber was zum erlernen ja
doch ein vorteil wäre!

Der obige Link mit den Einsteigerkurs finde ich super, jedoch wie gehe
ich in Eclipse vor?

Ich bin irgenwie eine Grafische IDE gewohnt wo ich meine Komponenten
Paltziere und dann meinen Code dazuschreibe...

Bye Ulli

michaelb
03.11.2005, 18:58
Hi Sommer,
was für Javakenntnisse hast du??
Ich benutze auch noch das Programm NetBeans da kann man solche Oberflächen mit Drag und Drop machen! Weiß net ob des mit Eclipse auch so geht! Normalerweise erzeugt man bei Java das Fenster und die Komponenten aus dem Quelltext heraus! Funktioniert sehr gut geht auch ziemlich einfach!
Damit kann man dann sowas erstellen:
Klick (http://www.dsh-elektronik.de/arcrobot/fotos/software/big/software3.jpg) Ich bin gerade dabei soetwas zu erstellen! Noch mal zur Info: Dies wurde allein aus dem Quelltext generiert!
Gruß Michi

Sommer
03.11.2005, 20:14
Hi,

naja somit machst du JavaScript, oder?

Also bis jetzt kenn ich mich mit Java gar nicht aus...
Ich müsste nur mal den Faden finden wie man beginnt :-)
Und vor allem wie das alles bei Java zusammen hängt.

Bye Ulli

maze2k
03.11.2005, 23:41
1. Eclipse muss man nicht installieren, da es keine Dateien in die Systemordner, Registry etc. laden muss. Es ist eine eigenständige Software-Komponente.

2. Für alle, die ein HelloWorld-Programm mit Eclipse auf DEUTSCH erstellen möchten:

http://www.admin-wissen.de/programmierung/eclipse-workshop/workshop-seite-6/

Dieses kleine Beispiel setzt voraus, dass man schon ein neues "Project" und eine "Class" erstellt hat. Wie das geht, wird hier auch noch einmal erklärt: http://www.orisa.de/de/the_company/vorlesung/de/hello_world/eclipse.html (Hier wird auch ein Hello-World Programm erstellt, mit ausführlicher Erklärung von der Installation bis zum Ausführen)

michaelb
04.11.2005, 11:44
Hi,
danke! Hab mich aber schon zurechtgefunden! Weil es da Programminterne Tutorials gibt!!
Gruß Michi

th1alb
06.11.2005, 15:06
Wollt nur mal ein kleines update posten.
Hab gestern ein par LEDs zum Blinken gebracht. Um besser zu arbeiten, hatte ich ein paralleles 0-Modem Kabel. Von einer alten ISA Karte mit Parallelem Stecker hab ich mir den abgeloetet und in das 0-Modem Kabel eingesteckt.
Leider habe ich nur 5 LEDs zum Blinken gebracht, war schon fast wieder verzweifelt. Heute freuh ist es mir in den Kopf geschossen, das 0-Modem Kabel hat mir ja nicht einen direkten LPT Port gegeben :)

Ausserdem hab ich meine alte Laser-Show gefunden.
Jetzt hab ich 3 grosse Schritt-Motoren und einen Kleinen.
Ausserdem 2 Treiber ICs. Einer ist ein ULN2003, der Andere direkt aus dem Drucker, (weis nicht was das fuer ein IC ist).

Um mit dem LPT zu Kumonizieren musste ich uebrigens ein Programm runterladen (PortTalk), da Windows XP totalle Kontrolle ueber alle I/O Ports hat.

Zum Roboter-Arm:
Den Greifer kann ich warscheinlich aus Lego baun, hab da schon ein Konzept. Dazu werd ich warscheinlich einen Aktuator von einem automatischen Tuerschloss verwenden.

Der Arm selbst wird warscheinlich aus Messing Staeben gebaut. Die kann man angeblich Loeten.
Mein groesstes Problem ist die Motoren an den Arm zu Bauen. Dazu brauch ich irgendwie Zahnraeder, keine Ahnung wo ich die herbekomm.

th1alb
06.11.2005, 23:33
Mein Lego-Konzept. Das ganze dreht sich nur um die Zahnraeder, ich weiss noch nicht wo ich sonst Zahnraeder herbekomm, ausser aus der Lego Kiste.
Also hier mal ein Bild von dem was ich uebers Wochenende gebaut hab.

http://home.arcor.de/pblach/lego.jpg
Hier ist auch noch ein Video (DivX):
Link 1 - http://home.arcor.de/pblach/lego.mpg
Link 2 - http://th1alb.ath.cx:81/robot/lego.mpg

themaddin
07.11.2005, 18:44
Korrekt! Find ich gut, was du gebaut hast!
Bei Conrad gibt es Zahnräder. Trotzdem geht nichts über lego, weil man da die zahnräder schön leicht auf die Achsen stecken kann und man erhält schnell Ergebnisse!

Jetzt brauchst du nur noch ein Poti zur Positionsbestimmung. Kleiner Tipp am Rande: Guck mal hier: http://www.lynxmotion.com/images/html/ht01.htm
Vielleicht holft es dir, ich finde es ganz interessant.

MfG
Martin

th1alb
04.12.2005, 19:26
Ok, hab jetzt schon lang nichts mehr geschrieben, hier mal ein neues update, wie die Web Cam Bild erkennung vorann geht:

(leider in englisch aber es geht eigentlich mehr um die fotos.)
http://www.livejournal.com/~th1alb/42732.html

th1alb
05.12.2005, 08:30
Algorithmus Vortsetzung:
http://www.livejournal.com/~th1alb/42800.html

Tob3
14.08.2006, 13:35
Hallo zusammen,

Ich möchte mit dem Java Media Framework Player ein LiveBild mit einer ImagingSource DMK 31AF03 erstellen (Firewire Anschluss).

Die Kamera wird in der JMF Registry gar nicht angezeigt....Kamera funktioniert!!!
Kann mir jemand weiterhelfen???

th1alb
15.08.2006, 02:00
Was hat das denn bitteschön mit meinem Roboter zu tun??!!!!

Tob3
15.08.2006, 05:52
gar nichts....aber hier war JMF schon im Gespräch dann hab ich das eben aufgegriffen bevor ich nen neuen thread aufmache!!!

th1alb
15.08.2006, 23:25
Tja, haettest lieber einen neuen thread gestartet weil " TicTacToe Roboter mit Video Erkennung und Greifarm (C++)" hat wirklich nicht das geringste mit JMF zu tun.
Anscheinend gibts noch keinen thread zum thema video und JMF also haettest du den ruhig starten koennen anstatt hier rein zu sabbern.
Ich finds eigentlich gut wenn ein thread auch moeglichst nur ein thema hat, dafuer gibts die naemlich (die threads).

Devil
16.08.2006, 10:37
das kann man ja auch netter formulieren... nicht immer gleich angepisst sein.