c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Torsten Evers
Datum: Mo, 20.03.2006 22:09:01
Hallo,
für einige Algorithmen ist die Funktion bot_drive() selbst bei Angabe des
maximalen Krümmungswerts (127) zu harmlos, was die Kurvenfahrt angeht. Das
liegt daran, dass nur ein Rad für den Bogen genutzt wird, das andere jedoch
in der angegebenen Geschwindigkeit weiterfährt. Für enge Kurven reicht dies
nicht aus. Ich schlage daher vor, eine weitere Funktion aufzunehmen, die das
ganze etwas "radikaler" angeht:
void bot_drive_agressive(int8 curve, int speed){
// Wenn etwas ausgewichen wurde, bricht das Verhalten hier ab, sonst wuerde
es evtl. die Handlungsanweisungen von bot_avoid_harm() stoeren.
if(bot_avoid_harm()) return;
if(curve < 0) {
speedWishLeft = speed * (1.0 + 2.0*((float)curve/127));
speedWishRight = -speed * (1.0 + 2.0*((float)curve/127));
} else if (curve > 0) {
speedWishRight = -speed * (1.0 - 2.0*((float)curve/127));
speedWishLeft = speed * (1.0 - 2.0*((float)curve/127));
} else {
speedWishLeft = speed;
speedWishRight = speed;
}
}
Schöne Grüße,
Torsten Evers