folgendes Problem:
Wir suchen nach einer Möglichkeit, die Position (als
XY-Koordinate) eines 'Gerätes' auf einem 3m x 3m großen
Tisch zu ermitteln. Das ganze soll möglichst drahtlos und
mit einer Genauigkeit von 0.5 mm funktionieren. Kosten
spielen (erstmal) keine Rolle.
Lösungen über Drähte bzw. Schnüre sind zu ungenau (und
natürlich *nicht* drahtlos), ein Riesendigitalisiertablett
schlecht umsetzbar.
Laser, Ultraschall ... was gibt's sonst noch? Hat jemand
Ideen?
Wolfgang
Funk wird (mit Ausnahme vielleicht einer *sündteuren*
mm-Wellen Lösung, sprich xy GHz mit geschätzt x>=2) zu
ungenau sein, dto. Ultraschall.
Denkbar wäre z.B. ein Fotodiodenfeld, dass von einem
modulierten und elektronisch ablenkbaren Laser beim
Scan getroffen wird und dann ein Signal abgibt
(z.B. via IR-Diode, induktiv oder "normalem" Funk).
Gruss Oliver
--
Oliver Bartels + Erding, Germany + obar...@bartels.de
http://www.bartels.de + Phone: +49-8122-9729-0 Fax: -10
Siko
http://www.sikoproducts.com/mli/mli.html
Olaf, bleibt nur noch die Temperaturkonstanz, Schultz
--
Olaf Schultz TU Hamburg Harburg, AB 5-03
Denickestraße 15 21073 Hamburg-Harburg
Tel.: 040/42878 2516 email: O.Sc...@tu-harburg.de
http://experte.kt2.tu-harburg.de http://www.tu-harburg.de/~kt2os
Hmm, interessante Aufgabenstellung. Die Genauigkeit koennte
man mit Laserabstandsmessern hinkriegen. Jedoch muss man
bei der Definition der Position sicherlich auch die Form
und die Drehung des 'Geraetes' beruecksichtigen.
Denkbar waeren auch Kameras, welche ueber Markierungspunkte
und einem Bildverarbeitungssystem die Position ermitteln,
jedoch sehe ich dort Probleme bei der Genauigkeit.
Erzaehl doch mal mehr. Kann das Objekt mit in das Messsystem
einbezogen werden, also z.B. Reflektoren, Transmitter o.a.
enthalten? Was hat es denn fuer eine Form? Wieviel Zeit hat
man zur Positionsermittlung?
eddy
müsste zu einem Laser-Triangulations-System noch einen Bericht aus
"Spectrum der Wissenschaft" irgendwo auf meiner Festplatte liegen haben.
Hab den mal für jemand eingescannt.
Falls Du interesse hast, kann ich Dir den mailen. War mal in einem
Sonderheft von Spectrum der Wissenschaft - "Roboter erobern die Welt"
oder so ähnlich.
Gruss Andreas
konnte leider nicht auf das Original-Posting antworten, mein News-Server
hat es wieder vermurkst
>
> >Wir suchen nach einer Möglichkeit, die Position (als
> >XY-Koordinate) eines 'Gerätes' auf einem 3m x 3m großen
> >Tisch zu ermitteln. Das ganze soll möglichst drahtlos und
> Wolfgang Schrader wrote:
> > Wir suchen nach einer Möglichkeit, die Position (als
> > XY-Koordinate) eines 'Gerätes' auf einem 3m x 3m großen
> > Tisch zu ermitteln. Das ganze soll möglichst drahtlos und
> > mit einer Genauigkeit von 0.5 mm funktionieren.
>
> Hmm, interessante Aufgabenstellung. Die Genauigkeit koennte
> man mit Laserabstandsmessern hinkriegen. Jedoch muss man
> bei der Definition der Position sicherlich auch die Form
> und die Drehung des 'Geraetes' beruecksichtigen.
>
> Denkbar waeren auch Kameras, welche ueber Markierungspunkte
> und einem Bildverarbeitungssystem die Position ermitteln,
> jedoch sehe ich dort Probleme bei der Genauigkeit.
>
> Erzaehl doch mal mehr. Kann das Objekt mit in das Messsystem
> einbezogen werden, also z.B. Reflektoren, Transmitter o.a.
> enthalten? Was hat es denn fuer eine Form? Wieviel Zeit hat
> man zur Positionsermittlung?
>
> eddy
Hallo Eddy,
das Objekt ist ein Roboter, der da durch die Gegend juckelt. An
dem kann man so ziemlich alles anbauen, was nötig ist.
In meiner Frage hatte ich dir Drehung vergessen (hast Du ja
schon angemerkt!), die müßte auch erkannt werden.
Zeit zur Positionsermittlung: Ich schätze mal, so 3 bis 5
Messungen pro Sekunde reichen ...
Wolfgang
--
_____________________________________________________________
NewsGroups Suchen, lesen, schreiben mit http://netnews.web.de
> Oliver Bartels wrote:
> >
> > Hallo,
> > On Tue, 19 Sep 2000 12:44:13 +0200, Wolfgang Schrader <W...@antrax.de>
> > wrote:
> > >Wir suchen nach einer Möglichkeit, die Position (als
> > >XY-Koordinate) eines 'Gerätes' auf einem 3m x 3m großen
> > >Tisch zu ermitteln. Das ganze soll möglichst drahtlos und
> > >mit einer Genauigkeit von 0.5 mm funktionieren. Kosten
> > >spielen (erstmal) keine Rolle.
> Wenn's linear sein darf:
>
> Siko
> http://www.sikoproducts.com/mli/mli.html
>
>
Hi Olaf,
im Prinzip gut (Link habe ich gleich gebookmarkt), aber ich kann mit dem
Gerät (Roboter) nicht nur am Rand bzw. am Magnetband entlangfahren ... ich
muß auch in die Mitte des Tisches fahren können
Wolfgang
Wolfgang Schrader schrieb:
Wir suchen nach einer Möglichkeit, die Position (als
> XY-Koordinate) eines 'Gerätes' auf einem 3m x 3m großen
> Tisch zu ermitteln. Das ganze soll möglichst drahtlos und
> mit einer Genauigkeit von 0.5 mm funktionieren. Kosten
> spielen (erstmal) keine Rolle.
> Laser, Ultraschall ... was gibt's sonst noch? Hat jemand
> Ideen?
Ich weiß nicht, ob das eine Lösung für dich ist, aber du hast in einem
anderen Posting geschrieben, daß man in den Roboter alles einbauen kann.
Was hälst du davon einfach eine Art "Computermaus" am Boden des Roboters
zu befestigen?
Ein Microcontroller im Roboter kann dann die Bewegung auswerten und an
eine "Basisstation" per Funk/Infrarot senden.
Mit dieser Methode erhälst du also den Abstand relativ zum
Ausgangspunkt.
Wenn es möglich ist, daß der Roboter immer von zb linksunten startet,
dann kannst du das als den Koordinatenursprung betrachten...
Billiger geht es nicht und es erfüllt seinen Zweck.
Aber ob es wirklich funktioniert weiß ich nicht, die Idee ist mir ganz
spontan gekommen...
ciao,
Klaus
: folgendes Problem:
: Wir suchen nach einer Möglichkeit, die Position (als
: XY-Koordinate) eines 'Gerätes' auf einem 3m x 3m großen
: Tisch zu ermitteln. Das ganze soll möglichst drahtlos und
: mit einer Genauigkeit von 0.5 mm funktionieren. Kosten
: spielen (erstmal) keine Rolle.
: Lösungen über Drähte bzw. Schnüre sind zu ungenau (und
: natürlich *nicht* drahtlos), ein Riesendigitalisiertablett
: schlecht umsetzbar.
: Laser, Ultraschall ... was gibt's sonst noch? Hat jemand
: Ideen?
0.5 mm auf 3 m = 1/6000. Das heisst, das ganze muss also besser als 12 bit
sein. Weder mit Licht noch mit Ultraschall hast Du bei einer Laufzeitmessung
eine Chance, ausser Du arbeitest mit Ultraschall im MHz Bereich. Wie waere
es, auf den Roboter eine Leuchtdiode zu schnallen, die nach oben strahlt,
und ueber eine _gute_ Optik auf eine _grosse_ PSD Diode strahlt. PSD
_position sentitive device) Dioden sind Photodioden, die die Bestimmung des
Ortes einen Lichtpunktes in X und Y ermoeglichen. Ob sie allerdings die
geforderte Genauigkeit gaben, weiss ich nicht. Suche mal auf
z.B. www.google.com nach "PSD Diode".Ein CCD Chip ist zwar
einfacher zu handhaben, aber dann sollte er doch etwa gleichviele Punkte in
jeder Richtung haben, wie Deine Messanforderung, und ein 4096x4096 Chip
duerfte recht teuer sein...
Bye
--
Uwe Bonnes b...@elektron.ikp.physik.tu-darmstadt.de
Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
>Laser, Ultraschall ... was gibt's sonst noch? Hat jemand
>Ideen?
Idee, nun ja:
Wenn du ähnlich wie Sateliten in 3 oder 4 Ecken deines Tisches
Fototransistoren aufstellst, in deinem Roboter eine mit konstanter
Frequenz drehende Laserdiode, die einen Strich macht, erzeugst,
dann kannst du über die laufzeit und die 3 Winkel extern deine
Roboterposition berechnen und per Funk zum Roboter übertragen.
Sowas haben mal schlaue Leute, ich glaub von der UNI Düsseldorf
entwickelt.
Werner
Best regards,
Werner
remove .XXX in e-mail-adress
* Opinions expressed herein are my own and may
* not represent those of my employer
Uwe Bonnes wrote:
>
> 0.5 mm auf 3 m = 1/6000. Das heisst, das ganze muss also besser als 12 bit
> sein. Weder mit Licht noch mit Ultraschall hast Du bei einer Laufzeitmessung
> eine Chance, ausser Du arbeitest mit Ultraschall im MHz Bereich. Wie waere
> es, auf den Roboter eine Leuchtdiode zu schnallen, die nach oben strahlt,
> und ueber eine _gute_ Optik auf eine _grosse_ PSD Diode strahlt. PSD
> _position sentitive device) Dioden sind Photodioden, die die Bestimmung des
> Ortes einen Lichtpunktes in X und Y ermoeglichen. Ob sie allerdings die
> geforderte Genauigkeit gaben, weiss ich nicht. Suche mal auf
> z.B. www.google.com nach "PSD Diode".Ein CCD Chip ist zwar
> einfacher zu handhaben, aber dann sollte er doch etwa gleichviele Punkte in
> jeder Richtung haben, wie Deine Messanforderung, und ein 4096x4096 Chip
> duerfte recht teuer sein...
1. Da Preis ja (erstmal) keine Rolle zu spielen scheint: Aktuelle
(computerfernsteuerbare) Megapixelkamera an der Decke montieren, IR-Filter davor
und auf dem Roboter strahlt eine IR-LED nach oben. Die Kamera macht dann alle
paar Sekunden ein Bild und liefert
ein fast schwarzes Bitmap. Nur an der Stelle, wo die IR-LED nach oben leuchtet
ist ein heller Punkt. Den kann man dann in dem BMP mit ner kleinen Software
schnell finden und man hat X und Y. (ev. braucht man noch ein
Weitwinkelobjetiv).
Muesste man nur mal rechnen, ob die Aufloesung der verfuegbaren Kameras schon
reicht.
2. Vielleicht kann man aehnliches auch mit 2 CCD-Zeilen + Optik erreichen (wie
sie in Scannern drin sind). Die haben ev. die ausreichende Aufloesung (600dpi
auf 21cm sind knapp 5000 Pixel).
3. Oder: Man nehme einen Laser+X/Y Spiegel, der das Gebiet mit X-Y-Linien
abtastet. Auf dem Robo einen Empfänger. Immer wenn der Empfänger den Laserstrahl
detektiert, dann die aktuelle Spiegelposition merken -> ist X oder Y. Der Laser
kann sogar seitlich (und sonstwie) montiert sein - man muss halt vorher nur ein
paar Positionen kalibrieren und die Zwischenpositionen nterpolieren.
Ev. den Laser noch modulieren und den Empfänger mit nem Filter versehen, damit
der nicht auf Fremdlichtimpulse reagiert.
(Idee 3 gefaellt mir selbst am besten :-)
Matthias
..[...]...
>
>Wir suchen nach einer Möglichkeit, die Position (als
>XY-Koordinate) eines 'Gerätes' auf einem 3m x 3m großen
Das sind 3000 mm x 3000 mm
>Tisch zu ermitteln. Das ganze soll möglichst drahtlos und
>mit einer Genauigkeit von 0.5 mm funktionieren.
Das waeren dann 6000 x 6000 Pixel...
>Kosten spielen (erstmal) keine Rolle.
>
Sag das nie!!!!
>Lösungen über Drähte bzw. Schnüre sind zu ungenau (und
>natürlich *nicht* drahtlos), ein Riesendigitalisiertablett
>schlecht umsetzbar.
>
Das Diditalisiertablet waere was oder eine optische Maus wie bei
Sun.
>Laser, Ultraschall ... was gibt's sonst noch? Hat jemand
>Ideen?
>
Hmmm, also: Megapixelkameras sind wohl arg teuer. Aber nehme ein bil-
liges Verfahren zur Grobnavigation (zB eine 300 x 300 Pixel Kamera),
bestimme damit den Bereich des Robies auf einige cm genau und zaehle
ansonsten Strichlein wie bei der optischen Maus von Sun. Vorteil: Das
Verfahren ist sehr billig und kann angepasst werden. Der Teil der
Grobnavigation kann auch durch andere Aufgaben uebernommen werden.
Bei einer einfachen Aufnahme einer LED kannst Du dann die lateralen
Histogramme der Helligkeit auswerten und damit die Position u.u.
genauer als ein Pixel bestimmen. Nehme die relativen Maxima der later-
alen Histogramme (Summe der Helligkeitswerte in Zeilen und Spalten)
und dann die beiden Nachbarpunkte. Damit solltest Du dann eine genaue
Positionsbestimmung hinbekommen. Setze eine Cosinus fuer die Funktion
an und bestimme experimentell die mittlere Breite oder Halbwertsbreite.
Dann jagst Du einfach eine Faltung einer Halbwelle mit der Position X
und einer Schrittweite kleiner als 1 ueber die jeweiligen lateralen
Histogramme. Mit so was koenntest Du auch bei einer 3000 x 3000 Kamera
weit genauer als 1 mm rechnen. Dann haettest Du nur einen Schritt.
MfG
Uwe Borchert
Besonders interessant waere die optische Microsoft Maus, die auf
(fast) jedem Untergrund arbeiten soll. Vielleicht bekommt die die
Drehungen so gut mit, das 0.5mm erreichbar sind. Und billig
ist das Verfahren auch noch, mit Standard Interface...
--
Manfred Winterhoff, mawin at gmx.net, remove NOSPAM if replying
homepage & linklist: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.e-online.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
>Wir suchen nach einer Möglichkeit, die Position (als
>XY-Koordinate) eines 'Gerätes' auf einem 3m x 3m großen
>Tisch zu ermitteln. Das ganze soll möglichst drahtlos und
>mit einer Genauigkeit von 0.5 mm funktionieren. Kosten
>spielen (erstmal) keine Rolle.
>Lösungen über Drähte bzw. Schnüre sind zu ungenau (und
>natürlich *nicht* drahtlos), ein Riesendigitalisiertablett
>schlecht umsetzbar.
Triangulation? Du baust an die Ecken des Tischs Lichtquellen als
"Leuchttuerme" - am besten moduliertes IR. Dein "Geraet" kriegt
obendrauf einen Detektor, der aus einer ordentlichen Optik und einem
Schrittmotor besteht und wie eine Radarantenne rotiert. Der Rest ist
Mathematik: aus den Maxima der jeweiligen Empfangsamplitude bestimmst du
den Winkel zum entsprechenden Sender.
Wenn die Lichtquellen perfekt fokussiert sind (Laserpointer), haengt die
Aufloesung noch am ehesten von der Positioniergenauigkeit des Motors ab.
Wenn Geld ernsthaft keine Rolle spielt, kannst du natuerlich ebenso
viele Detektoren wie Lichtquellen spendieren, von denen jeder immer auf
"sein" Ziel nachgefuehrt wird. Bei der Bundeswehr haben sie sowas wohl
auch in gross :-)
Gruss
Michael
>Wir suchen nach einer Möglichkeit, die Position (als
>XY-Koordinate) eines 'Gerätes' auf einem 3m x 3m großen
>Tisch zu ermitteln. Das ganze soll möglichst drahtlos und
>mit einer Genauigkeit von 0.5 mm funktionieren. Kosten
>spielen (erstmal) keine Rolle.
Hmm... Da mußt du wohl erstmal festlegen, was du mit "Position" meinst.
Sobald nämlich das Objekt eine Ausdehnung oberhalb der gewünschten
Meßgenauigkeit hat und das Objekt nicht rotationssymmetrisch ist, ist
das nicht mehr unwichtig.
MaWin schrieb:
> Besonders interessant waere die optische Microsoft Maus, die auf
> (fast) jedem Untergrund arbeiten soll.
Brauchen die nicht einen gerasterten Untergrund? Wie kann eine optische
maus auf zb
weißem Untergrund arbeiten?
>Vielleicht bekommt die die
> Drehungen so gut mit, das 0.5mm erreichbar sind.
Wenn der Roboter rund ist und er dreht sich auf der Stelle, dann wird
sich die
Position wohl nicht verändern... Man braucht sich also keine Sorgen um
die Genauigkeit
der Maus zu machen.
Ist der Roboter allerding rechteckig, dann sollte es genügen die Maus
nicht in der Mitte
des Gerätes zu montieren.
>Und billig
> ist das Verfahren auch noch, mit Standard Interface...
Ebend ;)
ciao,
Klaus
Manuel Buff wrote:
> solltest du optisch machen. mit kamera und bilderkenung. sieh mal nach unter www.
> heitec.de
> zum beispiel. ich kenne zwar die homepage nicht, aber die firma baut solche
> systeme.
Homepage zeigt wenig von kameras. :(
Anderesproblem dabei: Damit kann man zwar Formenoder Makroaufnahmen
machen,
aber doch nicht auf 3mX3m 0,5 mm auflösen.. keine Chance.
Aber das mit den Laser Abstandsmessernfind ich gut.
man braucht doch sicher keine Winkelbestimmung, da man den aus mehreren
Abständen -vorne,hinten,rechts,links- berechnenkann.
Also vier Abstandsmesser. Mh.. oder reichen 3?
MfG,
Henning
Klaus Drechsler schrieb:
> > Besonders interessant waere die optische Microsoft Maus, die auf
> > (fast) jedem Untergrund arbeiten soll.
>
> Brauchen die nicht einen gerasterten Untergrund? Wie kann eine optische
> maus auf zb
> weißem Untergrund arbeiten?
AFAIK ist z.B. Papier für den Zweck "gerastert" genug.
Mit einer absolut gleichmäßigen Fläche ginge es natürlich nicht.
>
> >Vielleicht bekommt die die
> > Drehungen so gut mit, das 0.5mm erreichbar sind.
>
> Wenn der Roboter rund ist und er dreht sich auf der Stelle, dann wird
> sich die
> Position wohl nicht verändern... Man braucht sich also keine Sorgen um
> die Genauigkeit
> der Maus zu machen.
Hmmm... dann muß man aber zusätzlich die Richtung feststellen, wenn
"vorwärts" auf einmal nicht mehr Norden ist!
--
Andreas
Um Rekursion zu verstehen, muss man erst mal Rekursion
verstehen.
>Laser, Ultraschall ... was gibt's sonst noch? Hat jemand
>Ideen?
Frag doch mal einen Hersteller von digitalen Messchiebern.
BTW: Die Dinger find ich sowieso beeindruckend. Hohe Aufloesung, sehr
schnell und erstaunlich geringer Stromverbrauch.
Olaf
--
D.i.e.s.S. (K.)
Andreas Koch schrieb:
> Hmmm... dann muß man aber zusätzlich die Richtung feststellen, wenn
> "vorwärts" auf einmal nicht mehr Norden ist!
Stimmt. Dann sollte man die Maus in jedem Fall nicht in der Mitte
montieren, sondern zb "vorne".
Dann muß man noch eine Routine schreiben, die "weiß" wann man sich auf
der Stelle dreht (sollte kein Problem sein eine derartige Logik zu
entwerfen) und entsprechend nur die "Wohin-Kuck-Ich-Grad"-Variable
aktualisieren und nicht die "Wo-Bin-Ich-Grad"-Variable.
Letztere aktualisiert man nur, wenn man sich wirklich bewegt.
Hey, langsam bin ich auf den Geschmack gekommen :-) Muß mal überlegen,
wie ich meinen guten alten Z80 Prozessor noch verbauen kann :-)
ciao,
Klaus
MaWin schrieb:
> Genau das ist die Frage: Bekommt die Maus das Drehen auf der Stelle
> mit, oder ignoriert sie es ?
Wenn die Maus nicht im Zentrum des Roboters angebracht ist, dann kann
sie eine
Drehbewegung nicht ignorieren, da ja praktisch nur der Mittelpunkt im
Idealfall still steht, der Rest bewegt sich.
> Welchen Output liefert sie, wenn sie
> 1" nach vorne geschoben wird, dann 90 Grad auf der Stelle gedreht
> wird, dann 1" weiter nach vorne geschoben wird ?
Wenn man die Maus zb vorne am Roboter befesteigt und der Roboter dreht
sich auf der Stelle
(links oder rechts hast du vergessen dazu zuschreiben), dann beschreibt
der Ball oder die Optik der Maus einen Bogen (1/4 eines Kreises).
Ich habe es nicht ausprobiert, aber bei dieser Bewegung ist auf jeden
Fall x und y Koordinate betroffen.
Wenn man den µC entsprechend programmiert hat, dann sollte in etwa
folgendes passieren:
0. Start bei y=0,x=0 (unten links!), WohinKuckIch=Norden
(Die Initialisierung von WohinKuckIch könnte man mit einem
elektronischen Kompaß machen!?)
1. 1" nach vorne: y=a, x=0 (dy=a,dx=0), WohinKuckIch=Norden
2. Bei der Drehung um 90 Grad nach recht soll rauskommen:
y=a, x=0 (dy=0,dx=0), WohinKuckIch=Osten
(Die Pos. des Robis verändert sich nicht (Runder Roboter), ansonsten
muß man ein paar
Konstaten addieren und subtrahieren)
Das Problem ist, daß man herausfinden muß, um wieviel Grad
man sich gedreht hat.
Drehungen bis 90 Grad:
dy dx
- - links
- + Error
+ - Error
+ + rechts
Bei Drehungen über 90 Grad teilt man die Drehung am besten in zwei
Teilschritte, also zb
erst 90 Grad, WohinKuckIch aktualisieren und dann weiterdrehen.
Wie bekommt man aber den Drehwinkel raus?
Vor der Drehung haben wir x und y gegeben und dx1 und dy1 ("die alte
Bewegung")
Nach der Drehung haben wir ein dx2 und ein dy2 gegeben ("die neue
Bewegung").
Entweder man macht sich das Leben schwer und spielt ein bisschen mit
der lin. Algebra
rum (kartesische koordinaten, polarkoordinaten, cos, sin,
vektoren...keine Ahnung was davon jetzt zum Ergebnis führt, bin
ziemlich müde) oder man macht ein paar Messungen:
Drehrichtung dx,dy Winkel
rechts a,b 90
rechts c,d 45
.
.
.
usw.
Nachteil: Wenn man einen normalen Motor benutzt, dann wird man wohl
nie zwei gleiche
Ergebnisse bekommen, also muß man auch eine gewisse Toleranz
miteinbauenn ...
Oder:
Wenn man die Drehung mit einem Schrittmotor macht, dann kann man auch
das ausnutzen, indem man
kuckt wieviel Grad ein Schritt ist (ist das irgendwo spezifiziert?)
und schon ist man alle Sorgen los :-) (Ich glaube das ist die beste
Lösung)
Oder:
Man erlaubt nur 90 Grad Drehungen. In diesem Fall müßte die Bedienung
dx=dy gelten.
Nachteil: Ein Weg von A nach B kann unnötig lang sein, wenn man B
nicht direkt ansteuern kann.
Oder, oder, oder ...
3. 1" nach vorne: y=a, x=a (dy=0,dx=a), WohinKuckIch=Osten
Mit anderen Worten:
Bewegung
WohinKuckIch vor zurück
Norden y+a y-a
Osten x+a x-a
Süden y-a y+a
Westen x-a x+a
x,y sind Variablen, indenen die absolute Position gespeichert ist
a ist die Länge der zurückgelegten Strecke (Bei 300 dpi ist a=300)
Damit sollte man auf jedenfall eine Roboter erschaffen können, der
_keine_ Kurven fahren kann.
> a) dx=300 dy=0, dx=300 dy=0
> oder
> b) dx=300 dy=0, dx=0 dy=300 ?
Man muß schon wissen in welche Richtung der Roboter kuckt und in welche
Richtung er sich
gedreht hat.
ciao,
Klaus
PS: Ich hoffe, daß das was ich geschrieben habe nicht totaler Blödsinn
ist, aber ich bin zu
müde, um nochmal darüber nachzudenken. Gute Nacht!
vielen Dank für die kreativen Ideen (bitte nicht aufhören
...).
Nach dem bisher gesagten finde ich inzwischen die Idee mit den
optischen Mäusen am besten, dicht gefolgt vom
Digitalisierbrett. Und wenn ich anfangs gesagt habe, Kosten
spielen keine Rolle ... naja, irgendwann hört der Spaß
natürlich immer auf (Gruß an Uwe).
Das Thema der Drehung dürfte dadurch erledigt werden, daß
einfach 2 optische Mäuse eingesetzt werden - müßte doch der
einfachste Weg sein oder?
Nochmal, Klasse
Wolfgang
> aber doch nicht auf 3mX3m 0,5 mm auflösen.. keine Chance.
Das wären ja ... 3000 * 2 Punkte. EIne Kamera mit einer Auflösung von
6000 * 6000 Pixel. Schwierig.
Wie sieht es eigentlich mit der Interpolation zw. Pixeln aus? Eine
5-fache Auflösungsverbesserung über mehrere Messpunkte ist doch nicht so
abwegig? Dann sind's nur noch gut 1000 Pixel benötigte Auflösung.
Nick
--
... at least I'm one of them!
> 3. Oder: Man nehme einen Laser+X/Y Spiegel, der das Gebiet mit X-Y-Linien
> abtastet. Auf dem Robo einen Empfänger. Immer wenn der Empfänger den Laserstrahl
> detektiert, dann die aktuelle Spiegelposition merken -> ist X oder Y. Der Laser
> kann sogar seitlich (und sonstwie) montiert sein - man muss halt vorher nur ein
> paar Positionen kalibrieren und die Zwischenpositionen nterpolieren.
> Ev. den Laser noch modulieren und den Empfänger mit nem Filter versehen, damit
> der nicht auf Fremdlichtimpulse reagiert.
>
Zu 1) warum nicht drei Leuchtdioden als nichtsymmetrisches
Dreieck, dann hast Du auch Lage und Richtung.
zu 3) Detektor beim Scanner, aufs "Dach" drei Triplespiegel.
Grusz Niko
Ich habe bei der Maus-Idee noch so meine Zweifel. In einem anderen
Beitrag hast Du von "Roboter" gesprochen. Welchen Antrieb hat das
Teil denn? Kann er ohne Drehung in verschiedene Richtungen fahren,
oder faehrt er "eigentlich" nur Vorwaerts und Rueckwaerts mit
der Moeglichkeit, sich dabei zu drehen? In letzterem Fall verlierst
Du von der Maus die Quer zur Fahrtrichtung gemessene Achse. Das
System mit zwei Nagern reduziert sich dann auf die Detektion der
Drehung der beiden Antriebsraeder in einem Differentialantrieb (ein
Roboter, der mit zwei Raedern rechts und links angetrieben wird und
noch ein oder zwei Stuetzraeder hat). Hier findest Du unter
dem Stichwort "dead reckoning" viel lesenswertes. Allgemeines Fazit:
auf kurzen Strecken recht brauchbar, aber fuer laengere Fahrwege
explodieren die Fehler (insbesondere ein kleiner Fehler in der
Rotation des Roboters fuehrt zu grossen Fehlern in der Position).
Hej, ich liebe es, destruktiv zu sein ;-)
David
--
Does a good farmer neglect a crop he has planted?
Does a good teacher overlook even the most humble student?
Does a good father allow a single child to starve?
Does a good programmer refuse to maintain his code?
Michael Linnemann wrote:
> Triangulation? Du baust an die Ecken des Tischs Lichtquellen als
> "Leuchttuerme" - am besten moduliertes IR.
und zwar von jedem Leuchtturm anders moduliert (wie in der echten Nautik)
> Dein "Geraet" kriegt
> obendrauf einen Detektor, der aus einer ordentlichen Optik und einem
> Schrittmotor besteht und wie eine Radarantenne rotiert. Der Rest ist
> Mathematik: aus den Maxima der jeweiligen Empfangsamplitude bestimmst du
> den Winkel zum entsprechenden Sender.
jetzt kommt Uwe zum Einsatz:
Uwe Borchert wrote:
> Bei einer einfachen Aufnahme einer LED kannst Du dann die lateralen
> Histogramme der Helligkeit auswerten und damit die Position u.u.
> genauer als ein Pixel bestimmen. Nehme die relativen Maxima der later-
> alen Histogramme (Summe der Helligkeitswerte in Zeilen und Spalten)
> und dann die beiden Nachbarpunkte. Damit solltest Du dann eine genaue
> Positionsbestimmung hinbekommen. Setze eine Cosinus fuer die Funktion
> an und bestimme experimentell die mittlere Breite oder Halbwertsbreite.
> Dann jagst Du einfach eine Faltung einer Halbwelle mit der Position X
> und einer Schrittweite kleiner als 1 ueber die jeweiligen lateralen
> Histogramme.
>
jetzt wieder Michael:
> Wenn die Lichtquellen perfekt fokussiert sind (Laserpointer),
brauchen sie dann nicht mehr, sollten sogar Weitwinkelstrahler sein!
> haengt die
> Aufloesung noch am ehesten von der Positioniergenauigkeit des Motors ab.
ja.
> Wenn Geld ernsthaft keine Rolle spielt, kannst du natuerlich ebenso
> viele Detektoren wie Lichtquellen spendieren, von denen jeder immer auf
> "sein" Ziel nachgefuehrt wird.
brauchen wir jetzt nicht mehr, wir erkennen die Sender ja an der Modulation
> Bei der Bundeswehr haben sie sowas wohl
> auch in gross :-)
oder sie machen es genau so, wie ich es jetzt gerade beschrieben habe...
mit schon nur zwei empfangenen Lichtquellen kannst Du die Position
triangulieren; mit der dritten bekommst Du die Orientierung. Wenn Du eine
vierte Lichtquelle mit einfließen läßt, kannst Du die ganze Rechnung viermal
durchführen (bekommst auch vier Ergebnisse für x, y und phi) und kannst
daraus noch einmal interpolieren (bessere Genauigkeit). So könntest Du auch
gleich noch angeben, wie groß der Fehler in Deiner Berechnung ist; wenn er
Dir zu hoch ist, einen Referenzpunkt anfahren und dann auf direktem Weg
nochmal zurück (sollte dann genauer stimmen). Wieso? Weil Du damit einen
Moiré-Effekt (Positionsgenauigkeit der Fahrmotoren contra Winkelauflösung
der rotierenden "Radar"-Antenne) ausschließt, der Dir die Ungenauigkeit bei
der ersten Messung beschert hat.
Noch ein Wort zu der Maus-Idee von ein paar Vorrednern:
1. Eine Maus ist ein _relatives_ Positionierinstrument. Daran ändert auch
nichts, das evtl. BIOS-Routinen einen absoluten Wert liefern können (heb'
doch mal die Maus 10cm zur Seite...) - der ist nämlich auch nur aus den
Relativwerten aufsummiert. Alle Meßfehler summieren sich auf, so daß das
Ergebnis mit zunehmender Fahrtstrecke immer ungenauer wird.
2. Mäuse und Drehwinkel ist ein ganz heikles Kapitel, bei Rollball-Mäusen
ist die Bewegung des Balls bei einer Rotation um die Achse (oder auch bei
Kurven mir kleinen Radien, wie sie hier auftreten können) einfach nur
heuristisch und durch _nichts_ zu berechnen (z.B. Fussel behindert
Drehbewegung einmal, dann wieder nicht...). Optische Mäuse sind hier etwas
im Vorteil, weil der Konstrukteur sich ja was einfallen lassen mußte, um
seine Orientierungspunkte nicht zu verlieren - trotzdem weißt Du bei dem
beschriebenen Verhalten nicht, ob jetzt die Maus gedreht wurde oder einmal
in x- und einmal in y-Richtung verschoben wurde!
M.E. einzige Alternative: Maus nachbauen, mit einem 3.
Röllchen/Lichtschranke auf der z-Achse versehen => eindeutiges
Rotationssignal (ist aber ungenau)
Ok, das Problem mit der relativen Positionierung kann man damit erschlagen,
öfter mal einen Referenzpunkt anzufahren (Anschlag in Parkbox) und alle
Zähler dann auf Null zu setzen, bevor es wieder weitergeht. Wenn sich das in
Deiner Anwendung nicht verbietet...
Also wenn schon sowas in der Richtung, dann wäre es noch am sinnvollsten,
Gabellichtschranken mit Lochscheiben (bzw. direkt _richtige_ Drehgeber) an
allen Rädern anzubringen und die relative Bewegung direkt dort abzunehmen
und daraus x, y und phi auszurechnen.
--
Bernd Linsel
Siegerländer Software GmbH
de.sci.electronics FAQ: http://dse-faq.e-online.de/
> Nach dem bisher gesagten finde ich inzwischen die Idee mit den
> optischen Mäusen am besten,
siehe dazu mal mein Posting <39C87BBE...@sieg-soft.de>
> dicht gefolgt vom Digitalisierbrett.
wo gibt's denn so große _bezahlbare_ Digitalisierbretter?
> Das Thema der Drehung dürfte dadurch erledigt werden, daß
> einfach 2 optische Mäuse eingesetzt werden - müßte doch der
> einfachste Weg sein oder?
in der Tat
Aber da gib'ts noch ein Problem: Was machen wir mit den (zwei?)
Tastköpfen? Schleppkabel als Stolperfalle? Staubsaugeraufzug, aber bei
mehreren Drehungen des Roboters?
Olaf
--
Olaf Schultz TU Hamburg Harburg, AB 5-03
Denickestraße 15 21073 Hamburg-Harburg
Tel.: 040/42878 2516 email: O.Sc...@tu-harburg.de
http://experte.kt2.tu-harburg.de http://www.tu-harburg.de/~kt2os
Nick Mueller wrote:
> Wie sieht es eigentlich mit der Interpolation zw. Pixeln aus? Eine
> 5-fache Auflösungsverbesserung über mehrere Messpunkte ist doch nicht so
> abwegig? Dann sind's nur noch gut 1000 Pixel benötigte Auflösung.
?
verstehe ich nicht.
Aber man könne ein Zoomobjektiv nehmen,
und das durch einen Rechner steuern,
Dann noch ein Raster auf den Tisch zeichnen, und die
Kamera immer dem Objekt folgen lassen.
Anhand des Rasters kann man dann die Koordinaten
relativ berechnen. Sollte kein Problem sein.
So hat man auch keinen Ärker mit Unlinearitäten im Bild.
MfG,
Henning
> verstehe ich nicht.
Man kann doch zwischen 2 Pixeln interpolieren. Und zwar so:
Angenommen, ich hab 3 Pixel, die den Bereich um eine
Positionierungsmarke (scharz/weiß) erfassen. Ein Pixel ist völlig im
Schwarzen, das Mittlere irgendwo dazwischen das andere ausserhalb. Wenn
das mittlere Pixel 50% Grauwert (relativ z. schwarzen & Weißen) hat,
dann liegt die Kante genau im mittleren Pixel. Hat es 60% schwarz, dann
liegt es halt 20% näher zum schwarzen Pixel.
Nicht? :-)
Gruß,
> Ich habe bei der Maus-Idee noch so meine Zweifel.
Alles was relative Strecken misst, wird Fehler sammeln. Sinnvoll
erscheint mir nur eine Messung mit Bezug zu einer Referenz.
Professionelle Bildverarbeitung für Industrieanwendungen ist
überlicherweise
in der Lage, Positionen sub-pixel-genau (d.h. auf z.B. 1/10 pixel genau)
zu bestimmen. Das geschieht z.B. durch 2D Interpolation der
Pixel-Grauwerte.
Die bekannten Pixelmittelpunkte dienen als Stützstellen um den Grauwert
an dazwischenliegenden Punkten zu bestimmen.
Ab da kann man dann versuchen, Objekte zu erkennen und deren
Position/Orientierung
zu bestimmen.
> Aber man könne ein Zoomobjektiv nehmen,
Könnte man. Quasi einen optischen "Objekt ist in der Mitte" Detektor.
Das verlagert das Problem der geforderten Genauigkeit von der
Bildverarbeitung
(Algorithmen) in die Steuerung der Kameraposition/Zoom (Mechanik).
Ich bezweifle, dass das Problem so leichter/billiger/schneller zu lösen
ist.
> und das durch einen Rechner steuern,
> Dann noch ein Raster auf den Tisch zeichnen, und die
> Kamera immer dem Objekt folgen lassen.
> Anhand des Rasters kann man dann die Koordinaten
> relativ berechnen. Sollte kein Problem sein.
> So hat man auch keinen Ärker mit Unlinearitäten im Bild.
Nichtlinearitäten hat man immer im Bild. Erstens im Grauwertbereich
durch
Gammaverzerrung vom Chip, zweitens (und das ist das groessere Problem)
durch die Optik. Prinzipiell braucht man
überall wo gemessen wird, eine Referenz. Im Fall der Bildverarbeitung
benötigt man für absolute Messungen kalibrierte Kameras. Und eine
Kamera mit Optik (für *eine* Brennweite, also noch lange kein Zoom)
zu kalibrieren ist nicht gerade eine triviale Aufgabe.
>
> MfG,
> Henning
--
-----------------------------------------------------------------
Markus Brandner Institute of Electrical Measurement
and Measurement Signal Processing
phone: +43 316 873 7773 Graz University of Technology
fax: +43 316 873 7266 Schiessstattgasse 14B
email: bran...@emt.tu-graz.ac.at A8010 Graz, Austria
-----------------------------------------------------------------
>> Wenn Geld ernsthaft keine Rolle spielt, kannst du natuerlich ebenso
>> viele Detektoren wie Lichtquellen spendieren, von denen jeder immer auf
>> "sein" Ziel nachgefuehrt wird.
>brauchen wir jetzt nicht mehr, wir erkennen die Sender ja an der Modulation
Die Sender wollte ich eh an der Modulation erkennen; sonst fehlte ja die
Richtungsinformation ("Norden"). Mehrere Detektoren haetten aber im
Hinblick auf die Dynamik Vorteile. Wenn man einen rotierenden Detektor
hat, hat man eben auch eine Totzeit zwischen zwei Peilungen. Und das
wird natuerlich um so problematischer, je schneller der Bot ueber den
Tisch flitzt.
Der grosse Vorteil dieser "Leuchtturm"-Geschichte ist natuerlich die
_absolute_ Positionierung. Einen Ansatz mit GPS hatte ich ebenfalls im
Kopf, aber da reicht wohl auch mit DGPS die Aufloesung nicht ganz (1 bis
2 Groessenordnungen...). Eine Kombination von beidem wuerde das
Spielfeld allerdings betraechtlich erweitern.
Gruss
Michael
>
>
>Andreas Koch schrieb:
>
>> Hmmm... dann muß man aber zusätzlich die Richtung feststellen, wenn
>> "vorwärts" auf einmal nicht mehr Norden ist!
>
>Stimmt. Dann sollte man die Maus in jedem Fall nicht in der Mitte
>montieren, sondern zb "vorne".
>Dann muß man noch eine Routine schreiben, die "weiß" wann man sich auf
>der Stelle dreht (sollte kein Problem sein eine derartige Logik zu
>entwerfen) und entsprechend nur die "Wohin-Kuck-Ich-Grad"-Variable
>aktualisieren und nicht die "Wo-Bin-Ich-Grad"-Variable.
>Letztere aktualisiert man nur, wenn man sich wirklich bewegt.
>
>Hey, langsam bin ich auf den Geschmack gekommen :-) Muß mal überlegen,
>wie ich meinen guten alten Z80 Prozessor noch verbauen kann :-)
>
>ciao,
> Klaus
Wie wärs mit 2 Mäusen an 2 Stellen im Roboter. Das Müßte dann alle
Koordinaten in der Ebene ergeben
>Hallo Leute,
>
>folgendes Problem:
>
>Wir suchen nach einer Möglichkeit, die Position (als
>XY-Koordinate) eines 'Gerätes' auf einem 3m x 3m großen
>Tisch zu ermitteln. Das ganze soll möglichst drahtlos und
>mit einer Genauigkeit von 0.5 mm funktionieren. Kosten
>spielen (erstmal) keine Rolle.
>
>Lösungen über Drähte bzw. Schnüre sind zu ungenau (und
>natürlich *nicht* drahtlos), ein Riesendigitalisiertablett
>schlecht umsetzbar.
>
Könnte man nicht einfach das ganze Ding mit Millimeterpapier oder
ähnlichem gekleben und vom Roboter mit einer einfachen Kamera. (Die
braucht ja jetzt nicht mehr sooo gut auflösen) nach unten schaun?
Das hört sich billig an und hat auch keine Probleme mit
ungenauigkeiten, solange das Raster nicht zu klein wird, relativ zur
Fahrgeschwindigkeit*Abtastzeit. Allerdings müßte der Robi dann ganz
schön denken können.
Ansgar
"Ansgar Müller" schrieb:
> Wie wärs mit 2 Mäusen an 2 Stellen im Roboter. Das Müßte dann alle
> Koordinaten in der Ebene ergeben
Ich glaube ich stehe gerade ein bisschen auf dem Schlauch (es ist (mal
wieder) spät).
Bei einer Maus hat man doch auch alle Koordinaten in der Ebene?
ciao,
Klaus
Hallo Michael,
ich denke, DGPS gibt's nicht mehr bzw. wird nicht mehr benötigt, weil Bill
Clinton die Fehlereinstreuung hat aufheben lassen ...
Bin ich da falsch informiert?
Gruß
Wolfgang
> Triangulation? Du baust an die Ecken des Tischs Lichtquellen als
> "Leuchttuerme" - am besten moduliertes IR. Dein "Geraet" kriegt
> obendrauf einen Detektor, der aus einer ordentlichen Optik und einem
> Schrittmotor besteht und wie eine Radarantenne rotiert. Der Rest ist
> Mathematik
... die man auch nicht mehr selber rechnen muss (obwohl es ganz lehrreich
ist ;-)
In Comp.robotics.misc wurde vor Kurzem der folgende C-Code veroeffentlicht,
um aus den Positionen von drei Marken (A,B,C) und dem gemessenen Winkel
zwischen A und B und dem Winkel zwischen B und C die Position
des messenden Objektes zu berechnen. (Rotation ist wohl "left to
the reader) Ich haenge ihn mal unten an. Man kann damit sehr gut ein
Gefuehl dafuer kriegen, welche Genauigkeit man bei der Winkelmessung
fuer welche Genauigkeit bei der Positionsbestimmung benoetigt.
Zur Triangulation habe ich noch ein/zwei Anmerkungen.
a) Es gibt Geraete zu kaufen, welche so etwas "von alleine" machen. Wir
setzen in einem unserer Projekte einen Laserscanner der Firma
Goetting KG ein. Die geforderte Genauigkeit erreicht unser
Geraet aber wohl nicht (wir haben es nie so genau nachgemessen). Dafuer
kostet es aber auch nur knapp 12.000 DM ;-)
b) Vorsicht bei bewegten Objekten! Wenn mit einem rotierenden Sensor in
Fahrt gemessen wird, so veraendert sich die Position des Roboters
waehrend der Messung. Das Resultat: Aus den zwei gemessenen Winkeln
zwischen den "Leuchttuermen" wird eine Position berechnet, die nicht
auf der Fahrlinie des Roboters sondern "quer ab" verschoben liegt. Die
genaue Verschiebung haengt von der Fahrgeschwindigkeit und der relativen
Position der Leuchttuerme ab. Man kann diesen Fehler sicher wieder
herausrechnen - einen Vormittag rechnen ist aber sicher nicht genug.
c) Mit mehr Leuchttuermen kann man die Genauigkeit erhoehen, da Messfehler
gemittelt werden. In der Literatur wurde ein Algorithmus veroeffentlicht,
der einen zur Anzahl der Marken linearen Aufwand benoetigt und auch
einzelne komplette Fehlmessungen versucht zu eliminieren. Bei Bedarf
suche ich noch mal nach dem Artikel.
d) Allgemeine Tips zur Positionserkennung von Robotern findet man in dem
Report "Where Am I? Sensors and Methods for Mobile Robot Positioning"
von Borenstein, Everett and Feng / University of Michigan. Das Ding
liegt als PDF auch in den Weiten des Netzes:
ftp://ftp.eecs.umich.edu/people/johannb/pos96rep.pdf.
Allgemein war aber das Ursprungsproblem ja die Positionsbestimmung auf einem
3x3-Meter grossen Tisch. Das sind im Vergleich zu beliebiger Raum und
beliebigen Entfernungen eigentlich relativ ideale Bedingungen! Unsere
Bildverarbeiter wuerden sicher "kein Problem" sagen aber in dem Bereich
kenne ich mich zu wenig aus.
Hier noch der versprochene C-Code:
Ciao,
David
--------------------------------------------------------------------
/*
* Copyright (c) 2000 -- Wayne C. Gramlich
* All rights reserved.
*
* Permission to use, copy, modify, distribute, and sell this software
* for any purpose is hereby granted without fee provided that the above
* copyright notice and this permission are retained. The author makes
* no representations about the suitability of this software for any purpose.
* It is provided "as is" without express or implied warranty.
*
* This program computes the position P at (Px, Py) of a robot, given
* fixed beacon locations A at (Ax, Ay), B at (Bx, By), and C at (Cx, Cy)
* given aAPB and aBPC, the angle measured between A and B (at P) and the
* angle measured between B and C (at P) respectively.
*
* Please note that the computed position becomes most sensitive to
* small errors in measured angles when P is near the circle formed
* by points A, B, and C. When possible, you should position the
* beacons so that they do not form a circle that will intersect
* a position that the robot may attempt to navigate from.
*
* This algorithm was published in "A Beacon Navigation Method for
* Autonomous Vehicles" by Clare D. McGillem and Theodore S. Rappaport
* published in IEEE Transactions on Vehicular Technology Vol. 38 No. 3
* August 1989, pages 132-139. The algorithm proper can be found in
* equations (7) through (16). The derivation of the algorithm can
* be found in the appendix.
*
* The program uses the math library. It can be compiled with:
*
* cc -o locate locate.c -lm
*
* Run as:
*
* locate 0 50 50 0 100 50 90. 90.
* # Prints stuff out.
* P=(50.000,50.000)
*
* Which is the correct location for the given inputs.
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int
main(
int argc,
char *argv[])
{
double Ax, Ay; /* Location of beacon A (given) */
double Bx, By; /* Location of beacon B (given) */
double Cx, Cy; /* Location of beacon C (given) */
double aAPB; /* Angle between A and B at P in degrees (given) */
double aBPC; /* Angle between B and C at P in degrees (given) */
/*
* The algorithm computes the point N=(Nx, Ny) which is the center
* of a circle of radius rABP that goes through points A, B, and P.
* Similarly, the algorithm computes the point M=(Mx, My) which is
* the center of the a circle of radius rBCP that goes through
* points B, C, and P.
*/
double pi; /* 3.14159 (given) */
double dAB; /* Distance between A and B (computed) */
double dBC; /* Distance between B and C (computed) */
double dABx, dABy; /* Temporary results */
double dBCx, dBCy; /* Temporary results */
double rABP, rBCP; /* Radius of circles ABP and BCP (computed) */
double Mx, My; /* Center of circle BCP (computed) */
double Nx, Ny; /* Center of circle ABP (computed) */
double Px, Py; /* Position of robot (computed) */
double aXAB; /* Beacon B bearing from virtual X axis through A */
double aXBC; /* Beacon C bearing from virtual X axis through B */
double m, n; /* Magic intermediate results (computed) */
/* Grab the input arguments from the command line: */
argc--;
argv++;
if (argc < 8) {
(void)printf("Usage: compute Ax Ay Bx By Cx Cy aAPB aBPC\n");
(void)printf("aAPB and aBPC are in degrees\n");
return 0;
}
Ax = atof(argv[0]);
Ay = atof(argv[1]);
Bx = atof(argv[2]);
By = atof(argv[3]);
Cx = atof(argv[4]);
Cy = atof(argv[5]);
aAPB = atof(argv[6]);
aBPC = atof(argv[7]);
(void)printf("A=%.3f:%.3f B=%.3f:%.3f C=%.3f:%.3f ABP=%.3f aBPC=%.3f\n",
Ax, Ay, Bx, By, Cx, Cy, aAPB, aBPC);
/* Convert angles ABP and aBPC to radians: */
pi = 3.14159;
aAPB *= pi/180.;
aBPC *= pi/180.;
/* Compute distances between AB and BC: */
dABx = Ax - Bx;
dABy = Ay - By;
dAB = sqrt(dABx*dABx + dABy*dABy);
dBCx = Bx - Cx;
dBCy = By - Cy;
dBC = sqrt(dBCx*dBCx + dBCy*dBCy);
(void)printf("dAB=%.3f dBC=%.3f\n", dAB, dBC);
/* Compute rABP and rBCP, the radius of each circle: */
rABP = dAB / (2. * sin(aAPB));
rBCP = dBC / (2. * sin(aBPC));
(void)printf("rABP=%.3f rBCP=%.3f\n", rABP, rBCP);
/* Compute bearings between beacons A, B, and C: */
aXAB = asin((Ay - By) / dAB);
aXBC = asin((By - Cy) / dBC);
(void)printf("aXAB=%.3f aXBC=%.3f\n", aXAB*180./pi, aXBC*180./pi);
/* N and M are the centers of the circles for ABP and BCP respectively: */
Nx = Ax - rABP * sin(aXAB - aAPB);
Ny = Ay - rABP * cos(aXAB - aAPB);
Mx = Bx - rBCP * sin(aXBC - aBPC);
My = By - rBCP * cos(aXBC - aBPC);
(void)printf("M=(%.3f:%.3f) N=(%.3f:%.3f)\n", Nx, Ny, Mx, My);
/* Compute n and m, two "magic" intermediate results m and n: */
n = (rBCP*rBCP - rABP*rABP - Mx*Mx + Nx*Nx - My*My + Ny*Ny) /
(2. * (Nx - Mx));
m = (My - Ny) / (Nx - Mx);
/* Compute position Px and Py: */
Py = 2. * (Ny + m * (Nx - n)) / (1. + m * m);
Px = m * Py + n;
(void)printf("P=(%.3f,%.3f)\n", Px, Py);
return 0;
}
--
Nicklaus Wirth, the designer of PASCAL, gave a talk once at which he was
asked "How do you pronounce your name?". He replied, 'You can either call me
by name, pronouncing it 'Veert', or call me by value, 'Worth'.
2x Weg (x,y) und einen Drehwinkel.
"Ansgar Müller" schrieb:
>2x Weg (x,y) und einen Drehwinkel.
Mit einer Maus hast du 1x Weg (x,y) und auch den Drehwinkel...?!
Ich sehe immernoch nicht den Vorteil von zwei Mäusen.
ciao,
Klaus
Also ich versteh das so (abhängig von Montage der Maus).
X-Änderung = Drehung, mit Entferung vom Drehpunkt und Weglänge
ergibt sich der Drehwinkel
Y-Änderung = vor- bzw. rückwärts
2 Mäuse brauchst du wenn es Drehung und Bewegung des Roboters in
allen 4 Richtungen gibt. Dann weißt du bei EINER Maus nicht mehr
ob X-Änderung gleich Drehung oder seitwärts ist.
Martin
[...]
> 2. Mäuse und Drehwinkel ist ein ganz heikles Kapitel, bei Rollball-Mäusen
> ist die Bewegung des Balls bei einer Rotation um die Achse (oder auch bei
> Kurven mir kleinen Radien, wie sie hier auftreten können) einfach nur
> heuristisch und durch _nichts_ zu berechnen (z.B. Fussel behindert
> Drehbewegung einmal, dann wieder nicht...). Optische Mäuse sind hier etwas
> im Vorteil, weil der Konstrukteur sich ja was einfallen lassen mußte, um
> seine Orientierungspunkte nicht zu verlieren - trotzdem weißt Du bei dem
> beschriebenen Verhalten nicht, ob jetzt die Maus gedreht wurde oder einmal
> in x- und einmal in y-Richtung verschoben wurde!
> M.E. einzige Alternative: Maus nachbauen, mit einem 3.
> Röllchen/Lichtschranke auf der z-Achse versehen => eindeutiges
> Rotationssignal (ist aber ungenau)
>
> Also wenn schon sowas in der Richtung, dann wäre es noch am sinnvollsten,
> Gabellichtschranken mit Lochscheiben (bzw. direkt _richtige_ Drehgeber) an
> allen Rädern anzubringen und die relative Bewegung direkt dort abzunehmen
> und daraus x, y und phi auszurechnen.
>
Wieso Mäuse nachbauen wenn man alles hat, was eine Maus braucht (außer
den Drehgebern)?
Hoch Martin schrieb:
> 2 Mäuse brauchst du wenn es Drehung und Bewegung des Roboters in
> allen 4 Richtungen gibt. Dann weißt du bei EINER Maus nicht mehr
> ob X-Änderung gleich Drehung oder seitwärts ist.
Wenn ich ehrlich sein soll habe ich es immernoch nicht verstanden.
(Das was du geschrieben hast schon, aber nicht weshalb man 2 Mäuse
braucht)
Ich versuche mal meine gedanken zu beschreiben:
Vorraussetzungen:
-Maus ist vorne angebracht
-Drehungen erfolgen um die eigene Achse
-Der Roboter kennt nur die Bewegungen vor, zurück, Drehung um x Grad
rechts,
Drehung um x Grad links
-Man hat eine Logik, die ein Signal an den µC liefert, wenn der Roboter
sich dreht
(Das ist denke ich mal überhaupt kein Problem in Hardware zu
realisieren)
Definition: logisch "0" bedeutet "keine Drehung" (/D)
logisch "1" bedeutet "Drehung" (D)
Erhält der µC das Signal D, dann kann er davon ausgehen, daß dx und dy
durch eine
Drehung entstanden sind (links oder rechts)
Erhält der µC das Signal /D, dann kann er davon ausgehen, daß dx und dy
durch eine
Bewegung nach vorne oder nach hinten entstanden sind.
Somit wüßte ich jetzt nicht was eine zusätzliche Maus an Vorteilen
bringen kann/soll.
Der Nachteil dieser Mausgeschichte ist die genauigkeit. Ich habe eben
erst gelesen,
daß die Genauigkeit 0.5 *mm* betragen soll. Jedes Staubkörnchen könnte
diese Genauigkeit stören.
ciao,
Klaus
>> Der grosse Vorteil dieser "Leuchtturm"-Geschichte ist natuerlich die
>> _absolute_ Positionierung. Einen Ansatz mit GPS hatte ich ebenfalls im
>> Kopf, aber da reicht wohl auch mit DGPS die Aufloesung nicht ganz (1 bis
>> 2 Groessenordnungen...). Eine Kombination von beidem wuerde das
>> Spielfeld allerdings betraechtlich erweitern.
>ich denke, DGPS gibt's nicht mehr bzw. wird nicht mehr benötigt, weil Bill
>Clinton die Fehlereinstreuung hat aufheben lassen ...
>Bin ich da falsch informiert?
Sagen wir mal so: fuer den vorgesehen Zweck, naemlich die Navigation im
Gelaende, ist GPS spaetestens seit der Abschaltung der SA (selective
availability) gut brauchbar.
Aber so ohne alles kommst du nie und nimmer auf Aufloesungen im
Zentimeter-Bereich. _Mit_ DGPS schaffst du das aber, SA hin oder her.
Wie genau das geht, darueber kann ich dir auch keine definitiven Angaben
machen. Aus einer elrad vor ein paar Jahren entnahm ich aber, dass DGPS
(mit SA!) erfolgreich zur Kartierung vom Flugzeug aus mit Aufloesungen
in der Groessenordnung 10cm benutzt wurde. _Ohne_ DGPS liegst du wohl um
mindestens einen Faktor 10 drueber.
Gruss
Michael
vor ca. 8 Jahren habe ich eine solche Empfängerschaltung mit Detektor,
unempfindlich gegen Streulicht und mit einem Arbeitsbereich von mehreren
Dekaden (Umgebungshelligkeit und reflektiertes Laserlicht) mal
(für eine Firma) entwickelt und gebaut. Das Ergebnis war beinahe
patentwürdig. Die Detektion war relativ schnell (AFAIR ca. 10-100
Mikrosekunden) und die (Winkel-) Auflösung um die 12 bit wenn ich mich
recht erinnere.
Es ist technisch also machbar.
Bernd Mayer
--
Linux - aus klaren Quellen wird ein starker Strom.
Klingt interessant.Hab uebrigens gestern ne laserniveliergesteuerte Bodenfraese auf
unsrem neuen Sportplatz beobachtet. Arbeitet wohl nach aehnlichem Prinzip. Frueher
haben die Bauleute die richtige Querneigung nur mit Schnueren und Wasserwaage
ermittelt - heut faehrt ein Mann die Fraese und alles stimmt danach wie "von
Geisterhand" :-)
Aber zum Thema: 12bit reine Winkelaufloesung ist im vorliegenden Fall ja sogar gerade
ausreichend (3m/4096=0,7mm) gewuenscht waren 0,5mm.
Matthias