## c't-Projekte - Mailinglisten

[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