## c't-Projekte - Mailinglisten

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

### Re: [ct-bot] bot-2-bot-Kommunikation -> Senden der Stackdaten

Absender: Timo Sandmann
Datum: Mi, 18.06.2008 13:42:44
In-reply-to: <000001c8d09e$f363bff0$0200a8c0@mexpnew>
References: <000001c8d09e$f363bff0$0200a8c0@mexpnew>

    Hallo,

    Am 17.06.2008 um 19:23 schrieb Frank Menzel:

>     Hallo,
>     habe mich mal etwas mit der bot-2-bot-Kommunikation beschäftigt.
>     Rausgekommen ist, dass nun der Stack eines Bots zu den anderen
>     Remote-Bots übertragen werden kann und anschließend auf ihnen das
>     Stack-Fahrverhalten gestartet wird.

    das ist ja mal eine interessante Idee. :-)

>     ...
>     gefahren werden). Bei aktivierter Bot-2-Bot Kommunikation kann nun via

> `Taste 9 der Stack auf die Remote-Bots übertragen werden und` `anschließend`

>     fahren diese den Stack ab.

`Aber warum wird der Stack gleich per Broadcast an alle Bots im System` `geschickt? Wäre es nicht besser, man wählt einen Bot aus, an den die` `Daten geschickt werden?`

>     Wird ein 2. Bot auf dieselbe

> `Ausgangsposition wie der 1. Bot gesetzt, so fährt dieser exakt` `denselben` `Weg ab, den der 1. Bot genommen hat. Leider habe ich nicht 2 reale` `Bots`

>     mit Funk um dies zu testen :-(

`Man kann auch von Sim-Bots an einen realen Bot (z.B. per USB` `angeschlossen) Nachrichten schicken.`

>     Im sim ist dies schon recht
>     beeindruckend, wenn 2 Bots direkt nebeneinander platziert werden, der
>     eine dem anderen zum Schluss seinen Weg übermittelt und dann beginnt,
>     die Strecke abzufahren. Leider hat jeder Bot für sich seine eigene
>     Vorstellung von den Positionen innerhalb seiner eigenen Welt, da es
>     keine globale Positionen gibt. Also wird es nicht derselbe Weg sein,
>     wenn die Bots nicht auf demselben Ausgangspunkt starten. Bei
>     nebeneinander-Start ist es die Bahn daneben aber eben im Sim nicht
>     anders machbar

`Warum? Du kannst Bot 2 doch im Sim an die Ausgangsposition von Bot 1` `stellen.`

>     Bei der Implementierung ist mir aufgefallen, dass wieder ein Array
>     gefüllt werden muss mit den Routinen, die ein Bot empfangen kann. Kann

> `man hier nicht möglicherweise bereits auf die Remote-Calls` `zurückgreifen`

>     ?

`Nein die Remote-Call-Liste enthält die Botenfunktionen für Verhalten,` `die man starten kann. In der Liste der Auswertungsfunktionen für die` `Bot-2-Bot-Kommunikation stehen die Funktionen, die die übermittelten` `Daten entgegennehmen. Das hat nichts mit den Verhalten gemeinsam.`

`Wir könnten ganz allgemein mal überlegen, ob es Sinn macht, dass ein` `Bot per Remote-Call ein Verhalten auf einem anderen Bot starten kann` `(das entspricht hier dem go-Befehl).`

    Meinungen dazu?

    Bei dem Patch sind aber noch ein paar andere Dinge unklar:

`1. Beim Empfang einer Stack-Position oder eines Startbefehls geht ein` `Bot seine lokale Liste mit allen bekannten Bots durch und führt für` `jeden Bot in der Liste z.B. bot_push_pos() aus, d.h. bei 5 Bots in der` `Liste, wird die empfangene Stack-Position 5 mal auf den eigenen Stack` `gepusht, warum das?? Ebenso wird das bot_drive_stack-Verhalten 5 mal` `gestartet, wenn ein go-Befehl kommt. Ich glaube hier liegt irgendwie` `ein Denkfehler vor. Mag sein, dass das an der noch nicht vorhandenen` `Dokumentation liegt, dazu bin ich noch nicht gekommen, sorry.` `Eigentlich hat der Stack-Datenempfang ja mit der lokalen Bot-Liste gar` `nichts zu tun.`

`2. Das Verfahren wird auf realen Bots vermutlich nicht funktionieren,` `weil jede Stack-Position als ein Kommando übertragen wird. Es kommen` `beim Bot also N Kommandos auf einen Schlag an, wenn der Stack N` `Einträge enthält. Es passen aber maximal 4 Kommandos in den` `Empfangspuffer des Bots, der Rest geht (ohne irgendwelche Hinweise)` `verloren.`

`Der Bot-Code ist bisher nicht dafür ausgelegt, große Datenmengen zu` `empfangen. Das Thema habe ich in einem anderen Zusammenhang schon auf` `der ToDo-Liste. Am besten wäre eigentlich, wenn man die Daten als` `Payload überträgt, aber nicht sofort, wie es zurzeit z.B. bei den` `Remote-Calls ist, sondern dass der Bot beim Empfang eines Kommandos` `die Payload beim Sim abholt. Der Sim müsste die Daten dafür natürlich` `so lange puffern (IMHO ist das aber kein Nachteil). Dann könnten wir` `eine Funktionen zum Payload-Abholen machen, die dann von verschiedenen` `Codeteilen benutzt werden kann, z.B. für den Positions-Stack oder` `Dateien und Programme, die man zum Bot übertragen möchte. Ich glaube,` `das wäre die einzig stabile Lösung, um mehr als ein paar Bytes zu` `einem realen Bot übertragen zu können. Der Nachteil ist allerdings,` `dass wir schon wieder am Bot-2-Sim-Protokoll schrauben müssten.`

    Meinungen hierzu?

    Gruß Timo

- Antworten:
  - Re: [ct-bot] bot-2-bot-Kommunikation -> Senden der Stackdaten
    - From: Benjamin Benz

- Referenzen:
  - [ct-bot] bot-2-bot-Kommunikation -> Senden der Stackdaten
    - From: Frank Menzel

- Voriger (Datum): [ct-bot] Fehler im I2C Datentransfer, Marko Bolowski
- Nächster (Datum): Re: [ct-bot] bot-2-bot-Kommunikation -> Senden der Stackdaten, Benjamin Benz
- Voriger (Thread): [ct-bot] bot-2-bot-Kommunikation -> Senden der Stackdaten, Frank Menzel
- Nächster (Thread): Re: [ct-bot] bot-2-bot-Kommunikation -> Senden der Stackdaten, Benjamin Benz
- Indizes:
  - Datum
  - Thread