Absender: Timo Sandmann
Datum: Mi, 08.09.2010 17:49:54
In-reply-to:
<096FD558C4D20046A1BABE72DFF0C6C33D47499578@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References:
<AEC150FE-E322-4CBE-A1B5-47666F5BC251@xxxxxxxxxxxxxxx> <096FD558C4D20046A1BABE72DFF0C6C33A5FD1D9B3@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <096FD558C4D20046A1BABE72DFF0C6C33D3F0510D7@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <681CE81A-8241-4207-BC75-36F15F444089@xxxxxxxxxxxxxxx> <096FD558C4D20046A1BABE72DFF0C6C33D47499098@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <630E0098-34A8-4C3D-B4B7-6ED89C60E710@xxxxxxxxxxxxxxx> <096FD558C4D20046A1BABE72DFF0C6C33D474992E7@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <B88AF856-B9EF-4454-8D15-5BC8DD6380D8@xxxxxxxxxxxxxxx> <20100907173631.63750@xxxxxxx> <F3A64E97-F78E-45F1-8DBF-01FD7D59AE92@xxxxxxxxxxxxxxx> <096FD558C4D20046A1BABE72DFF0C6C33D47499578@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Hallo Frank, Am 08.09.2010 um 07:39 schrieb Menzel, Frank IT-OS: > Hallo Timo, > > habe mir die ganze Sache mal für beide Bots und mit Visualisierung der Map angesehen und bin wohl noch auf einen Bug gestoßen. Damit das Bild nicht verlorengeht, diesmal nicht über die Mailingliste. > > Habe den Schalter zum Überschreiben der Positionsdaten mal gesetzt und mit beiden Bots mal etwas rumgefahren. Zum Startzeitpunkt auch jeweils das Scanverhalten aufgerufen. Klappt beim 1. Bot relativ gut, es zeigen sich leichte Verschiebungen der Map nach etwas rumfahren und Aufruf des Beacon-Scanverhaltens. > > Beim 2. Bot, rechts auf Blau eingesetzt, klappt’s am Anfang auch ganz gut, bis plötzlich ein Sprung einsetzt. Wie im Bild zu sehen, wird der Bot zu seiner jetzigen Position gefahren und dann das Scanverhalten aufgerufen. Wo der Bot vorher auf der Mapkarte noch am Ende des weißen Fahrweges stand, springt er plötzlich zu der Stelle, wie jetzt im Bild zu sehen. Ist auf immer wiederholbar… beim 2. Bot hast Du aber auf dem Startplatz noch nicht das Scan-Verhalten aufgerufen, die alte Position dort (1350 | -236) entspricht (0 | 0) auf dem Startplatz des Bots. Daher muss die Map dann einen Sprung aufweisen. Dem Screenshot nach würde ich die globale Position des Bots auf (1560 | 600) schätzen, das Scanverhalten kam auf (2090 | 600), der Fehler in X-Richtung ist also recht groß. Ich habe das Ganze gerade auch mal ausprobiert, den Bot auf (1350 | -236) gefahren und dann bot_scan_beacons(1,0) aufgerufen: behaviour_scan_beacons.c(157) - DEBUG - Berechne Position aus Landmarken behaviour_scan_beacons.c(85) - DEBUG - Pos v. Landmarke 1028: (1080|1080) behaviour_scan_beacons.c(85) - DEBUG - Pos v. Landmarke 1031: (1080|1800) behaviour_scan_beacons.c(85) - DEBUG - Pos v. Landmarke 1802: (1800|2520) behaviour_scan_beacons.c(223) - DEBUG - A=(1080|1080) M=(1080|1800) B=(1800|2520) behaviour_scan_beacons.c(224) - DEBUG - angle_am=24; angle_mb=30 behaviour_scan_beacons.c(85) - DEBUG - Pos v. Landmarke 1028: (1080|1080) behaviour_scan_beacons.c(240) - DEBUG - > Berechnete Position: (1851|572) behaviour_scan_beacons.c(241) - DEBUG - > Heading: 236 behaviour_scan_beacons.c(242) - DEBUG - > Bisherige Position: (1341|-235) behaviour_scan_beacons.c(243) - DEBUG - > Heading: 232 behaviour_scan_beacons.c(253) - DEBUG - Aktualisiere Positionsdaten Auch hier stimmt die berechnete Position nicht so ganz, ich glaube wir sollten unbedingt mal eine Welt erstellen, wo die Landmarken außen stehen, so wie man das auch in einer realen Umgebung realisieren würde. Grundsätzlich sehe ich im Moment aber keinen Bug. Es kann übrigens auch sein, dass die Java3D-Simulation der Baken zusätzliche Ungenauigkeiten einbringt, zumindest bin ich mir nicht 100%ig sicher, wie exakt das Modell ist - das ganze Java3D-Zeugs im Sim habe ich nie komplett durchschaut, ich war froh, dass die Baken-Simulation prinzipiell funktioniert. Die Genauigkeit ist auf jeden Fall nicht direkt vergleichbar mit der beim realen Bot. Ungenauigkeiten wird es aber immer geben, von daher sollte der Bot-Code schon damit klarkommen. Es wäre vielleicht ganz sinnvoll, wenn die Anhaben im Sim unter "Position" den globalen Koordinaten entsprächen, die für die Landmarken-Lokalisierung benutzt werden und nicht denen aus der Java3D-Welt, die niemanden interessieren. Ich werde mal schauen, ob sich das leicht umbauen lässt. > Die Logausgaben für genau den Scanaufruf an dieser Position habe ich unten angefügt. Was mir da gerade auffällt: Du hast den RemoteCall für bot_scan_beacons() doch mit den Parametern 1 (für pos_upd) und 0 (für mode) aufgerufen, oder? Die Debug-Ausgabe gibt bei Dir für alle Parameter 0 aus o.O Bei mir tut sie das nicht, sehr seltsam. Funktionieren tuen die RemoteCalls (mit den angegebenen Parameter) aber doch immer korrekt bei Dir? > In diesem Zusammenhang fällt mir ein/auf, dass es schön wäre, wenn ein Bot dem anderen seine globale Position mitteilen könnte und die Bots jeweils auf beiden Karten sichtbar wären. Ja, auf jeden Fall. Das lässt sich recht einfach per Bot-2-Bot Kommunikation realisieren, es gibt ja da auch schon eine Liste aller Bots. In dieser könnte man einfach ein Feld für die Bot-Position ergänzen, dann weiß jeder Bot immer (je nach Update-Intervall natürlich), wo die anderen Bots gerade sind. Evtl. sollte dort auch ein Timestamp für das letzte Update mit hinein, so dass ein Bot ewig alte Angaben anderer Bots für nicht mehr gültig hält. Die Bot-Positionen aus der Bot-Liste könnte man dann bei der Map-Anzeige auch mit an den Sim senden, so dass der die anderen Bots mit in die Kartenansicht zeichnet. > Interessant wäre auch, wenn 2 oder noch mehr bots eine gemeinsame Karte aktualisieren könnten. Aber das wäre jetzt zu viel Brainstorming Prinzipiell kann man natürlich auch Karten per Bot-2-Bot Kommunikation übertragen, auf dem echten Bot dürfte das mit dem WLAN-Erweiterungsmodul oder per USB allerdings deutlich zu langsam sein. Grundsätzlich muss aber ja auch nicht jedes Features auf jeder Bot-Hardware funktionsfähig sein - irgendwann stößt man halt an die Grenzen einer Hardwareausstattung. Grüße, Timo > <image001.png> > > behaviour_remotecall.c(378) - DEBUG - Aufruf remotecall > > behaviour_remotecall.c(218) - DEBUG - Suche nach Funktion: bot_scan_beacons > > behaviour_remotecall.c(224) - DEBUG - calls[10].name=bot_scan_beacons passt > > behaviour_remotecall.c(402) - DEBUG - func=bot_scan_beacons param_count=2 Len= 1 1 0 > > behaviour_remotecall.c(244) - DEBUG - p_data=0 0 0 0 > > behaviour_remotecall.c(245) - DEBUG - 0 0 0 0 > > behaviour_remotecall.c(246) - DEBUG - fe 80 3c 89 > > behaviour_remotecall.c(406) - DEBUG - p_data=0 0 0 0 > > behaviour_remotecall.c(407) - DEBUG - 0 0 0 0 > > behaviour_remotecall.c(409) - DEBUG - 0 0 0 0 > > behaviour_remotecall.c(296) - DEBUG - Enter bot_remotecall_behaviour > > behaviour_remotecall.c(300) - DEBUG - REMOTE_CALL_SCHEDULED > > behaviour_remotecall.c(325) - DEBUG - function_id=10 > > behaviour_remotecall.c(326) - DEBUG - parameter_count=2 > > behaviour_scan_beacons.c(305) - DEBUG - Start behaviour > > behaviour_scan_beacons.c(316) - DEBUG - Suche 1. Landmarke... > > behaviour_scan_beacons.c(113) - DEBUG - BPS-Sensor meldet Landmarke: > > behaviour_scan_beacons.c(114) - DEBUG - ID=0x70a > > behaviour_scan_beacons.c(129) - DEBUG - 1.Landmarke 1802 sichtbar ab 176G. > > behaviour_scan_beacons.c(150) - DEBUG - 1.Landmarke sichtbar bis 179G. > > behaviour_scan_beacons.c(153) - DEBUG - Nehme 178G. als Richtung d. Landmarke > > behaviour_scan_beacons.c(164) - DEBUG - Suche 2. Landmarke... > > behaviour_scan_beacons.c(113) - DEBUG - BPS-Sensor meldet Landmarke: > > behaviour_scan_beacons.c(114) - DEBUG - ID=0x407 > > behaviour_scan_beacons.c(129) - DEBUG - 2.Landmarke 1031 sichtbar ab 207G. > > behaviour_scan_beacons.c(150) - DEBUG - 2.Landmarke sichtbar bis 211G. > > behaviour_scan_beacons.c(153) - DEBUG - Nehme 209G. als Richtung d. Landmarke > > behaviour_scan_beacons.c(164) - DEBUG - Suche 3. Landmarke... > > behaviour_scan_beacons.c(113) - DEBUG - BPS-Sensor meldet Landmarke: > > behaviour_scan_beacons.c(114) - DEBUG - ID=0x404 > > behaviour_scan_beacons.c(129) - DEBUG - 3.Landmarke 1028 sichtbar ab 232G. > > behaviour_scan_beacons.c(150) - DEBUG - 3.Landmarke sichtbar bis 235G. > > behaviour_scan_beacons.c(153) - DEBUG - Nehme 234G. als Richtung d. Landmarke > > behaviour_scan_beacons.c(157) - DEBUG - Berechne Position aus Landmarken > > behaviour_scan_beacons.c(85) - DEBUG - Pos v. Landmarke 1028: (1080|1080) > > behaviour_scan_beacons.c(85) - DEBUG - Pos v. Landmarke 1031: (1080|1800) > > behaviour_scan_beacons.c(85) - DEBUG - Pos v. Landmarke 1802: (1800|2520) > > behaviour_scan_beacons.c(223) - DEBUG - A=(1080|1080) M=(1080|1800) B=(1800|2520) > > behaviour_scan_beacons.c(224) - DEBUG - angle_am=24; angle_mb=31 > > behaviour_scan_beacons.c(85) - DEBUG - Pos v. Landmarke 1028: (1080|1080) > > behaviour_scan_beacons.c(240) - DEBUG - > Berechnete Position: (2090|600) > > behaviour_scan_beacons.c(241) - DEBUG - > Heading: 244 > > behaviour_scan_beacons.c(242) - DEBUG - > Bisherige Position: (1350|-236) > > behaviour_scan_beacons.c(243) - DEBUG - > Heading: 234 > > behaviour_scan_beacons.c(253) - DEBUG - Aktualisiere Positionsdaten > > behaviour_scan_beacons.c(275) - DEBUG - Suche nach Landmarken beendet > > behaviour_remotecall.c(296) - DEBUG - Enter bot_remotecall_behaviour > > behaviour_remotecall.c(354) - DEBUG - Remote-call bot_scan_beacons beendet (1)