|
 |
 |
 |
|
|
c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Timo Sandmann
Datum: So, 13.05.2007 17:28:29
In-reply-to:
<812F86EC9E1A96489D5E83C2AB7D6886F28D18@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References:
<812F86EC9E1A96489D5E83C2AB7D6886F28D18@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Hallo,
Am 11.05.2007 um 11:02 schrieb Menzel, Frank IT-OO4:
Ziel war es ja, mit einem Abgrund-Notverhalten auch in den
Verhalten darüber informiert zu werden, wenn der bot eben auf einen
Abgrund fährt. Je nach Verhalten kann dann entsprechend reagiert
werden. Im einfachsten Fall darf der bot nicht da reinfallen, so
wie es jetzt eben der Fall ist.
ich glaube (!) es war eher so gedacht, dass das Abgrund-Behandlungs-/
Verhinderungsverhalten immer dasselbe ist, aber dass die anderen
Verhalten *nach* dessen Ausführung feststellen können, dass sie a)
unterbrochen wurden und b) ein Ausweichmanöver (oder was auch immer)
gefahren wurde.
Ich greife mal die Idee mit der Screen-Registrierung auf. Da werden
in einem begrenzten Array Pointer auf Prozeduren gespeichert und je
nach Screen eine bestimmte Routine aufgerufen. Wenn man nun ein
ebensolches Array macht für die Registrierung von nacheinander
auszuführende Notfallroutinen, die je nach Verhalten dort
registriert werden, kann man relativ flexibel darüber die Verhalten
informieren und dort was tun. Im einfachsten Fall wird auf jeden
Fall die Routine registriert, die die speeds auf minus setzt, so
wie jetzt, damit er nicht ins Loch fällt (es muß hier
sichergestellt sein, daß auch drunterliegende Fahrverhalten zum
Zuge kommen).
Das jetzige Notfallverhalten prüft also die Sensoren auf Abgrund
und startet nacheinander alle Routinen, die hier registriert sind.
Und wo ist jetzt der Unterschied zum bisherigen Verhaltenssystem,
abgesehen davon, dass der Funktionszeiger in einem Array anstatt in
einer verketteten Liste (wie für alle Verhalten) gespeichert wird? Da
sehe ich jetzt gerade nicht den Vorteil (außer, dass man das
speicherintensive malloc() spart, aber da man das für alle anderen
Verhalten ja sowieso hat...). So hat man dann nur zwei
unterschiedliche Varianten für ähnliche Dinge (Aufrufen einer
Funktion bzw. eines Verhaltens, die/das aktiv ist), oder ich verstehe
es falsch?
Zum Ringpuffer kann ich nichts sagen.
Gruß Timo
|
|
|