heise online | · | c't | · | iX | · | Technology Review | · | Telepolis | · | mobil | · | Security | · | Netze | · | Open Source | · | Resale | · | Foto | · | Autos | · | c't-TV | · | Jobs | · | Kiosk

Aktuelles Heft #### Support Hotline & FAQ Tipps & Tricks Treiber & BIOS Firmenkontakte #### Download Software zu c't Software-Verzeichnis c't-Projekte Testbilder & Vorlagen #### Service Tipp-Datenbank c't-CD-Register Internettarife Telefontarife Virenschutz #### Magazin Heftarchiv c't specials English Pages Benchmarks Red. Stuff Leserforum c't-Bildmotive URLs aus c't Schlagseite #### Aktionen Browsercheck Krypto-Kampagne Schulen ans Netz Netz gegen Kinderporno TV/Radio-Termine #### Info Abo & Heft Veranstaltungen Mediadaten Kontakt Impressum Kleinanzeigen und Veranstaltungen
| c't Projekte - c't-Bot und c't-Sim - Mailinglisten ## c't-Bot und c't-Sim [Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)] [Nach Datum][Nach Thread] ### Re: [ct-bot] turned_angle() fehlerhaft ? Absender: Timo Sandmann Datum: Do, 19.06.2008 15:45:48 In-reply-to: <48C139945BA47F4DB4DE05DF62CD57AA03B51B4C7F@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> References: <48C139945BA47F4DB4DE05DF62CD57AA03B51B4BB1@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <0C1FE2A6-F027-43FD-9E26-34C6871EBD05@xxxxxxxxxxxxxxx> <48C139945BA47F4DB4DE05DF62CD57AA03B51B4C7F@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
    Hallo,

    Am 19.06.2008 um 15:00 schrieb Menzel, Frank IT-OO4:
>     Hallo,
> `habe mal in der Routine jede Stelle mit Protokollierung versehen und` `die letzten Ausgaben hier mal angefuegt:` `math_utils.c(72) - DEBUG - pos. Sinn diff ergibt: -339` `heading 5 angle 344` `math_utils.c(82) - DEBUG - Ueberlauf diff 21 heading 5` `angle 344`
>     math_utils.c(84)        - DEBUG -       Rueckgabe diff: 21
> `math_utils.c(72) - DEBUG - pos. Sinn diff ergibt: -338` `heading 6 angle 344` `math_utils.c(82) - DEBUG - Ueberlauf diff 22 heading 6` `angle 344`
>     math_utils.c(84)        - DEBUG -       Rueckgabe diff: 22
> `math_utils.c(72) - DEBUG - pos. Sinn diff ergibt: -338` `heading 7 angle 344` `math_utils.c(82) - DEBUG - Ueberlauf diff 22 heading 7` `angle 344`
>     math_utils.c(84)        - DEBUG -       Rueckgabe diff: 22
> `math_utils.c(72) - DEBUG - pos. Sinn diff ergibt: -338` `heading 7 angle 344` `math_utils.c(82) - DEBUG - Ueberlauf diff 22 heading 7` `angle 344`
>     math_utils.c(84)        - DEBUG -       Rueckgabe diff: 22
> `math_utils.c(72) - DEBUG - pos. Sinn diff ergibt: -336` `heading 8 angle 344` `math_utils.c(82) - DEBUG - Ueberlauf diff 24 heading 8` `angle 344`
>     math_utils.c(84)        - DEBUG -       Rueckgabe diff: 24
> `math_utils.c(72) - DEBUG - pos. Sinn diff ergibt: -336` `heading 8 angle 344` `math_utils.c(82) - DEBUG - Ueberlauf diff 24 heading 8` `angle 344`
>     math_utils.c(84)        - DEBUG -       Rueckgabe diff: 24
> `math_utils.c(76) - DEBUG - neg. Sinn diff ergibt: 336` `heading 8 angle 344`
>     math_utils.c(84)        - DEBUG -       Rueckgabe diff: 336:
`Der Ausgangswinkel war 344 Grad und die Routine ist im Linienfolger` `eingebaut und ruft diese ständig auf. Ach so, alles im Sim.` `Er dreht die ganze Zeit im Pos. Sinn, bis er bei 8 Grad aktueller` `Ausrichtung ist und berechnet den richtigen Winkel. Plötzlich ist da` `eine Drehrichtungskorrektur mit Drehung im neg. Sinn bei gleichem` `Winkel und ergibt damit anstatt 24 Grad die 336 Grad.`
`ja, das ist aus Sicht der Funktion turned_angle() auch richtig. Wie in` `der Doku steht, gibt sie zurück: "Winkeldifferenz [Grad] in Richtung` `der derzeitigen Botdrehung." und das ist im o.a. Fall dann 336 Grad.` `Klar, das möchtest du hier gar nicht haben, aber die Funktion kann ja` `nicht wissen, dass sich der Bot seit dem letzten Aufruf gar nicht um` `336 Grad gedreht hat.` `Ändert der Bot seine Drehrichtung, kann die Funktion mit einem` `Startwinkel aus der Zeit, wo sich der Bot andersherum drehte,` `natürlich kein korrektes Ergebnis mehr liefern.` `Zur Berechnung der Drehrichtung wird die aktuelle Geschwindigkeit der` `Räder herangezogen. Bei einem Richtungswechsel müsste die Funktion mit` `neuem Startwinkel aufgerufen werden.`
`Eine Alternative wäre, dass sich die Funktion das letzte Ergebnis` `merkt und nur die Änderung seit dem letzten Aufruf addiert, dann` `könnte sie aber nur noch exklusiv benutzt werden.` `Andere Möglichkeit (so war das eigentlich mal gedacht): Das Verhalten` `merkt sich heading vom letzten Aufruf und verwendet das für den` `nächsten Aufruf als angle. Dann liefert die Funktion die relative` `Änderung des Drehwinkels und das Verhalten bildet die Summe darüber.` `Wobei es dann vielleicht sinnvoll wäre, wenn eine Drehung im negativen` `Sinn auch als negativer Wert zurückgegeben wird und nicht immer in` `Richtung der aktuellen Drehung. Dann müsste man aber halt mit abs()` `arbeiten, wenn man die Richtung gar nicht wissen will.`
    Gruß Timo
Referenzen: [ct-bot] turned_angle() fehlerhaft ? From: Menzel, Frank IT-OO4 Re: [ct-bot] turned_angle() fehlerhaft ? From: Timo Sandmann RE: [ct-bot] turned_angle() fehlerhaft ? From: Menzel, Frank IT-OO4 Voriger (Datum): RE: [ct-bot] turned_angle() fehlerhaft ?, Menzel, Frank IT-OO4 Nächster (Datum): [ct-bot] Sim-Patch für Linienkreuzungen, Frank Menzel Voriger (Thread): RE: [ct-bot] turned_angle() fehlerhaft ?, Menzel, Frank IT-OO4 Nächster (Thread): [ct-bot] Sim-Patch für Linienkreuzungen, Frank Menzel Indizes: Datum Thread |

Copyright © 2008 Heise Zeitschriften Verlag Kritik, Anregungen bitte an c't-WWW Datenschutzhinweis Impressum International: heise online UK, heise Security UK, heise open source UK, heise networks UK, heise online Polska, heise Security Polska, heise open source Polska, heise networks Polska