c't

c't-Projekte - Mailinglisten


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

[ct-bot] Zu weite Kurven in bot_drive()

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