c't

c't-Projekte - Mailinglisten


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

RE: AW: [ct-bot] MAP-Verhalten nur fuer Sim ? -> Patch fuer Verhalten

Absender: Menzel, Frank IT-OO4
Datum: Mi, 27.08.2008 08:09:57
In-reply-to: <3552FBF3-5B11-49C8-BE17-283FDF25DC18@xxxxxxxxxxxxxxx>
References: <000001c906ec$5d802ee0$0200a8c0@mexpnew> <3552FBF3-5B11-49C8-BE17-283FDF25DC18@xxxxxxxxxxxxxxx>


Hallo Timo,
es gibt für die linke und rechte Spur jeweils ein Beobachter-Verhalten, welches diese Spur im Auge behält. Darin gibt es schon einen Timer, um erst nach Ablauf einer bestimmten Zeit auf die Map zuzugreifen, da es beim echten ja sonst zur Mapüberlastung kommen würde. Ist die Map schon erforscht und es wird ein Hindernis auf der Nebenbahn laut Map (nach Ablauf der Zeitspanne seit letztem Check) erkannt, dann wird die bis zu dem Hindernis freie Strecke auf dem Stack vermerkt. Es wird dann wieder nach dem nächsten gültigen Startpunkt nach dem Hindernis gesucht und so geht es weiter. An einem Hindernis voraus angekommen entscheidet er sich für eine Richtung, vorzugsweise rechts, und fährt diesen rechts vom bot berechneten Startpunkt der Nebenbahn an. Wäre links auch eine freie Alternative gewesen, wird die linke Strecke (Start- und Endpunkt) auf den Stack gespeichert. Geht es irgendwann einmal nicht mehr für den Bot weiter, also rechts oder links von ihm Hindernis oder schon befahren, wird eine Strecke aus dem Stack geholt (dieser enthält ja nur unbefahrene Strecken) und angefahren. Beim Anfahren einer vom Stack geholten Strecke liegt diese ja durchaus relativ weit weg vom bot und der Weg dorthin kann auch von einem Hindernis verstellt sein. Zum Anfahren müßte eigentlich ein Pfadplanungsverhalten her, welches es aber noch nicht gibt. Der bot kann somit diese Strecke nur direkt anfahren, d.h. einen der beiden Streckenpunkte, vorzugsweise den nahesten. Ist dieser nicht erreichbar aber der Weg zum anderen Punkt frei, wird dieser angefahren und versucht, von dort aus die Strecke zu befahren. Ist diese auch nicht anfahrbar, wird die Strecke verworfen und die nächste vom Stack geholt. Ohen den Pfadplaner kann es somit auch zu unbefahrenen Stellen kommen.
Nach dem Stackholen werden auch lange Strecken geradeaus gefahren, um den neuen Weg zu erreichen. Und hier bin ich aber auf das Map-Update voraus (der Hindernisse) angewiesen. Das Anfahren erfolgt hier zweistufig, einmal bis 30cm vorher. Dann wird der Punkt auf Mapwert geprüft und bei Hinderniswahrscheinlichkeit möglicherweise der andere Punkt angefahren. Also einfach Abschalten des Map-Updates bei Geradeausfahrt geht nicht, für die Freistrahlen schon (werden nicht gebraucht).
Mit dem Bereitstellen einer allgemeinen "Auslese-Funktionalität" habe ich nicht so recht verstanden.
Beim echten bot sollte es eigentlich auch funktionieren, habe mit diesem aber momentan ein paar Problemchen und kann nicht testen...

Mit freundlichen Grüßen / best regards
Frank Menzel



-----Original Message-----
From: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx [mailto:ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx] On Behalf Of Timo Sandmann
Sent: Tuesday, August 26, 2008 5:05 PM
To: Entwicklung rund um den c't-bot
Subject: Re: AW: [ct-bot] MAP-Verhalten nur fuer Sim ? -> Patch fuer Verhalten

Am 25.08.2008 um 21:54 schrieb Frank Menzel:
> Hallo,
> zu dem u.a. Thema habe ich nun das Verhalten fertig, so dass ich es
> hier
> mal einreiche. Das Verhalten wird via Taste 8 gestartet und fährt nun
> eine Spur nach der anderen ab, wobei sich Alternativwege auf dem
> Pos-Stack gemerkt und diese dann später angefahren werden. Anhand der
> Map werden Hindernisse auf den Nebenspuren erkannt und Zwischenwege
> erzeugt, ebenso wird eine bereits befahrene Spur anhand der Map als
> solche erkannt und nicht mehr angefahren.
> Einfach mal laufen lassen...
>
>
> Gruß, Frank Menzel

Hallo,

das klingt interessant, danke erstmal.
Verstehe ich das richtig, während einer Fahrt wird auf der Nebenspur
geschaut, ob der Bot dort schon war oder es Hindernisse gibt und wenn
nicht, wird der Abschnitt vorgemerkt? Das müsste doch auch auf dem
echten Bot funktionieren, wenn man während der Geradeausfahrt das Map-
Update der Distanzsensoren abschaltet (geht ja dynamisch von
beliebigen Verhalten aus).
Dann verliert man zwar ein paar Infos für die Map, aber ich glaube das
ist nicht weiter schlimm, weil die "Freistrahlen" der Sensoren
anschließend eh von der Grundfläche überrollt werden. Sieht der Bot
ein Hindernis voraus, kann man sie ja wieder einschalten. Ich denke
(habe ich aber nicht ausprobiert), das Nachschauen auf der Nachbarspur
sollte "parallel" (n den Lücken) zum Grundflächenupdate machbar sein,
das Auslesen der Map geht ja deutlich schneller als das Beschreiben.

Wäre es sinnvoll, dass wir ähnlich wie für das Map-Update auch eine
allgemeine Auslese-Funktionalität bereitstellen? Also für eine
kontinuierliche Map-Auswertung, nicht nur die Abfrage eines Feldes.
Ich könnte mir vorstellen, dass man das für verschiedene Verhalten gut
gebrauchen könnte. Über die Anfragen-Schnittstelle müsste man sich
allerdings noch mal ein paar Gedanken machen, was man da so braucht.

Grüße,
Timo
_______________________________________________
ct-bot-entwickler Mailingliste
ct-bot-entwickler@xxxxxxxxxxxxxxxxx
http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler