heise online · c't · iX · Technology Review · Telepolis · mobil · Security · Netze · heise open · heise resale · 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]

[ct-bot] Verhalten Parkett-Teppichrenze ?

Absender: Peter Jonas
Datum: Mo, 01.05.2006 23:11:34


Hallo zusammen,
da in meinem Wohnzimmer auf dem Parkettboden ein für den Bot unüberwindbarer
Teppich liegt, suche ich nach einer Möglichkeit, beim Anfahren des Teppichs
eine Änderung der Fahrtrichtung zu erreichen. Da die Distanzsensoren hier
blind sind, soll die Änderung der Fahrtrichtung erfolgen, wenn bei positiver
Geschwindigkeit (speed_l >0, speed_r > 0) die Radencoder-Ticks sich nicht
mehr verändern, die Räder also stillstehen.
Ich habe dieses Verhalten mal testweise in der "bot_avoid_border_behaviour"
mit eingebaut: 
-----------------
void bot_avoid_border_behaviour(Behaviour_t *data){
	static int8 stopped=0;
	static int16 sensEncL_old=0;
	static int16 sensEncR_old=0;	

// ----- ursprünglicher Code, um Abgrund zu behandeln -----
	if (sensBorderL > BORDER_DANGEROUS)
		speedWishLeft=-BOT_SPEED_NORMAL;
	
	if (sensBorderR > BORDER_DANGEROUS)
		speedWishRight=-BOT_SPEED_NORMAL;
// ----- Ende der ursprünglichen Routine -------------

	if ((speed_l > 0) && (speed_r >0)) {  // Bot soll sich vorwärts bewegen
		if ((abs(sensEncL - sensEncL_old) < 2) && (abs(sensEncR - sensEncR_old) <
2))
			stopped++;
		if (stopped > 3) { 
			bot_turn(data,90);
			stopped=0;
		}
	}	
	sensEncL_old = sensEncL;
	sensEncR_old = sensEncR;
}
-----------------------

Dies scheint auf den ersten Blick auch zu funktionieren, aber nachdem der
Bot sich in den Teppich "gefressen" hat und dann planmäßig abdreht, wird die
Anzeige der Distanzsensoren nicht mehr aktualisiert (die letzten Werte
bleiben stehen). Dies passiert nur, wenn "bot_turn(data,90)" nicht
auskommentiert ist, also aktiv ist.

Ich habe im Augenblick keine Idee mehr, woran dies liegen kann. Ich vermute,
dass der Programmablauf in irgendeiner Routine hängenbleibt und dann nicht
mehr auf die Routine "bot_sens_isr()" trifft und daher die Distanzwerte
nicht mehr aktualisiert werden. Woran kann das liegen?

Gruß
 Peter Jonas




 

-- 
Analog-/ISDN-Nutzer sparen mit GMX SmartSurfer bis zu 70%!
Kostenlos downloaden: http://www.gmx.net/de/go/smartsurfer




Copyright © 2007 Heise Zeitschriften Verlag Kritik, Anregungen bitte an c't-WWW Datenschutzhinweis   Impressum