Hallo liebe Mitglieder, ich suche nach einer geeigneten Methode, die Position eines Legostein (z.B. mit 2x4 Noppen) auf einer 10x4 Legoplatte zu bestimmen. Man sollte Aussagen darüber treffen können, ob der Legostein so ausgerichtet ist, dass er auf die Noppen der darunterliegenden Legoplatte passt. Die Abstandsmessung mithilfe von Ultraschallsensoren bzw. optischen Sensoren ist wahrscheinlich zu ungenau. Ich habe mir überlegt, in die Legoplatte Photodioden in einem bestimmten Raster einzubauen. Wenn ein Legostein mit seiner Kante die Photodiode abdeckt, so ändert sich die Spannung und man könnte so bei vielen Photodioden die Position bestimmen. Die Frage ist, wie man die viele Photodioden alle an einen Mikrocontroller anschließen kann? Hättet ihr eventuell eine bessere Idee, die nicht sehr aufwendig ist (z.B. mithilfe einer Kamera und Bildauswertung) Vielen Dank
Gerald Müller schrieb: > (z.B. mithilfe einer Kamera und Bildauswertung) Genau so. Raspberry Pi nehmen und die dazu erhältliche Kamera mit 5 Megapixels.
Danke für die schnelle Antwort. Die Kamera sollte dann aber auf eine mobile 4x10 cm Platte passen und von dort seitlich Aufnahmen machen. Gibt es andere Kamera in der Größe? Kann man die Kamera über einen Mikrocontroller steuern und die Daten per Bluetooth an einen Raspberry Pi zur Auswertung schicken? Oder sind die Datenmengen zu groß?
Gerald Müller schrieb: > Danke für die schnelle Antwort. > > Die Kamera sollte dann aber auf eine mobile 4x10 cm Platte passen und > von dort seitlich Aufnahmen machen. Gibt es andere Kamera in der Größe? > Kann man die Kamera über einen Mikrocontroller steuern und die Daten per > Bluetooth an einen Raspberry Pi zur Auswertung schicken? Oder sind die > Datenmengen zu groß? Die Kamera ist direkt für den Raspi vorgesehen. Hier mal ein Link, damit du eine Vorstellung von der Größe hast: http://www.sainstore.de/raspberry-pi-camera-module-night-version-board-5mp-webcam-video-1080p-720p.html?kpid=774_german&gclid=CJDV5N21hcYCFQXJtAodNQYAxQ
Hinsichtlich der Realisierung mit einem Mikrocontroller: Du kannst das STM32F4DISCOVERY mit dem Erweiterungsboard DIS BB verwenden. Dafür gibts ne Kamera. Ist sicher nicht so fix wie ein RPi, aber für die Anwendung reicht es
Also 40 "Pixel", die melden, wenn's passt. Wirklich 2D oder reicht 1D, und du brauchst eigentlich nur 10 Messpunkte? Was ist das Raster? 5 mm? Definiere "passt". Muss es beruehrungslos sein? Wie schnell muss es gehen (kannst du abtasten?)? Brauchst du die Position des Steines oder nur die Info, ob der Stein im Raster liegt (Phasenlage Schallwellenecho, optischer oder mechanischer "Kamm")?
Gerald Müller schrieb: > Die Frage ist, wie man die viele Photodioden alle an einen Mikrocontroller > anschließen kann? Normale Kameras lösen das Problem mit den vielen Dioden an einem Rechner oft, indem die Diodensignale nacheinander über nur eine Leitung an den Verstärker/DAC und weiter an den Prozessor geführt werden.
machenik schrieb: > Also 40 "Pixel", die melden, wenn's passt. > Wirklich 2D oder reicht 1D, und du brauchst eigentlich nur 10 > Messpunkte? > Was ist das Raster? 5 mm? Definiere "passt". > Muss es beruehrungslos sein? > Wie schnell muss es gehen (kannst du abtasten?)? > Brauchst du die Position des Steines oder nur die Info, ob der Stein im > Raster liegt (Phasenlage Schallwellenecho, optischer oder mechanischer > "Kamm")? Die inneren "Pixel" kann man weglassen, denn alle Legosteine besitzen eine Breite von 4 Noppen und können auch nur über die gesamte Breite der Legoplatte plaziert werden. Man benötigt nur die äußeren Pixel (also 24). Das Raster ist wie bei den Legosteinen der Abstand der Noppen (8mm). "Passt" bedeutet, dass sich der Legostein bei eienr vertikalen Druckkraft mit der darunterliegenden Platte verbindet ohne in horizontale Richtung verschoben werden zu müssen Es sollte berührungslos sein. Die Messung sollte innerhaln von 5 Sekunden stattfinden. Ich brauche die Information, ob der Legostein beispielsweise auf den letzten beiden Noppenreihen platziert ist und ob er im Raster liegt.
Mit der Kamera von oben auf die Platte schauen. Wegen der perspektivischen Verzerrung haben die Noppen der Steine im Bild einen etwas groesseren Durchmesser als die der Platte. Die Kreise muessen zueinander ins Raster passen. Kreiserkennung mit Kantendetektion und ggf. Filterung mit einem gegebenen Muster. (geht mit OpenCV das fuer den RPi verfuegbar ist)
Die Legosteine sollen also automatisch auf die Platte gedrückt werden und du suchst jetzt eine Lösung, die verhindert, dass die Mechanik die Legosteine versetzt platziert und versucht, mit Gewalt aufzudrücken. Richtig? Mit der Kamera stelle ich es mir nicht so einfach vor. Du schreibst, dass die Kamera dann seitliche Aufnahmen machen soll. Dann hast du aber Parallaxe-Effekte, die dann sogar bei jeder Position auf der Platte unterschiedlich stark ausgeprägt sind. Das müsste alles rausgerechnet werden. Wenn o.g. Annahme dein Problem wiedergeben, wäre es da nicht vielleicht ein anderer möglicher Ansatz, die Positionierung deines Greifers zu überwachen und diesen in einem absoluten Verhältnis zur Platte zu positionieren? So ne Art xy-Tisch, auf dem die Platte liegt und durch eine Referenzfahrt wird, die Position der Platte auf dem Tisch ermittelt und dann kann die absolute Position der Noppen einfach errechnet werden.
Schlumpf schrieb: > Die Legosteine sollen also automatisch auf die Platte gedrückt werden > und du suchst jetzt eine Lösung, die verhindert, dass die Mechanik die > Legosteine versetzt platziert und versucht, mit Gewalt aufzudrücken. > Richtig? > > Mit der Kamera stelle ich es mir nicht so einfach vor. > Du schreibst, dass die Kamera dann seitliche Aufnahmen machen soll. > Dann hast du aber Parallaxe-Effekte, die dann sogar bei jeder Position > auf der Platte unterschiedlich stark ausgeprägt sind. > Das müsste alles rausgerechnet werden. > > Wenn o.g. Annahme dein Problem wiedergeben, wäre es da nicht vielleicht > ein anderer möglicher Ansatz, die Positionierung deines Greifers zu > überwachen und diesen in einem absoluten Verhältnis zur Platte zu > positionieren? > So ne Art xy-Tisch, auf dem die Platte liegt und durch eine > Referenzfahrt wird, die Position der Platte auf dem Tisch ermittelt und > dann kann die absolute Position der Noppen einfach errechnet werden. Die Annahme ist richtig. Die Legosteine werden in einem weiteren Schritt automatisch auf die Platte gedrückt. Das Problem ist, dass der Greifer schon existiert und sehr ungenau arbeitet. Daher lässt sich das nicht viel machen. Ich möchte nur testen können, ob der Greifer die Steine richtig setzt. Eine Aufnahme von oben ist leider nicht möglich, da von oben der Greifer die Steine platziert.
Ist der Greifer auch Lego, Fischer, Arexx oder Metallbaukasten? Wird der Greifer über Servos positioniert (Roboterarm)? Wie wird der Greifer gesteuert (LEGO, EV3)? Könnte beim Helfen echt helfen, wenn man mal ein Foto vom bestehenden Aufbau sieht.. Wenn der Greifer ungenau positioniert, könnte man von zwei Seiten einen "Anschlag" (Zahnstange über Schrittmotor verschoben) an der richtigen Stelle positionieren und dann den Greifer in den Anschlag fahren lassen. Motorstrom Messung der Greiferpositionierung, wenn Strom ansteigt, Motor abschalten, Greifer senken.. Oder den Greifer so umbauen, dass er genau positioniert werden kann.
Das Ziel des Projektes ist es, ein geeignete Methode zur Bestimmung der Legosteinposition zu finden. Wie sich eine falsche Positionierung schon von Anfang an vermeiden lässt, soll hier nicht betrachtet werden.
Gerald Müller schrieb: > Das Ziel des Projektes ist es, ein geeignete Methode zur Bestimmung der > Legosteinposition zu finden. Wie sich eine falsche Positionierung schon > von Anfang an vermeiden lässt, soll hier nicht betrachtet werden. Also ist der kleine Stein schon auf der Platte montiert? Ist dann nur der Abstand von einer Seite aus zu "messen" (Stein sitzt 6 Noppen von der linken Seite) oder aus beiden Richtungen? Soll auch bestimmt werden, ob er 0 oder um 90 Grad gedreht ist? Das liesse sich mit einem Fühler und zwei Endschalter auf einer drehbaren Platte bewerkstelligen. Die Drehung/der Drehwinkel der Getriebemotor angetriebenen Platte wird per "Odometrie" erfasst. Drehung ab Startposition in einer Richtung bis Endschalter kommt, dann Drehung in entgegen gesetzter Richtung bis Endschalter kommt. Das Teil muss dann so zur Platte positioniert sein, dass zu jeder möglichen Steinposition unterschiedliche Winkel "ertastet" werden können (also z.Bsp. nicht im 45 Grad Winkel zum Noppenmuster). Eine mögliche Bauanleitung für die Endschalter und Fühler Kombination findest Du, wenn Du dir die Bauanleitung zum "Nibobee" ansiehst. Aber wahrscheinlich alles zu aufwändig..?!
Hast du schon ermittelt, welcher Versatz (translatorisch und totatrosich) maximal zulässg ist, dass der Stein noch auf die Noppen rutscht? Schätze mal, dass der sehr klein ist. Wenn dieser maximale Versatz kleiner ist als ein Pixel nach verzerrter Position, dann ist deine Positionserfassung ungenauer, als erforderlich. Und wenn dein Antrieb so toleranzbehaftet ist, dass er die nötige Position gar nicht so genau anfahren kann, wie erforderlich wäre, dann wäre das das nächste Problem Ich vermute mal, dass es mit einem "lapprigen" Antrieb und einer verzerrten und verpixelten Positionserfassung nur extrem schwer sein wird, überhaupt einen Stein zu platzieren.
Gerald Müller schrieb: > Die inneren "Pixel" kann man weglassen, denn alle Legosteine besitzen > eine Breite von 4 Noppen und können auch nur über die gesamte Breite der > Legoplatte plaziert werden. Man benötigt nur die äußeren Pixel (also > 24). 10 Lichtschranken/taster (Z-Q) + 1 Lichtsensor oder 2 Lichtschranken/taster ZYXWVUTSRQ BB <- P 01234567BB 01A34567BB 01A34567BB 01A3456789 A <- O Mit Massnahmen gg. Fremdlicht und Kanalstoerungen wird es dann schon wieder so aufwendig, dass ich mir vorher analoge IR-Distanzsensoren angucken wuerde. Schattenwurf auf CCD. Wenige Sensoren und geschaltete Beleuchtung. Oder halt OpenCV und Konsorten. Welche Toleranz zum 8 mm Raster gibt es denn fuer das Zusammenstecken? Deine Grundplatte kann wohl nicht transparent sein?
machenik schrieb: > Gerald Müller schrieb: >> Die inneren "Pixel" kann man weglassen, denn alle Legosteine besitzen >> eine Breite von 4 Noppen und können auch nur über die gesamte Breite der >> Legoplatte plaziert werden. Man benötigt nur die äußeren Pixel (also >> 24). > > Mit Massnahmen gg. Fremdlicht und Kanalstoerungen wird es dann schon > wieder so aufwendig, dass ich mir vorher analoge IR-Distanzsensoren > angucken wuerde. > Schattenwurf auf CCD. Wenige Sensoren und geschaltete Beleuchtung. > Oder halt OpenCV und Konsorten. > > Welche Toleranz zum 8 mm Raster gibt es denn fuer das Zusammenstecken? > > Deine Grundplatte kann wohl nicht transparent sein? Was gibt es denn für präzise Distanzsensoren, die relativ kompakt und preisgünstig sind? Das mit der Toleranz ist so ne Sache. Sie ist schwer zu messen, aber man kann sagen dass sie minimal ist :/
Gerald Müller schrieb: > Sie ist schwer > zu messen, aber man kann sagen dass sie minimal ist :/ Das befürchte ich eben auch.. Was die menschliche Hand durch leichtes Hin- und Herbewegen bis es "passt", ganz locker hinbekommt, könnte für eine dumme Maschine zur Herausforderung werden :-(
Gerald Müller schrieb: > Die Abstandsmessung mithilfe von Ultraschallsensoren bzw. optischen Sensoren > ist wahrscheinlich zu ungenau. Aber am einfachsten. Vom Prinzip her brauchst du ja nur eine Lichtschranke (Laserstrahl) die misst ob der Stein eine Position kleiner der Noppenhöhe der Platte hat. Dann sitzt er richtig und muss nur draufgedrückt werden. Wenn du von oben messen kannst geht das sehr genau mit dem Triangulationsverfahren.
X4U schrieb: > Gerald Müller schrieb: >> Die Abstandsmessung mithilfe von Ultraschallsensoren bzw. optischen Sensoren >> ist wahrscheinlich zu ungenau. > > Aber am einfachsten. Vom Prinzip her brauchst du ja nur eine > Lichtschranke (Laserstrahl) die misst ob der Stein eine Position kleiner > der Noppenhöhe der Platte hat. Dann sitzt er richtig und muss nur > draufgedrückt werden. > > Wenn du von oben messen kannst geht das sehr genau mit dem > Triangulationsverfahren. Wenn ich es richtig verstanden habe, dann soll ich für jede Noppenreihe eine Lichtschranke aufbauen. Wird der Lichtstrahl unterbrochen, so muss der Legostein falsch positioniert sein? Ich frage mich, ob es möglich ist z.b. 10 lichtschranken auf so engem raum zu platzieren und die sich nicht gegenseitig beeinflussen.
Gerald Müller schrieb: > Wenn ich es richtig verstanden habe, dann soll ich für jede Noppenreihe > eine Lichtschranke aufbauen. Wird der Lichtstrahl unterbrochen, so muss > der Legostein falsch positioniert sein? Ich frage mich, ob es möglich > ist z.b. 10 lichtschranken auf so engem raum zu platzieren und die sich > nicht gegenseitig beeinflussen. Mit Laserdioden (Laserpointern) könnte das gehen. Bei der Trianglation ist es anders. Wenn du von oben messen kannst kannst du den Abstand zur Platte und den zum Stein messen. Das Delta wäre die good/bad Position.
Die Kamera des RPi hat genug Pixel, um mit Hilfe eines Spiegels den Stein gleichzeitig von verschiedenen Seiten anzuschauen. Wenn du das nicht hinbekommst, dann schmier einfach Sekundenkleber an den Stein und lass ihn ungefähr in die Mitte der Basisplatte fallen. Kurz warten, - fest.
Gerald Müller schrieb: > dann soll ich Du sollst gar nichts sollen. Alles nur Ideen, ins Internet geworfen. Kannst dir was aussuchen :-) Und hoffen, dass es funktioniert.. > ist z.b. 10 lichtschranken auf so engem raum zu platzieren und die sich > nicht gegenseitig beeinflussen. Ein "Lichtband" annaehernd paralleler "Strahlen" (Kollimator, basteln oder aus einem Projektor?) versorgt viele Detektoren, die nicht unbedingt direkt nebeneinander Platz finden muessen (schraeg versetzt). Beim Einrasten deiner Steine im Schlackergreifer hilft evtl. ein Vibrationsmotor (bei konstanter, leichter Andruck-Kraft)? Gerald Müller schrieb: > Was gibt es denn für präzise Distanzsensoren, die relativ kompakt und > preisgünstig sind? Weiss ich nicht. Hast du schon mal geguckt? Und - was gibt's so?
Jedes Kleinkind lernt nach ersten Fehlversuchen mit direkter Positionierung, dass es günstiger ist, den neuen Stein mit mäßiger Kraft aufzusetzen, dann hin und her zu bewegen und wenn er merklich nachgibt, kräftig runter zu drücken.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.