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: Frank Menzel
Datum: Mi, 01.08.2007 18:56:02
In-reply-to:
<F5989D05-9BDE-4B51-BB42-E4777FFE2BCE@xxxxxxxxxxxxxxx>
Hallo,
das Verhalten zum Erkennen des Hängenbleibens, welches bereits in
behaviour_map_go_destination implementiert war, habe ich mal rausgezogen
und als globales Notfallverhalten laut angehängtem Patch definiert.
Sobald also das Define gesetzt ist (wenn Maus verfügbar ist) und der bot
an einer Ecke hängen bleibt, so wird durch den registrierten Handler
etwas rückwärts via bot_drive_distance gefahren. Da alle bei Notfall
registrierten Routinen durchlaufen werden, können diese
verhaltensabhängigen Handlerroutinen entsprechend reagieren je nach
Verhalten.
Gruß,
Frank Menzel
Index: C:/botneuforpatch/ct-Bot/bot-logic/behaviour_map_go_destination.c
===================================================================
--- C:/botneuforpatch/ct-Bot/bot-logic/behaviour_map_go_destination.c (revision 1193)
+++ C:/botneuforpatch/ct-Bot/bot-logic/behaviour_map_go_destination.c (working copy)
@@ -80,7 +80,7 @@
static uint8 gotoStatexy=0; // Statusvar des xy-Fahr-Verhaltens
#ifdef MEASURE_MOUSE_AVAILABLE
- static uint8 statehangon=0; // Statusvar des Haengon-Verhaltens
+
#endif
/*!
@@ -91,13 +91,6 @@
static uint8 border_fired=False;
-/*!
- * True, wenn vom Haengenbleiben-Verhalten das Haengenbleiben des bots erkannt wurde
- * muss von Anwendung nach Auswertung wieder auf False gesetzt werden
- */
-static uint8 hangon_behaviour_fired=False;
-
-
/*! Elternposition, d.h. Botposition vor neuer Position */
static uint16 x_parent=0;
static uint16 y_parent=0;
@@ -105,6 +98,8 @@
/*!
* Notfallhandler, ausgefuehrt bei Abgrunderkennung; muss registriert werden
+ * Notfallroutine wird jetzt auch aufgerufen vom globalen Hang_On-Verhalten mit
+ * derselben Behandlung wie im Falle des Notfalls Abgrund
*/
void border_mapgo_handler(void) {
// Routine muss zuerst checken, ob map_go_destination auch gerade aktiv ist, da nur in diesem
@@ -118,53 +113,12 @@
}
+
// ============= eigenstaendiges Parallelverhalten zum eigentlichen Fahrverhalten =======
#ifdef MEASURE_MOUSE_AVAILABLE
- /*!
- * Verhalten zum Erkennen des Haengenbleibens des Bots; wenn MEASURE_MOUSE_AVAILABLE gesetzt werden Maus- und
- * Encoderdaten miteinander verglichen; wird der Bot-Stillstand erkannt, wird etwas rueckwaerts
- * gefahren und die Syncvar hangon_behaviour_fired gesetzt, damit das Haengenbleiben vom Fahrverhalten erkannt
- * wird und reagiert werden kann; koennte eigentlich im bot auch generell als uebergeordnetes Verhalten
- * eingesetzt werden, hier jedoch aktiviert zum Start des Fahrverhaltens selbst und bei Ankunft deaktiviert
- * @param *data der Verhaltensdatensatz
- */
- void bot_check_hang_on_behaviour(Behaviour_t *data) {
- switch (statehangon) {
- case 0:
- statehangon++;
- break;
- case 1:
- /* Check auf Haengenbleiben mit Rad-Durchdreh-Erkennung mit Mausvergleich
- * wenn Maus verfuegbar, so kann ein Haengenbleiben durch Vergleich der Encoder und
- * Mauswerte festgestellt werden, wie auf bot-Webseite schon mal beschrieben
- */
- if ( !((abs(v_enc_left-v_mou_left) < STUCK_DIFF) && (abs(v_enc_right-v_mou_right) < STUCK_DIFF)) ) {
- // Syncvar setzen, dass Verhalten zugeschlagen hat
- hangon_behaviour_fired = True;
- // etwas rueckwaerts fahren;
- #ifdef BEHAVIOUR_DRIVE_DISTANCE_AVAILABLE
- bot_drive_distance(data,0,-BOT_SPEED_FOLLOW,10);
- #endif
- }
- break;
-// default:
-// // wird eigentlich nicht erreicht, da Endlosverhalten
-// return_from_behaviour(data);
-// break;
- }
- }
-
- /*!
- * Botenverhalten zum Starten des Haengenbleiben-Verhaltens
- * @param *caller der Verhaltensdatensatz
- */
- static void bot_check_hang_on(Behaviour_t *caller) {
- statehangon=0;
- switch_to_behaviour(caller, bot_check_hang_on_behaviour,NOOVERRIDE);
- }
#endif // MEASURE_MOUSE_AVAILABLE
@@ -510,9 +464,7 @@
break;
case INITIAL_GETPATH:
- #ifdef MEASURE_MOUSE_AVAILABLE
- deactivateBehaviour(bot_check_hang_on_behaviour);
- #endif
+
// naechsten Punkt nach Potenzialfeldmethode ermitteln, Wert steht dann in next_x, next_y
next_x=0;
next_y=0;
@@ -550,12 +502,7 @@
// Umschaltung zum Drehverhalten; Drehung zum Zwischenziel wenn noetig
bot_turn(data,bot_gotoxy_calc_turn(xDiff,yDiff));
- // Aktivierung des Verhaltens der Haengenbleiben-Erkennung; laeuft parallel zu diesem
- // Fahr-Verhalten (falls es noch nicht laeuft); beim Haengenbleiben wird eine Sync-Variable
- // gesetzt (_fired), die hier ausgewertet und rueckgesetzt werden muss
- #ifdef MEASURE_MOUSE_AVAILABLE
- bot_check_hang_on(0);
- #endif
+
break;
case DRIVE_TO_NEXT:
@@ -604,7 +551,8 @@
// wenn Map-Abgrundverhalten Loch erkennt, da ja bot gerade ueber Abgrund gehangen hatte, ist
// neue Wegsuche mit Hindernis voraus aufzuruefen
- // vom Notfallverhalten wurde durch die registrierte Proc Abgrundkennung gesetzt
+ // vom Notfallverhalten wurde durch die registrierte Proc Abgrundkennung gesetzt; Notfallverhalten
+ // jetzt auch durch das jetzt globale hang_on Verhalten aufgerufen und kommt hierher
if (border_fired) {
border_fired=False; // wieder ruecksetzen, erst durch Abgrundverhalten neu gesetzt
gotoStatexy=NEXT_IS_HAZARD; // Hindernis voraus
@@ -619,14 +567,6 @@
break;
}
- // hier Check ob Haengenbleiben-Verhalten zugeschlagen hat; koennte genauso behandelt werden
- // wie beim Abgrundverhalten mit Registrierung; wird aber hier immer ab- und zugeschaltet
- if (hangon_behaviour_fired) { // Syncvar wurde vom H.-Verhalten gesetzt
- gotoStatexy=NEXT_IS_HAZARD; // Hindernis voraus
- hangon_behaviour_fired=False; // Syncvar wieder ruecksetzen
- break;
- }
-
// hier ist der eigentliche Antrieb fuer das Fahren
#ifdef PC
speedWishLeft=BOT_SPEED_FAST;
@@ -730,10 +670,6 @@
case POS_REACHED:
// hier ist das gewuenschte Endziel erreicht
gotoStatexy=DIRECTION_GOAL;
- // Parallelverhalten ausschalten da nicht mehr benoetigt
- #ifdef MEASURE_MOUSE_AVAILABLE
- deactivateBehaviour(bot_check_hang_on_behaviour);
- #endif
return_from_behaviour(data);
break;
}
Index: C:/botneuforpatch/ct-Bot/bot-logic/behaviour_hang_on.c
===================================================================
--- C:/botneuforpatch/ct-Bot/bot-logic/behaviour_hang_on.c (revision 0)
+++ C:/botneuforpatch/ct-Bot/bot-logic/behaviour_hang_on.c (revision 0)
@@ -0,0 +1,67 @@
+/*
+ * c't-Bot
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ * This program is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ *
+ */
+
+/*!
+ * @file behaviour_hang_on.c
+ * @brief Erkennen des Haengenbleibens als Notfallverhalten
+ *
+ * @author Frank Menzel (Menzelfr@xxxxxxx)
+ * @date 31.07.07
+ */
+
+#include "bot-logic/bot-logik.h"
+#include <stdlib.h>
+#include <math.h>
+
+#ifdef BEHAVIOUR_HANG_ON_AVAILABLE
+
+/*!
+ * Notfallhandler, ausgefuehrt nach Haengenbleiben zum rueckwaertsfahren; muss registriert werden zum
+ * rueckwaertsfahren
+ */
+void hang_on_handler(void) {
+ // Routine muss zuerst checken, ob das hang_on Verhalten auch gerade aktiv ist, da nur in diesem
+ // Fall etwas gemacht werden muss
+ if (!behaviour_is_activated(bot_hang_on_behaviour))
+ return;
+
+ #ifdef BEHAVIOUR_DRIVE_DISTANCE_AVAILABLE
+ bot_drive_distance(0,0,-BOT_SPEED_FOLLOW,5);// 5cm rueckwaerts bei Haengenbleiben
+ #endif
+}
+
+
+ /* Check auf Haengenbleiben mit Rad-Durchdreh-Erkennung mit Mausvergleich
+ * wenn Maus verfuegbar, so kann ein Haengenbleiben durch Vergleich der Encoder und
+ * Mauswerte festgestellt werden, wie auf bot-Webseite schon mal beschrieben
+ */
+ void bot_hang_on_behaviour(Behaviour_t *data) {
+ if ( !((abs(v_enc_left-v_mou_left) < STUCK_DIFF) && (abs(v_enc_right-v_mou_right) < STUCK_DIFF)) ) {
+ // Es kann entweder durch die eigene Notfallroutine rueckwaertsgefahren werden oder die Notverhalten
+ // machen dies in ihren eigenen registrierten Notfallroutinen
+
+ // Ausfuehren der registrierten Notfallverhalten; durch registrierung der verhaltenseigenen
+ // Notfallroutinen koennen diese entsprechend reagieren
+ start_registered_emergency_procs();
+ }
+
+ }
+
+
+#endif
Index: C:/botneuforpatch/ct-Bot/bot-logic/bot-logik.c
===================================================================
--- C:/botneuforpatch/ct-Bot/bot-logic/bot-logik.c (revision 1193)
+++ C:/botneuforpatch/ct-Bot/bot-logic/bot-logik.c (working copy)
@@ -148,6 +148,11 @@
#ifdef BEHAVIOUR_AVOID_COL_AVAILABLE
insert_behaviour_to_list(&behaviour, new_behaviour(249, bot_avoid_col_behaviour,ACTIVE));
#endif
+ #ifdef BEHAVIOUR_HANG_ON_AVAILABLE
+ insert_behaviour_to_list(&behaviour, new_behaviour(245, bot_hang_on_behaviour,ACTIVE));
+ // Registrierung des Handlers zur Behandlung des Haengenbleibens zum Rueckwaertsfahren
+ register_emergency_proc(&hang_on_handler);
+ #endif
#ifdef BEHAVIOUR_SCAN_AVAILABLE
// Verhalten, das die Umgebung des Bots on-the fly beim fahren scannt
@@ -185,9 +190,6 @@
// Verhalten, um laut Map zu einem bestimmten Ziel zu fahren
#ifdef BEHAVIOUR_MAP_GO_DESTINATION_AVAILABLE
insert_behaviour_to_list(&behaviour, new_behaviour(139, bot_path_bestfirst_behaviour,INACTIVE));
- #ifdef MEASURE_MOUSE_AVAILABLE
- insert_behaviour_to_list(&behaviour, new_behaviour(137, bot_check_hang_on_behaviour,INACTIVE));
- #endif
insert_behaviour_to_list(&behaviour, new_behaviour(135, bot_gotoxy_behaviour_map,INACTIVE));
bot_set_destination(0,0); // auf aktuelle Botposition setzen (bei 0,0 sonst Mappos selbst)
// Registrierung zur Behandlung des Notfallverhaltens zum Rueckwaertsfahren
Index: C:/botneuforpatch/ct-Bot/include/bot-logic/available_behaviours.h
===================================================================
--- C:/botneuforpatch/ct-Bot/include/bot-logic/available_behaviours.h (revision 1193)
+++ C:/botneuforpatch/ct-Bot/include/bot-logic/available_behaviours.h (working copy)
@@ -13,6 +13,7 @@
#define BEHAVIOUR_AVOID_BORDER_AVAILABLE /*!< Abgruenden ausweichen vorhanden ?*/
#define BEHAVIOUR_AVOID_COL_AVAILABLE /*!< Hindernis ausweichen vorhanden ?*/
+//#define BEHAVIOUR_HANG_ON_AVAILABLE /*!< Erkennen des Haengenbleibens als Notfallverhalten ?*/
//#define BEHAVIOUR_GOTO_AVAILABLE /*!< goto vorhanden ?*/
//#define BEHAVIOUR_GOTOXY_AVAILABLE /*!< gotoxy vorhanden ?*/
#define BEHAVIOUR_TURN_AVAILABLE /*!< turn vorhanden ?*/
@@ -40,7 +41,7 @@
#define BEHAVIOUR_DELAY_AVAILABLE /*!< Delay-Routinen als Verhalten */
-/* Aufgrund einer ganzen reihe von Abhaengigkeiten sollte man beim Versuch Speicher
+/* Aufgrund einer ganzen Reihe von Abhaengigkeiten sollte man beim Versuch Speicher
* zu sparen, zuerst mal bei den Hauptverhalten ausmisten, sonst kommen die
* Unterverhalten durch die Hintertuer wieder rein
*/
@@ -49,6 +50,10 @@
#undef BEHAVIOUR_MAP_GO_DESTINATION_AVAILABLE
#endif
+#ifndef MEASURE_MOUSE_AVAILABLE
+ #undef BEHAVIOUR_HANG_ON_AVAILABLE
+#endif
+
#ifdef BEHAVIOUR_GOTOXY_AVAILABLE
#define BEHAVIOUR_TURN_AVAILABLE
#endif
@@ -144,5 +149,7 @@
#include "bot-logic/behaviour_delay.h"
+#include "bot-logic/behaviour_hang_on.h"
+
#endif // BEHAVIOUR_AVAILABLE
#endif /*AVAILABLE_BEHAVIOURS_H_*/
Index: C:/botneuforpatch/ct-Bot/include/bot-logic/behaviour_map_go_destination.h
===================================================================
--- C:/botneuforpatch/ct-Bot/include/bot-logic/behaviour_map_go_destination.h (revision 1193)
+++ C:/botneuforpatch/ct-Bot/include/bot-logic/behaviour_map_go_destination.h (working copy)
@@ -55,8 +55,6 @@
/*! Verhalten zur Abgrunderkennung und eintragen in die Map */
void bot_set_border_in_map_behaviour(Behaviour_t *data);
-/*! Verhalten zum Erkennen, falls Bot haengenbleibt */
-void bot_check_hang_on_behaviour(Behaviour_t *data);
/*! Verhalten zum echten Abfahren des bots nach der Punkte-Wegeliste laut Pfadplanung zum global gesetzten Ziel*/
void bot_gotoxy_behaviour_map(Behaviour_t *data);
Index: C:/botneuforpatch/ct-Bot/include/bot-logic/behaviour_hang_on.h
===================================================================
--- C:/botneuforpatch/ct-Bot/include/bot-logic/behaviour_hang_on.h (revision 0)
+++ C:/botneuforpatch/ct-Bot/include/bot-logic/behaviour_hang_on.h (revision 0)
@@ -0,0 +1,47 @@
+/*
+ * c't-Bot
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ * This program is distributed in the hope that it will be
+ * useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307, USA.
+ *
+ */
+
+/*! @file behaviour_hang_on.h
+ * @brief Haengenbleiben Notfallverhalten
+ *
+ * @author Frank Menzel (Menzelfr@xxxxxxx)
+ * @date 31.07.07
+*/
+
+#ifndef BEHAVIOUR_HANG_ON_H_
+#define BEHAVIOUR_HANG_ON_H_
+
+#include "bot-logic/bot-logik.h"
+#ifdef BEHAVIOUR_HANG_ON_AVAILABLE
+
+/*!
+ * Notfallhandler, ausgefuehrt nach Haengenbleiben zum rueckwaertsfahren; muss registriert werden
+ */
+void hang_on_handler(void);
+
+/*!
+ * Verhalten zum Erkennen des Haengenbleibens des Bots; wenn MEASURE_MOUSE_AVAILABLE gesetzt werden Maus- und
+ * Encoderdaten miteinander verglichen; wird der Bot-Stillstand erkannt, wird etwas rueckwaerts gefahren
+ * @param *data der Verhaltensdatensatz
+ */
+void bot_hang_on_behaviour(Behaviour_t *data);
+
+
+#endif
+#endif /*BEHAVIOUR_HANG_ON_H_*/
Index: C:/botneuforpatch/ct-Bot/.cdtbuild
===================================================================
--- C:/botneuforpatch/ct-Bot/.cdtbuild (revision 1193)
+++ C:/botneuforpatch/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=""${ProjDirPath}""/>
<listOptionValue builtIn="false" value=""${ProjDirPath}/include""/>
-<listOptionValue builtIn="false" value=""C:\Programme\MinGW\include""/>
-<listOptionValue builtIn="false" value=""C:\Programme\pthreads\pthreads.2""/>
+<listOptionValue builtIn="false" value=""C:\MinGW\include""/>
+<listOptionValue builtIn="false" value=""C:\pthreads\pthreads.2""/>
</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=""C:\Programme\pthreads\Pre-built.2\lib""/>
-<listOptionValue builtIn="false" value=""C:\Programme\MinGW\lib""/>
+<listOptionValue builtIn="false" value=""C:\pthreads\Pre-built.2\lib""/>
+<listOptionValue builtIn="false" value=""C:\MinGW\lib""/>
</option>
<option id="gnu.c.link.option.noshared.1812776571" superClass="gnu.c.link.option.noshared" value="true" valueType="boolean"/>
</tool>
Index: C:/botneuforpatch/ct-Bot/.settings/org.eclipse.cdt.core.prefs
===================================================================
--- C:/botneuforpatch/ct-Bot/.settings/org.eclipse.cdt.core.prefs (revision 0)
+++ C:/botneuforpatch/ct-Bot/.settings/org.eclipse.cdt.core.prefs (revision 0)
@@ -0,0 +1,3 @@
+#Tue Jul 31 19:31:04 CEST 2007
+eclipse.preferences.version=1
+indexerId=org.eclipse.cdt.core.fastIndexer
Index: C:/botneuforpatch/ct-Bot/.settings/org.eclipse.cdt.managedbuilder.core.prefs
===================================================================
--- C:/botneuforpatch/ct-Bot/.settings/org.eclipse.cdt.managedbuilder.core.prefs (revision 1193)
+++ C:/botneuforpatch/ct-Bot/.settings/org.eclipse.cdt.managedbuilder.core.prefs (working copy)
@@ -1,13 +1,15 @@
-#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
+#Tue Jul 31 19:59:27 CEST 2007
+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.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"?>\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.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