Absender: Timo Sandmann
Datum: Mi, 11.03.2009 11:06:45
In-reply-to:
<000001c9a1b8$79a85860$0200a8c0@mexpnew>
References:
<000001c9a1b8$79a85860$0200a8c0@mexpnew>
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Frank, Am 10.03.2009 um 20:43 schrieb Frank Menzel:
Hi Timo, mir geht?s im speziellen um das Übertragen des Stacks und dann Aufruf des Stackverhaltens.
ja, dafür braucht man ja im Wesentlichen zwei Dinge: 1. Stack von Bot A nach Bot B übertragen 2. Verhalten bot_drive_stack() auf Bot B starten. Zu 1.:Der Positionsstack gehört immer zu einem Verhalten, es kann ja mehrere geben für verschiedene Verhalten. Folglich muss die Übertragung das auch berücksichtigen, damit die Daten an die richtige Stelle kommen. Ich denke es wäre am besten, wenn das Stack-Verhalten selbst die Daten entgegennimmt, damit man nicht in externen Funktionen entscheiden muss, welches Verhalten welchen Stack benutzt, wo der Speicher dafür liegt usw. Also könnte bot_drive_stack() einen weiteren Parameter bekommen, der angibt, ob das Verhalten sofort losfahren, oder zunächst einen Stack empfangen *) soll, den es anschließend abfährt. Hat bot_drive_stack() den Auftrag bekommen, zunächst einen Stack zu empfangen, setzt es einen entsprechenden Status und schickt dem Bot A (der bot_drive_stack() auf Bot B per Remotecall gestartet hat) eine Nachricht wie "bin bereit, bitte schicke mir jetzt die Stackdaten". Daraufhin sendet Bot A diese Daten mit der Bot-2-Bot-Payload- Sendefunktion an Bot B. Auf Bot B aktiviert dann nach der Übertragung die automatisch aufgerufene Callback-Funktion das bot_drive_stack- Verhalten wieder, welches nun losfährt.
Ist das soweit verständlich? So scheint mir das im Moment (ich habe jetzt allerdings auch nicht noch weiter darüber nachgedacht, vielleicht gibt es auch bessere Lösungen?) am besten geeignet.
Zu 2.:Eigentlich müsste das Starten von Remotecalls auf einem anderen Bot relativ einfach mit den bestehenden Funktionen möglich sein. Zumindest solange man davon ausgeht, dass der zweite Bot bereit ist. Es stellt sich nur die Frage, ob man die Verhalten wirklich so wie bisher von den Remotecalls gewohnt starten will z.B. start_behaviour_on_another_bot("bot_drive_stack", ...); also als Strings im Code, oder ob man vielleicht die Priorität eindeutig festlegt und diese als ID nimmt.
*) Denkbar ist übrigens auch, dass man Positionsstacks vom Sim aus exportieren / speichern kann und später wieder auf einen Bot laden - so kann man später einen weiteren Bot sehr leicht dieselbe Route abfahren lassen. Ob die Stackdaten von einem anderen Bot kommen oder vom Sim, der sie aus einer Datei einliest, macht ja grundsätzlich keinen Unterschied.
Oder ohne Datenübertragung einfach ein beliebiges Verhalten starten können...
Siehe zu 2. Grüße, Timo -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (Darwin) iEYEARECAAYFAkm3jTMACgkQDH/BX4067fIJqwCggDHqO+nIjH4hD9cu93YIbvKl woIAoIROwTY6IXr8/avQKKFkeirGI8t1 =dNqt -----END PGP SIGNATURE-----