Absender: Timo Sandmann
Datum: Fr, 29.01.2010 19:55:29
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hallo zusammen, hier mal wieder ein kleiner Überblick zu den letzten Updates im SVN: 1. Durch einige Optimierungen läuft das Map-Update auf dem echten Bot nun deutlichen schneller ab, außerdem benötigt der Code weniger Platz im Flash des Controllers. 2. In sensor_update() berechnete (Zwischen-) Ergebnisse stehen als globale Variablen zur Verfügung, um doppelte Berechnungen in den Verhalten vermeiden zu können. Das betrifft insbesondere sin(heading) und cos(heading), die auf dem ATmega sehr viel Rechenzeit benötigen. Die neuen Variablen sind: int16_t heading_int; /*!< (int16_t) heading */ int16_t heading_10_int; /*!< = (int16_t) (heading * 10.0f) */ float heading_sin; /*!< = sin(rad(heading)) */ float heading_cos; /*!< = cos(rad(heading)) */ 3. Neuen Hilfsfunktionen in math_utils.h: static inline double rad(double degree) rechnet einen Winkel von Grad nach Bogenmaß um static inline double deg(double radian) rechnet einen Winkel von Bogenmaß nach Grad um float calc_angle_diff_rad(int16_t xDiff, int16_t yDiff) berechnet eine Winkeldifferenz (wie calc_angle_diff() es in Grad tut) im Bogenmaß 4. bot_goto_pos() braucht weniger Platz im Flash 5. Abschätzung des (maximalen) Fehlers bei der Positionsbestimmung aus Encoder-Daten, mit der Option MEASURE_POSITION_ERRORS_AVAILABLE. Die globale Variable pos_error_radius enthält dann den Radius eines Kreises um die aktuelle Bot-Position, innerhalb dessen die Bot-Position liegen kann. Angezeigt wird der aktuelle Wert auch auf dem Odometrie-Display (err). Berücksichtigt werden derzeit nur die Positionsdaten von den Rad-Encodern. Wenn MAP_2_SIM_AVAILABLE an ist, wird die Fehlerabschätzung auch grafisch in der Map-Anzeige des Sim dargestellt (dafür wird die auch neue Sim-Version benötigt). Da die Unsicherheit mit jeder Drehrichtungsänderung der Räder zunimmt, macht das Ganze natürlich nur Sinn, wenn sich der Bot in der Umgebung lokalisieren und somit die Unsicherheit wieder verringern kann. Dafür gibt es bisher nur die Implementierung zur Lokalisierung mit IR-Baken. Angedacht ist aber außerdem eine Lokalisierung an Hand der Map-Informationen, hierzu gibt es aber noch keine Implementierung, ob sich das mit einem ATmega-Prozessor realisieren lässt, ist im Moment auch nicht so ganz klar. Das Ganze ist also mehr eine Sache zum Experimentieren, aber vielleicht interessiert es ja jemanden. Viele Grüße, Timo -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.12 (Darwin) iEYEARECAAYFAktjLyAACgkQDH/BX4067fKcGgCgnIqafsupL7w64rXoAjzU47Ml bCgAniCSbz28eF3J2/v0jLfKpLTTRoHH =diaq -----END PGP SIGNATURE-----