heise online | · | c't | · | iX | · | Technology Review | · | Telepolis | · | mobil | · | Security | · | Netze | · | heise open | · | heise resale | · | Autos | · | c't-TV | · | Jobs | · | Kiosk

Aktuelles Heft #### Support Hotline & FAQ Tipps & Tricks Treiber & BIOS Firmenkontakte #### Download Software zu c't Software-Verzeichnis c't-Projekte Testbilder & Vorlagen #### Service Tipp-Datenbank c't-CD-Register Internettarife Telefontarife Virenschutz #### Magazin Heftarchiv c't specials English Pages Benchmarks Red. Stuff Leserforum c't-Bildmotive URLs aus c't Schlagseite #### Aktionen Browsercheck Krypto-Kampagne Schulen ans Netz Netz gegen Kinderporno TV/Radio-Termine #### Info Abo & Heft Veranstaltungen Mediadaten Kontakt Impressum Kleinanzeigen und Veranstaltungen
| 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
Antworten: Re: [ct-bot] Verhalten Parkett-Teppichrenze ? From: Thorsten Thiele Voriger (Datum): [ct-bot] Fehler durch Optimierungsflag, Andreas del Galdo Nächster (Datum): Re: [ct-bot] Verhalten Parkett-Teppichrenze ?, Thorsten Thiele Voriger (Thread): [ct-bot] Fehler durch Optimierungsflag, Andreas del Galdo Nächster (Thread): Re: [ct-bot] Verhalten Parkett-Teppichrenze ?, Thorsten Thiele Indizes: Datum Thread |

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