heise online | · | c't | · | iX | · | Technology Review | · | Telepolis | · | mobil | · | Security | · | Netze | · | Open Source | · | Resale | · | Foto | · | 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] neues catch_pillar-Verhalten mit goto_pos Absender: Frank Menzel Datum: Mi, 16.04.2008 13:04:51
    Hallo,
    anbei mal eine Catch_Pillar-Version, welche im Endeffekt das
    goto_pos-Verhalten zum Einfangen verwendet.
    Hierfür gibt es ein paar neue Routinen, welche z.B. die Koordinate des
    gesehenen Objektes ermitteln je nach Sensorentfernung und eine kleine
    Erweiterung für bot_turn, um dieses abzubrechen.
    Folgende Logik wird verwendet.
    -Bot_turn wird wird in 4 Schritten a 90 Grad aufgerufen (bei sofort 360
    Grad dreht er zu schnell und Objekt wird nicht erkannt)
    -Bot_turn wird abgebrochen falls Objekt gesehen wird (Abbruchfunktion)
    -Measure-Verhalten bestimmt genauen Abstand
    -Koordinate xy wird berechnet je nach Abstand
    -hat linker Sensor zuerst Objekt erkannt, wird etwas weiter gedreht bis
    rechts ebenfalls Objekt erkennt
    -Mittelwert beider Koordinaten wird mit goto_pos angefahren

    Das wars? Bei mir klappt die Sache recht gut.
    Das alte catch Pillar ist codemaessig noch drin und wird per define
    aktiviert. Ebenfalls wird das alte zugeschaltet bei nicht aktiviertem
    goto_pos-Verhalten (geht auch nur bei aktivierter Motorsteuerung) mit
    entsprechender Warning.

    Gruß, Frank Menzel
    Index: C:/eclipse/workspace/ct-Bot/bot-logic/behaviour_catch_pillar.c
    ===================================================================
    --- C:/eclipse/workspace/ct-Bot/bot-logic/behaviour_catch_pillar.c	(revision 1415)
    +++ C:/eclipse/workspace/ct-Bot/bot-logic/behaviour_catch_pillar.c	(working copy)
    @@ -28,8 +28,9 @@

     #include "bot-logic/bot-logik.h"
     #ifdef BEHAVIOUR_CATCH_PILLAR_AVAILABLE
    -
    +#include "math_utils.h"
     #include <math.h>
    +#include <stdlib.h>

     #define START 0
     #define SEARCH_LEFT 1
    @@ -44,6 +45,20 @@

     static uint8 catch_pillar_state=START;		/*!< Statusvariable fÃ¼r das Einfang-Verhalten */
     static uint8 unload_pillar_state=START;		/*!< Statusvariable fÃ¼r das Auslade-Verhalten */
    +
    +/* Soll das alte catch_pillar-Verhalten verwendet werden, dann das Define aktivieren; funktioniert nur
    + * bei aktiviertem GOT_POS-Verhalten
    + */
    +//#define CATCH_PILLAR_OLD
    +
    +#ifndef BEHAVIOUR_GOTO_POS_AVAILABLE
    +	#define CATCH_PILLAR_OLD
    +	#warning " Altes Catch Pillar definiert weil goto_pos_nicht definiert ist"
    +#endif
    +
    +
    +#ifdef CATCH_PILLAR_OLD
    +
     static int16 startangle=0;      			/*!< gemerkter Anfangswinkel einfach als Integer */
     /*!
      * Fange eine Dose ein
    @@ -146,7 +161,207 @@
     	switch_to_behaviour(caller,bot_catch_pillar_behaviour,OVERRIDE);
     }

    +#else
    +
    +
    +static uint8 counter=0;        // Vollkreis in mehreren Schritten zu je 90 Grad; dies ist die Zaehlervariable
    +
    +static uint8 turnsteps = 0;    // Anzahl Korrekur-Drehschritte
    +
    +static int16 destheading = 0;  // gemerkter Winkel bei Start, der damit auch Zielwinkel ist zur Differenzbildung
    +
    +static int16 turnangle = 0;    // Winkel, um den noch zu drehen ist bis zum Vollkreis
    +
    +static uint16 distance = 0;    // Abstand zum gesehenen Objekt
    +
    +static int8 check_sensorside=0; // Seite, auf der der Sensorabstand gecheckt wird
    +
    +static float PH_xl=0, PH_yl=0, PH_xr=0, PH_yr=0;  // berechnete Koordinaten zum Objekt jeweils vom linken und rechten Sensor
    +
    +#define DIST_GUILTY 250       // gueltiger Abstand zum Einfangobjekt
    +
    +#define MAX_TURN_STEPS 5      // maximale Drehschritte zur Korrektur
    +
    +#define MIN_DIST_SENSES 90    // minimal geforderter Abstand in mm zwischen beiden Sensoren
    +
    +#define OBJECT_FOUND_AFTER_CANCEL 3
    +#define MEASURE_DIST 5
    +#define OBJECT_FOUND_AFTER_MEASURE 6
    +#define TURN_BACK 7
    +#define OPEN_DOOR 8
    +#define GO_FORWARD 9
    +#define GO_TO_POINT 10
    +#define TURN_TO_RIGHT_SENSOR 11
    +#define GO_FOR_DROP 12
    +#define OBJ_NOT_GUILTY 13
    +
    +
    +
    +/* liefert True wenn Objekt nicht gueltig ist zum einfangen, z.B. Wand
    + * @return True wenn Objekt ungueltig sonst False
    + */
    +uint8 object_not_guilty(void) {
    +   if ((sensDistL <= DIST_GUILTY && sensDistR <= DIST_GUILTY) || abs(sensDistL-sensDistR)<=MIN_DIST_SENSES )
    +	 return True;
    +
    + return False;
    +}
    +
    +/* Abbruchfunktion fuer das Cancelverhalten waehrend der Drehung zum Erkennen eines Einfangobjektes
    + * @return True wenn gueltiges Objekt erkannt wurde sonst False
    + */
    +uint8 turn_cancel_check(void) {
    +      if (object_not_guilty())
    +        return False;  // beide zu klein gilt als ungueltiges Objekt
    +
    +	// Sensorabfrage als Richtwert; wenn Objekt gueltig Verhaltensvar auf Eintrittspunkt setzen
    +	    if (((sensDistL <= DIST_GUILTY && check_sensorside==-1) || sensDistR <= DIST_GUILTY)&&
    +	          abs(sensDistL-sensDistR)>MIN_DIST_SENSES )  {
    +	    	catch_pillar_state = OBJECT_FOUND_AFTER_CANCEL;
    +	    	return True;
    +	    }
    +
    +	return False;
    +}
    +
    +
    +
     /*!
    + * Fange eine Dose ein
    + * @param *data der Verhaltensdatensatz
    + */
    +void bot_catch_pillar_behaviour(Behaviour_t *data) {
    +	static int16_t distLeft, distRight;
    +
    +
    +	switch (catch_pillar_state) {
    +	case START:
    +	    bot_turn_with_checkfunction(data,turnangle,turn_cancel_check);
    +		counter++;
    +		if (counter>3)
    +		 catch_pillar_state=END;
    +		break;
    +
    +     case OBJECT_FOUND_AFTER_CANCEL:  // Objekt erkannt
    +        // kommt hierher weil Cancel zugeschlagen hatte und Objekt erkannt wurde
    +        // ist schon zu weit gedreht, wieder etwas zurueckdrehen sonst genau Abstand messen
    +
    +        // sehen beide Sensoren zu kleinen Abstand, dann ist dies wohl eine Wand und es geht weiter mit drehen
    +        if (object_not_guilty()) {
    +         catch_pillar_state=OBJ_NOT_GUILTY;
    +         break;
    +        }
    +
    +        // bei Gueltigkeit evtl. Korrektur notwendig
    +        catch_pillar_state=TURN_BACK;
    +
    +        turnsteps=0;
    +        break;
    +
    +
    +   case TURN_BACK:  // mit kleinen Schritten zurueckdrehen
    +       	  if (turn_cancel_check()) { // Falls Sensor Objekt erkennt genauen Abstand messen
    +       		catch_pillar_state=MEASURE_DIST;
    +       		break;
    +       	}
    +       	turnsteps++;  // Korrektur nach rechts weil wohl zu weit nach links gedreht
    +       	speedWishLeft= check_sensorside * -BOT_SPEED_SLOW;
    +		speedWishRight=check_sensorside * BOT_SPEED_SLOW;
    +
    +        if (turnsteps > MAX_TURN_STEPS)
    +          catch_pillar_state=OBJ_NOT_GUILTY;
    +
    +        break;
    +
    +   case OBJ_NOT_GUILTY:
    +    // maximale Korrektursteps erreicht ohne Objekt zu erkennen, Restdrehung vollziehen in Stepwinkel
    +         turnangle = 360-turned_angle(destheading);
    +         if (turnangle>90) {
    +           counter=0;    // hier wieder in 4 Restschritten drehen
    +           turnangle=turnangle / 4;
    +         }
    +         else
    +           counter=END;
    +
    +         catch_pillar_state=START;  // geht mit Start los
    +         turnsteps=0;
    +       break;
    +
    +
    +   case MEASURE_DIST:
    +    	//genaue Entfernung zum Hindernis messen
    +		bot_measure_distance(data, &distLeft, &distRight);
    +		catch_pillar_state = OPEN_DOOR;
    +       break;
    +
    +   case OPEN_DOOR:
    +        if (distLeft>DIST_GUILTY && distRight>DIST_GUILTY ) {// bei ungueltigem Abstand nach Messung Restdrehung
    +			catch_pillar_state=TURN_BACK;
    +			turnsteps=0;
    +			break;
    +		}
    +        catch_pillar_state = OBJECT_FOUND_AFTER_MEASURE;
    +        break;
    +
    +   case OBJECT_FOUND_AFTER_MEASURE:
    +        // nehme den Sensorabstand vom Sensor, welcher auch Objekt sieht
    +        if (distLeft<=DIST_GUILTY ) {
    +        	distance=distLeft;
    +        	calc_point_distsensor_award(distance,-1, &PH_xl,&PH_yl);
    +        	catch_pillar_state = TURN_TO_RIGHT_SENSOR;
    +        }
    +        else {
    +        	distance=distRight;
    +        	calc_point_distsensor_award(distance,+1, &PH_xr,&PH_yr);
    +        	catch_pillar_state = GO_TO_POINT;
    +        	bot_servo(data,SERVO1,DOOR_OPEN); // Klappe auf
    +        }
    +
    +       break;
    +
    +case TURN_TO_RIGHT_SENSOR:
    +		     check_sensorside=1;
    +		     catch_pillar_state =TURN_BACK;
    +		     turnsteps=0;
    +
    +			break;
    +
    +case   GO_TO_POINT:
    +        // Hatte rechter Sensor zuerst Objekt erkannt, gibt es keine linken Koords und die rechten koords werden genommen
    +        (PH_xl==0 && PH_yl==0)? bot_goto_pos(data,PH_xr,PH_yr,999): bot_goto_pos(data,((PH_xl + PH_xr) / 2),((PH_yl + PH_yr) / 2),999);
    +		catch_pillar_state =END;
    +       break;
    +
    +	default:
    +
    +	    //deactivateBehaviour(bot_cancel_behaviour_behaviour);  // sicherheitshalber
    +	    if (sensTrans ==1)  // Klappe schliessen falls Objekt eingefangen wurde
    +	      bot_servo(data,SERVO1,DOOR_CLOSE);
    +
    +		return_from_behaviour(data);
    +		break;
    +	}
    +}
    +
    +
    +void bot_catch_pillar(Behaviour_t * caller) {
    +	catch_pillar_state=START;
    +	counter=0;
    +	turnsteps=0;
    +	turnangle=90;  // Drehwinkel zum Start in mehreren Schritten um xx Grad
    +	check_sensorside=-1;  // linker Sensor ergibt Abbruchbedingung
    +	destheading = heading;
    +	PH_xl=0; PH_yl=0; PH_xr=0; PH_yr=0;
    +    switch_to_behaviour(caller,bot_catch_pillar_behaviour,OVERRIDE);
    +    /* Kollisions-Verhalten ausschalten  */
    +	#ifdef BEHAVIOUR_AVOID_COL_AVAILABLE
    +		deactivateBehaviour(bot_avoid_col_behaviour);
    +	#endif
    +}
    +
    +#endif
    +
    +/*!
      * Gibt die Dose wieder aus, Entladevorgang
      * @param *data der Verhaltensdatensatz
      */
    Index: C:/eclipse/workspace/ct-Bot/bot-logic/behaviour_turn.c
    ===================================================================
    --- C:/eclipse/workspace/ct-Bot/bot-logic/behaviour_turn.c	(revision 1415)
    +++ C:/eclipse/workspace/ct-Bot/bot-logic/behaviour_turn.c	(working copy)
    @@ -67,6 +67,13 @@
      	float turn_last_err = 0.0;					/*!< letzter Drehfehler in Grad */
     #endif

    +/*!
    + * Abbruchfunktion des Verhaltens()
    + * Die Funktion, mit der das bot_explore_behaviour() feststellt, ob es etwas gefunden hat.
    + * Die Funktion muss True (1) zurueckgeben, wenn dem so ist, sonst False (0).
    + * Beispiele fuer eine solche Funktion sind check_for_light, is_good_pillar_ahead etc.
    + */
    + static uint8 (*check_function)(void)=0;

     /*!
      * @brief			Das Verhalten laesst den Bot eine Punktdrehung durchfuehren.
    @@ -77,6 +84,10 @@
      * Winkeln dann nur noch mit geringer Geschwindigkeit.
      */
     void bot_turn_behaviour(Behaviour_t *data) {
    +
    +	if (check_function && (*check_function)()) // wenn ueberhaupt definiert und Abbruchbedingung erfuellt
    +		return_from_behaviour(data);
    +
     	/* Differenz zum Zielwinkel berechnen (in Drehrichtung gesehen) */
     	int16_t heading_16 = (int16_t)(heading*10);
     	int16_t diff;
    @@ -155,6 +166,10 @@
     void bot_turn(Behaviour_t *caller, int16 degrees) {
     //	LOG_DEBUG("bot_turn(%d)", degrees);

    +    // bei Aufruf von anderem Verhalten aus ist dies die Abbruchfunktion, d.h. es wird
    +	// wieder zum aufrufenden Verhalten zurueckgekehrt wenn diese Bedingung wahr ist
    +	check_function = 0;
    +
     	/* Parameter begrenzen */
      	while (degrees >  360) degrees -= 360;
      	while (degrees < -360) degrees += 360;
    @@ -201,4 +216,20 @@
     	switch_to_behaviour(caller, bot_turn_behaviour, OVERRIDE);
     }

    +/*!
    + * @brief			Dreht den Bot im mathematischen Drehsinn mit Uebergabe einer Abbruchfunktion.
    + * @param caller	Der Aufrufer
    + * @param degrees 	Grad, um die der Bot gedreht wird. Negative Zahlen drehen im (mathematisch negativen) Uhrzeigersinn.
    + * 					zwischen -360 und +360
    + * @param check		Abbruchfunktion; wenn diese True liefert wird das Verhalten beendet
    + */
    +void bot_turn_with_checkfunction(Behaviour_t *caller, int16 degrees, uint8 (*check)(void)) {
    +
    +	bot_turn(caller, degrees);
    +	// bei Aufruf von anderem Verhalten aus ist dies die Abbruchfunktion, d.h. es wird
    +	// wieder zum aufrufenden Verhalten zurueckgekehrt wenn diese Bedingung wahr ist
    +	check_function = check;
    +}
    +
    +
     #endif	// BEHAVIOUR_TURN_AVAILABLE
    Index: C:/eclipse/workspace/ct-Bot/math_utils.c
    ===================================================================
    --- C:/eclipse/workspace/ct-Bot/math_utils.c	(revision 1415)
    +++ C:/eclipse/workspace/ct-Bot/math_utils.c	(working copy)
    @@ -25,6 +25,7 @@
      */
     #include "ct-Bot.h"
     #include "sensor.h"
    +#include "bot-logic/bot-logik.h"
     #include <math.h>
     #include <stdlib.h>
     #include <stdio.h>
    @@ -94,3 +95,44 @@
     	/* Abstandsermittlung nach dem guten alten Pythagoras ohne Ziehen der Wurzel */
     	return (xt * xt + yt * yt);
     }
    +
    +/* ermittelt von einem gegebenen Punkt in Blickrichtung voraus in einem bestimmten Abstand die Koordinaten
    + * @param x_point x-Koordinate des gegebenen Punktes
    + * @param y_point y-Koordinate des gegebenen Punktes
    + * @param distance Abstand vom gegebenen Punkt, zu dem die Koordinate ermittelt werden soll
    + * @param h Blickrichtung bereits in Bogenmass umgerechnet oder bei 999 wird erst noch umgerechent
    + * @param *xpoint_dist x-Koordinate im Abstand voraus
    + * @param *ypoint_dist y-Koordinate im Abstand voraus
    + */
    +void calc_points_in_distance(float x_point, float y_point, int16 distance, float h, float *xpoint_dist, float *ypoint_dist) {
    +	     if (h==999)
    +	       h= heading * M_PI/180; // Umrechnung in Bogenmass
    +	    *xpoint_dist = x_point + (DISTSENSOR_POS_FW + distance) * cos(h);
    +	    *ypoint_dist = y_point + (DISTSENSOR_POS_FW + distance) * sin(h);
    +}
    +
    +
    +/* ermittelt von dem Abstandssensor links/ rechts in Blickrichtung voraus in einem bestimmten Abstand die Koordinaten
    + * @param distance Abstand vom Sensor; bei -1 werden nur die seitlichen Koordinaten vom Mittelpunkt zurueckgegeben
    + * @param sensorside -1 fuer linken Sensor sonst rechter Sensor genommen
    + * @param *xpoint_dist x-Koordinate im Abstand voraus
    + * @param *ypoint_dist y-Koordinate im Abstand voraus
    + */
    +void calc_point_distsensor_award(int16 distance, int8 sensorside, float *xpoint_dist, float *ypoint_dist) {
    +
    +  float h= heading * M_PI/180; // Umrechnung in Bogenmass
    +
    +  // Je nach Sensorauswahl wird Punkt seitlich vom Mittelpunkt berechnet mit seitlichem Sensorabstand
    +		if (sensorside==-1) {  // linker Sensor
    +			*xpoint_dist = x_pos - (DISTSENSOR_POS_SW * sin(h));
    +		    *ypoint_dist = y_pos + (DISTSENSOR_POS_SW * cos(h));
    +		}
    +		else { // rechter Sensor
    +			*xpoint_dist = x_pos + (DISTSENSOR_POS_SW * sin(h));
    +		    *ypoint_dist = y_pos - (DISTSENSOR_POS_SW * cos(h));
    +		}
    +
    +  // nun vom seitlichen Punkt voraus ab Hoehe Abstandssensoren Punkt ermitteln sonst nur die seitlichen Koordinaten
    +  if (distance>=0)
    +    calc_points_in_distance(*xpoint_dist,*ypoint_dist,distance,h,xpoint_dist,ypoint_dist);
    +}
    Index: C:/eclipse/workspace/ct-Bot/Changelog.txt
    ===================================================================
    --- C:/eclipse/workspace/ct-Bot/Changelog.txt	(revision 1415)
    +++ C:/eclipse/workspace/ct-Bot/Changelog.txt	(working copy)
    @@ -1,5 +1,7 @@
     CHANGELOG fuer c't-Bot
     ======================
    +2008-04-16 Frank Menzel [Menzelfr@xxxxxxx]: neues catch_pillar-Verhalten mit Verwendung goto_pos; altes Verhalten im Code drin gelassen und mit define aktivierbar
    +
     2008-04-15 Timo Sandmann [mail@xxxxxxxxxxxxxxx]: Map-Update laeuft nun in einem zweiten Thread
     												 Fifo verallgemeinert (MCU und PC), threadsicher gemacht
     												 BotOS-Threading fuer PC auf PThreads abgebildet
    Index: C:/eclipse/workspace/ct-Bot/ct-Bot.h
    ===================================================================
    --- C:/eclipse/workspace/ct-Bot/ct-Bot.h	(revision 1415)
    +++ C:/eclipse/workspace/ct-Bot/ct-Bot.h	(working copy)
    @@ -29,10 +29,10 @@
     /************************************************************
     * Module switches, to make code smaller if features are not needed
     ************************************************************/
    -//#define LOG_CTSIM_AVAILABLE		/*!< Logging zum ct-Sim (PC und MCU) */
    +#define LOG_CTSIM_AVAILABLE		/*!< Logging zum ct-Sim (PC und MCU) */
     //#define LOG_DISPLAY_AVAILABLE		/*!< Logging ueber das LCD-Display (PC und MCU) */
     //#define LOG_UART_AVAILABLE		/*!< Logging ueber UART (NUR fuer MCU) */
    -#define LOG_STDOUT_AVAILABLE 		/*!< Logging auf die Konsole (NUR fuer PC) */
    +//#define LOG_STDOUT_AVAILABLE 		/*!< Logging auf die Konsole (NUR fuer PC) */
     //#define LOG_MMC_AVAILABLE			/*!< Logging in eine txt-Datei auf MMC */
     #define USE_MINILOG					/*!< schaltet fuer MCU auf schlankes Logging um (nur in Verbindung mit Log2Sim) */

    @@ -72,7 +72,7 @@

     //#define MAP_AVAILABLE /*!< Aktiviere die Kartographie */

    -//#define SPEED_CONTROL_AVAILABLE /*!< Aktiviert die Motorregelung */
    +#define SPEED_CONTROL_AVAILABLE /*!< Aktiviert die Motorregelung */
     //#define ADJUST_PID_PARAMS		/*!< macht PID-Paramter zur Laufzeit per FB einstellbar */
     //#define SPEED_LOG_AVAILABLE 	/*!< Zeichnet Debug-Infos der Motorregelung auf MMC auf */

    Index: C:/eclipse/workspace/ct-Bot/include/bot-logic/behaviour_turn.h
    ===================================================================
    --- C:/eclipse/workspace/ct-Bot/include/bot-logic/behaviour_turn.h	(revision 1415)
    +++ C:/eclipse/workspace/ct-Bot/include/bot-logic/behaviour_turn.h	(working copy)
    @@ -51,5 +51,14 @@
      */
     void bot_turn(Behaviour_t* caller,int16 degrees);

    +/*!
    + * @brief			Dreht den Bot im mathematischen Drehsinn mit Uebergabe einer Abbruchfunktion.
    + * @param caller	Der Aufrufer
    + * @param degrees 	Grad, um die der Bot gedreht wird. Negative Zahlen drehen im (mathematisch negativen) Uhrzeigersinn.
    + * 					zwischen -360 und +360
    + * @param check		Abbruchfunktion; wenn diese True liefert wird das Verhalten beendet
    + */
    +void bot_turn_with_checkfunction(Behaviour_t *caller, int16 degrees, uint8 (*check)(void));
    +
     #endif
     #endif
    Index: C:/eclipse/workspace/ct-Bot/include/bot-logic/available_behaviours.h
    ===================================================================
    --- C:/eclipse/workspace/ct-Bot/include/bot-logic/available_behaviours.h	(revision 1415)
    +++ C:/eclipse/workspace/ct-Bot/include/bot-logic/available_behaviours.h	(working copy)
    @@ -18,7 +18,7 @@
     //#define BEHAVIOUR_HANG_ON_AVAILABLE	/*!< Erkennen des Haengenbleibens als Notfallverhalten? */
     //#define BEHAVIOUR_GOTO_AVAILABLE	/*!< goto vorhanden? */
     //#define BEHAVIOUR_GOTOXY_AVAILABLE	/*!< gotoxy vorhanden? */
    -//#define BEHAVIOUR_GOTO_POS_AVAILABLE	/*!< goto_pos vorhanden? */
    +#define BEHAVIOUR_GOTO_POS_AVAILABLE	/*!< goto_pos vorhanden? */
     #define BEHAVIOUR_TURN_AVAILABLE	/*!< turn vorhanden? */
     //#define BEHAVIOUR_TURN_TEST_AVAILABLE	/*!< turn_test vorhanden? */

    Index: C:/eclipse/workspace/ct-Bot/include/math_utils.h
    ===================================================================
    --- C:/eclipse/workspace/ct-Bot/include/math_utils.h	(revision 1415)
    +++ C:/eclipse/workspace/ct-Bot/include/math_utils.h	(working copy)
    @@ -94,4 +94,13 @@
      */
     int16 get_dist(int16 x1, int16 y1, int16 x2, int16 y2);

    +/* ermittelt von dem Abstandssensor links/ rechts in Blickrichtung voraus in einem bestimmten Abstand die Koordinaten
    + * @param distance Abstand vom Sensor; bei -1 werden nur die seitlichen Koordinaten vom Mittelpunkt zurueckgegeben
    + * @param sensorside -1 fuer linken Sensor sonst rechter Sensor genommen
    + * @param *xpoint_dist x-Koordinate im Abstand voraus
    + * @param *ypoint_dist y-Koordinate im Abstand voraus
    + */
    +void calc_point_distsensor_award(int16 distance, int8 sensorside, float *xpoint_dist, float *ypoint_dist);
    +
    +
     #endif	/*MATH_UTILS_H_*/
    Index: C:/eclipse/workspace/ct-Bot/include/rc5-codes.h
    ===================================================================
    --- C:/eclipse/workspace/ct-Bot/include/rc5-codes.h	(revision 1415)
    +++ C:/eclipse/workspace/ct-Bot/include/rc5-codes.h	(working copy)
    @@ -254,6 +254,7 @@
     	#define RC5_CODE_BWD		(0x3011 & RC5_MASK)		/*!< Backward Taste */
     	#define RC5_CODE_FWD		(0x3010 & RC5_MASK)		/*!< Forward Taste */

    +    #define RC5_CODE_CH_PC		(0x1010 & RC5_MASK)		/*!< Taste neben dem Minus */
     	#define RC5_CH_PLUS		(0x1020 & RC5_MASK)		/*!< Ch + Taste */
      	#define RC5_CH_MINUS		(0x1021 & RC5_MASK)		/*!< Ch - Taste */

    Index: C:/eclipse/workspace/ct-Bot/.cdtbuild
    ===================================================================
    --- C:/eclipse/workspace/ct-Bot/.cdtbuild	(revision 1415)
    +++ C:/eclipse/workspace/ct-Bot/.cdtbuild	(working copy)
    @@ -10,8 +10,8 @@
     <option id="gnu.c.compiler.option.include.paths.387475860" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
     <listOptionValue builtIn="false" value="&quot;${ProjDirPath}&quot;"/>
     <listOptionValue builtIn="false" value="&quot;${ProjDirPath}/include&quot;"/>
    -<listOptionValue builtIn="false" value="&quot;C:\Programme\MinGW\include&quot;"/>
    -<listOptionValue builtIn="false" value="&quot;C:\Programme\pthreads\pthreads.2&quot;"/>
    +<listOptionValue builtIn="false" value="&quot;C:\MinGW\include&quot;"/>
    +<listOptionValue builtIn="false" value="&quot;C:\pthreads\pthreads.2&quot;"/>
     </option>
     <option id="gnu.c.compiler.option.preprocessor.def.symbols.1823712582" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
     <listOptionValue builtIn="false" value="PC"/>
    @@ -27,8 +27,8 @@
     <listOptionValue builtIn="false" value="pthreadGC2"/>
     </option>
     <option id="gnu.c.link.option.paths.142594843" superClass="gnu.c.link.option.paths" valueType="stringList">
    -<listOptionValue builtIn="false" value="&quot;C:\Programme\pthreads\Pre-built.2\lib&quot;"/>
    -<listOptionValue builtIn="false" value="&quot;C:\Programme\MinGW\lib&quot;"/>
    +<listOptionValue builtIn="false" value="&quot;C:\pthreads\Pre-built.2\lib&quot;"/>
    +<listOptionValue builtIn="false" value="&quot;C:\MinGW\lib&quot;"/>
     </option>
     <option id="gnu.c.link.option.noshared.1812776571" superClass="gnu.c.link.option.noshared" value="true" valueType="boolean"/>
     </tool>
    @@ -111,7 +111,7 @@
     <option id="gnu.c.compiler.option.preprocessor.def.symbols.736140060" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
     <listOptionValue builtIn="false" value="MCU"/>
     </option>
    -<option id="gnu.c.compiler.option.misc.other.462981231" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -mmcu=atmega32 -Wstrict-prototypes" valueType="string"/>
    +<option id="gnu.c.compiler.option.misc.other.462981231" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0 -mmcu=atmega644 -Wstrict-prototypes" valueType="string"/>
     <option id="gnu.c.compiler.option.optimization.flags.1587419901" superClass="gnu.c.compiler.option.optimization.flags" value="-Os" valueType="string"/>
     </tool>
     <tool command="g++" id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1457522364" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug"/>
    @@ -123,7 +123,7 @@
     <listOptionValue builtIn="false" value="&quot;C:\Programme\WinAVR\lib&quot;"/>
     </option>
     <option id="gnu.c.link.option.noshared.456282519" name="No shared libraries (-static)" superClass="gnu.c.link.option.noshared" value="false" valueType="boolean"/>
    -<option id="gnu.c.link.option.ldflags.918822459" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-mmcu=atmega32" valueType="string"/>
    +<option id="gnu.c.link.option.ldflags.918822459" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-mmcu=atmega644" valueType="string"/>
     </tool>
     <tool command="g++" id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.1073017226" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug"/>
     <tool command="as" id="cdt.managedbuild.tool.gnu.assembler.exe.debug.212943627" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug"/>
    Index: C:/eclipse/workspace/ct-Bot/.settings/org.eclipse.cdt.core.prefs
    ===================================================================
    --- C:/eclipse/workspace/ct-Bot/.settings/org.eclipse.cdt.core.prefs	(revision 0)
    +++ C:/eclipse/workspace/ct-Bot/.settings/org.eclipse.cdt.core.prefs	(revision 0)
    @@ -0,0 +1,3 @@
    +#Tue Apr 15 20:08:14 CEST 2008
    +eclipse.preferences.version=1
    +indexerId=org.eclipse.cdt.core.fastIndexer
    Index: C:/eclipse/workspace/ct-Bot/.settings/org.eclipse.cdt.managedbuilder.core.prefs
    ===================================================================
    --- C:/eclipse/workspace/ct-Bot/.settings/org.eclipse.cdt.managedbuilder.core.prefs	(revision 1415)
    +++ C:/eclipse/workspace/ct-Bot/.settings/org.eclipse.cdt.managedbuilder.core.prefs	(working copy)
    @@ -1,13 +1,20 @@
    -#Thu Mar 29 15:23:55 CEST 2007
    -cdt.managedbuild.config.gnu.exe.debug.1197043799/internalBuilder/enabled=false
    -cdt.managedbuild.config.gnu.exe.debug.1197043799/internalBuilder/ignoreErr=true
    -eclipse.preferences.version=1
    -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.exe.debug.1077176217=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="CPATH" operation\="remove"/>\n<variable name\="C_INCLUDE_PATH" operation\="remove"/>\n</environment>\n
    -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.exe.debug.1197043799=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="CPATH" operation\="remove"/>\n<variable name\="C_INCLUDE_PATH" operation\="remove"/>\n</environment>\n
    -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.exe.debug.1197043799.2016949464=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="CPATH" operation\="remove"/>\n<variable name\="C_INCLUDE_PATH" operation\="remove"/>\n</environment>\n
    -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.exe.debug.1077176217=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="LIBRARY_PATH" operation\="remove"/>\n</environment>\n
    -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.exe.debug.1197043799=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="LIBRARY_PATH" operation\="remove"/>\n</environment>\n
    -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.exe.debug.1197043799.2016949464=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="LIBRARY_PATH" operation\="remove"/>\n</environment>\n
    -environment/project=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment/>\n
    -environment/project/cdt.managedbuild.config.gnu.exe.debug.1077176217=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment/>\n
    -environment/project/cdt.managedbuild.config.gnu.exe.debug.1197043799=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable delimiter\="\:" name\="PATH" operation\="append" value\="/usr/local/avr/bin"/>\n</environment>\n
    +#Wed Apr 16 10:32:35 CEST 2008
    +cdt.managedbuild.config.gnu.exe.debug.1077176217/internalBuilder/enabled=false
    +cdt.managedbuild.config.gnu.exe.debug.1077176217/internalBuilder/ignoreErr=true
    +cdt.managedbuild.config.gnu.exe.debug.1150677647/internalBuilder/enabled=false
    +cdt.managedbuild.config.gnu.exe.debug.1150677647/internalBuilder/ignoreErr=true
    +cdt.managedbuild.config.gnu.exe.debug.1197043799/internalBuilder/enabled=false
    +cdt.managedbuild.config.gnu.exe.debug.1197043799/internalBuilder/ignoreErr=true
    +eclipse.preferences.version=1
    +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.exe.debug.1077176217=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="CPATH" operation\="remove"/>\n<variable name\="C_INCLUDE_PATH" operation\="remove"/>\n</environment>\n
    +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.exe.debug.1150677647=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<environment>\r\n<variable name\="CPATH" operation\="remove"/>\r\n<variable name\="C_INCLUDE_PATH" operation\="remove"/>\r\n</environment>\r\n
    +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.exe.debug.1197043799=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="CPATH" operation\="remove"/>\n<variable name\="C_INCLUDE_PATH" operation\="remove"/>\n</environment>\n
    +environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.exe.debug.1197043799.2016949464=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="CPATH" operation\="remove"/>\n<variable name\="C_INCLUDE_PATH" operation\="remove"/>\n</environment>\n
    +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.exe.debug.1077176217=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="LIBRARY_PATH" operation\="remove"/>\n</environment>\n
    +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.exe.debug.1150677647=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<environment>\r\n<variable name\="LIBRARY_PATH" operation\="remove"/>\r\n</environment>\r\n
    +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.exe.debug.1197043799=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="LIBRARY_PATH" operation\="remove"/>\n</environment>\n
    +environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.exe.debug.1197043799.2016949464=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable name\="LIBRARY_PATH" operation\="remove"/>\n</environment>\n
    +environment/project=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<environment/>\r\n
    +environment/project/cdt.managedbuild.config.gnu.exe.debug.1077176217=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<environment/>\r\n
    +environment/project/cdt.managedbuild.config.gnu.exe.debug.1150677647=<?xml version\="1.0" encoding\="UTF-8"?>\r\n<environment/>\r\n
    +environment/project/cdt.managedbuild.config.gnu.exe.debug.1197043799=<?xml version\="1.0" encoding\="UTF-8"?>\n<environment>\n<variable delimiter\="\:" name\="PATH" operation\="append" value\="/usr/local/avr/bin"/>\n</environment>\n
Antworten: Re: [ct-bot] neues catch_pillar-Verhalten mit goto_pos From: Timo Sandmann Re: [ct-bot] neues catch_pillar-Verhalten mit goto_pos From: Timo Sandmann Re: [ct-bot] neues catch_pillar-Verhalten mit goto_pos From: Timo Sandmann Voriger (Datum): Re: [ct-bot] Taste RC5_CODE_CH_PC für Promo8, Timo Sandmann Nächster (Datum): [ct-bot] map aktiviert in neuestem CVS..., Frank Menzel Voriger (Thread): Re: [ct-bot] Taste RC5_CODE_CH_PC für Promo8, Timo Sandmann Nächster (Thread): Re: [ct-bot] neues catch_pillar-Verhalten mit goto_pos, Timo Sandmann Indizes: Datum Thread |

Copyright © 2008 Heise Zeitschriften Verlag Kritik, Anregungen bitte an c't-WWW Datenschutzhinweis Impressum International: heise online UK, heise Security UK, heise open source UK, heise networks UK, heise online Polska, heise Security Polska, heise open source Polska, heise networks Polska