c't

c't-Projekte - Mailinglisten


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

Re: [ct-bot] Bot-Lokalisierung (Hardware)

Absender: Timo Sandmann
Datum: Sa, 13.03.2010 19:14:28
In-reply-to: <000b01cac225$030ef1d0$0300a8c0@mexpnew>
References: <000b01cac225$030ef1d0$0300a8c0@mexpnew>


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Frank,

Am 12.03.2010 um 21:45 schrieb Frank Menzel:
> Ich hätte schon Interesse. Aber nur, wenn ich wüsste, wie genau dies
> denn beim realen Bot auch klappt.

also die erreichte Genauigkeit hängt von zwei Dingen ab, erstens wie genau man mit dem Sensor eine Landmarke anpeilen kann und zweitens wie genau man die Winkel zwischen den Landmarken messen kann. In meinem bisherigen Testszenario mit drei Landmarken und Messung über die Radencoder liegt der durchschnittliche Fehler in der Positionsbestimmung so bei 2 cm, wenn der Bot in einem günstigen Bereich steht (z.B. Landmarken in den Ecken eines Rechtecks und der Bot steht im Mittelpunkt). Grundsätzlich lässt sich die Genauigkeit mit mehr Landmarken noch verbessern, das habe ich aber bisher nicht ausprobiert. Wenn der Bot in einem ungünstigen Verhältnis zu den Landmarken steht, wird es sicherlich ungenauer, aber dieser Fall lässt sich ja feststellen und der Bot könnte dann z.B. mit Pfadplanung in einen günstigen Bereich fahren und dort noch mal messen, um genauere Werte zu erhalten. 
Insgesamt bietet der bisherige Stand auf keinen Fall eine komplett fertige Lösung, die man einfach nur einschalten muss, sondern eher die Grundlage für weitere Experimente. Aber ich denke das soll beim ct-Bot-Projekt ja auch so sein. 

> Kann er sich denn auch wirklich besser
> orientieren und korrigiert damit seine Fehler, also wenn er z.B.
> irgendwo hängen bleibt-findet er wirklich in seine echte Position
> zurück?

Was genau meinst du mit "besser orientieren"? 

Grundsätzlich ermöglicht das Verfahren, die globale Position und Ausrichtung des Bots in der Welt zu bestimmen, wenn der Bot mindestens drei Landmarken sieht. Er dreht sich dann einmal und weiß anschließend, er steht an (X | Y) mit Ausrichtung Z Grad. Das ist völlig unabhängig von der vorherigen bekannten Position, ob er irgendwo mal hängen geblieben ist, spielt hier also keine Rolle. 
Einen kleinen Überblick über das Verfahren bietet z.B. http://de.wikipedia.org/wiki/Terrestrische_Navigation#Horizontalwinkelmessung

Letztlich hängt viel davon ab, wie man die Informationen softwareseitig auswertet, wann man den Bot messen lässt, wie man die Position updated usw. Bisher gibt es nur ein Verhalten, das einfach versucht die aktuelle Position zu messen und wenn gewünscht speichert es diese dann in x_pos, y_pos und heading. Da gibt es auf jeden Fall noch viel Verbesserungspotential. 

Eine andere, auch schon mal angedachte Möglichkeit zur Lokalisierung wäre die Auswertung der bereits bekannten Map-Daten. Das ist allerdings softwareseitig deutlich komplizierter. Grundsätzlich ließen sich aber auch beide Methoden kombinieren, so könnten z.B. die Landmarken für eine globale und gelegentliche Positionsbestimmung genutzt werden und die Map-Auswertung für eine kontinuierliche Korrektur der Position mit Hilfe der Map. 

Vielleicht hilft das schon mal weiter, das Ganze besser einschätzen zu können?

Grüße,
Timo

-----BEGIN PGP SIGNATURE-----

iEYEARECAAYFAkub1gMACgkQDH/BX4067fJNzQCg6OL2m4Ef/FB0sUA5I3IAhF9X
lGYAn2PI7nFjKup2RTfMADsoyMKB9da9
=E3Dw
-----END PGP SIGNATURE-----