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

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]

Berechnung der Bot-Drehung (war: [ct-bot] neues Stackverhalten zum Merken relevanter Wegepositionen)

Absender: Timo Sandmann
Datum: So, 30.03.2008 18:17:15


Hallo,

Am 30.03.2008 um 13:25 schrieb Frank Menzel:
Hallo,
also die Routine habe ich fast kopiert aus behaviour_goto_pos, wo es da
heisst:

/* Noch in die gewuenschte Blickrichtung drehen */
		int16_t to_turn = (int16_t)(dest_head -
(int16_t)heading) % 360;
			if (to_turn > 180) to_turn = 360 - to_turn;
			else if (to_turn < -180) to_turn += 360;
			LOG_DEBUG("to_turn=%d", to_turn);
			bot_turn(NULL, to_turn);


Soll eben nur die Winkeldifferenz berechnen... Tiefschürfende Gedanken
habe ich über die einzelnen Zeilen nicht verloren, da die Routine ja wie
gewollt zur Differenzermittlung zwischen Winkeln funktioniert...

nun ja, der Code dort hat aber eine andere Aufgabe: Es soll berechnet werden, wie weit sich der Bot drehen muss, um einen Zielwinkel zu erreichen. Dabei soll er sich so herum drehen, dass die Drehdauer möglichst kurz ist. Wenn er z.B. nach 40 Grad schaut und der Zielwinkel 340 Grad ist, soll er sich nicht um 300 Grad, sondern um -60 Grad drehen. Das entspricht aber weder der Dokumentation von calc_diff_from_angles() noch ist es das, was du beim Stackverhalten möchtest. Dort soll ja geprüft werden, wie weit sich der Bot tatsächlich gedreht hat (also z.B. um 300 Grad von 340 Grad bis 40 Grad) und nicht der kleinste Drehwinkel zwischen zwei Position berechnet werden.

Eine allgemeine Funktion, die ermittelt, wie weit sich der Bot gedreht hat, finde ich schon sehr sinnvoll, die lässt sich bestimmt auch in anderen Verhalten noch gut anwenden. Nur sollte sie dann auch wirklich das berechnen, was beschrieben ist ;-)

Vielleicht machen wir die Funktion so, dass sie berücksichtig, in welche Richtung sich der Bot gerade bewegt und dann den gedrehten Winkel seit einem alten heading zurückgibt?

Gruß Timo