Forum: Mikrocontroller und Digitale Elektronik Positionserkennung


von Gerald M. (sikuro)


Lesenswert?

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

von lrep (Gast)


Lesenswert?

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.

von Gerald M. (sikuro)


Lesenswert?

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ß?

von npn (Gast)


Lesenswert?

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

von Meister (Gast)


Lesenswert?

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

von machenik (Gast)


Lesenswert?

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")?

von Wolfgang (Gast)


Lesenswert?

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.

von Gerald M. (sikuro)


Lesenswert?

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.

von asdf (Gast)


Lesenswert?

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)

von Schlumpf (Gast)


Lesenswert?

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.

von Gerald M. (sikuro)


Lesenswert?

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.

von BirgerT (Gast)


Lesenswert?

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.

von Gerald M. (sikuro)


Lesenswert?

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.

von BirgerT (Gast)


Lesenswert?

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..?!

von Schlumpf (Gast)


Lesenswert?

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.

von machenik (Gast)


Lesenswert?

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?

von Gerald M. (sikuro)


Lesenswert?

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 :/

von Schlumpf (Gast)


Lesenswert?

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 :-(

von X4U (Gast)


Lesenswert?

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.

von Gerald M. (sikuro)


Lesenswert?

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.

von X4U (Gast)


Lesenswert?

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.

von lrep (Gast)


Lesenswert?

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.

von machenik (Gast)


Lesenswert?

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?

von my2ct (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.