Index: /trunk/cmake-modules/FlairUseFile.cmake
===================================================================
--- /trunk/cmake-modules/FlairUseFile.cmake	(revision 377)
+++ /trunk/cmake-modules/FlairUseFile.cmake	(revision 378)
@@ -75,4 +75,7 @@
 	    SET(FLAIR_LIBRARIES ${FLAIR_LIBRARY_DIR}/libHdsSensorActuator.a ${FLAIR_LIBRARIES})
     endif()
+    if("${CMAKE_SYSTEM_PROCESSOR_DEFAULTTUNE}" MATCHES "core2-64")	
+        SET(FLAIR_LIBRARIES ${FLAIR_LIBRARIES} sumo)
+    endif()
 ENDIF (FLAIR_USE_SENSOR_ACTUATOR)
 
Index: /trunk/demos/TwoWheelRobotCircleFollower/simulator/resources/core2-64/simulator.xml
===================================================================
--- /trunk/demos/TwoWheelRobotCircleFollower/simulator/resources/core2-64/simulator.xml	(revision 378)
+++ /trunk/demos/TwoWheelRobotCircleFollower/simulator/resources/core2-64/simulator.xml	(revision 378)
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<root name="FrameworkManager">
+  <TabWidget name="Main_TabWidget">
+    <Tab name="ugv_0">
+      <TabWidget name="tabs">
+        <Tab name="sampling">
+          <DoubleSpinBox name="Tech (s):" value="0.010"/>
+        </Tab>
+        <Tab name="optitrack">
+          <CheckBox name="enabled" value="1"/>
+        </Tab>
+        <Tab name="init">
+          <Vector3DSpinBox name="position" value_x="1" value_y="0" value_z="-1"/>
+          <SpinBox name="yaw (deg):" value="0"/>
+        </Tab>
+        <Tab name="model">
+          <DoubleSpinBox name="mass (kg):" value="0.2"/>
+          <DoubleSpinBox name="size (m):" value="0.2"/>
+        <DoubleSpinBox name="translational speed (m/s):" value="1"/><DoubleSpinBox name="rotational speed (deg/s):" value="2"/></Tab>
+        <Tab name="visual">
+          <SpinBox name="arm color (R):" value="255"/>
+          <SpinBox name="arm color (G):" value="0"/>
+          <SpinBox name="arm color (B):" value="0"/>
+        </Tab>
+      </TabWidget>
+    </Tab>
+    <Tab name="target">
+      <TabWidget name="tabs">
+        <Tab name="sampling">
+          <DoubleSpinBox name="Tech (s):" value="0.001"/>
+        </Tab>
+        <Tab name="optitrack">
+          <CheckBox name="enabled" value="1"/>
+        </Tab>
+        <Tab name="init">
+          <Vector3DSpinBox name="position" value_x="0" value_y="0" value_z="0"/>
+          <SpinBox name="yaw (deg):" value="0"/>
+        </Tab>
+        <Tab name="model">
+          <DoubleSpinBox name="translational speed (m/s):" value="0"/>
+          <DoubleSpinBox name="rotational speed (deg/s):" value="0"/>
+        </Tab>
+      </TabWidget>
+    </Tab>
+  </TabWidget>
+  <PushButton name="save config on target (simulator)" value="1"/>
+</root>
Index: /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/setup_simu.xml
===================================================================
--- /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/setup_simu.xml	(revision 378)
+++ /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/setup_simu.xml	(revision 378)
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<root name="FrameworkManager">
+  <TabWidget name="Main_TabWidget">
+    <Tab name="controls">
+      <DataPlot1D name="speed" period="100" enabled="1"/>
+      <DataPlot1D name="turn" period="100" enabled="1"/>
+    </Tab>
+    <Tab name="Dualshock3">
+      <TabWidget name="Dualshock3">
+        <Tab name="Reglages"/>
+      </TabWidget>
+    </Tab>
+    <Tab name="vrpn">
+      <TabWidget name="vrpn">
+        <Tab name="Reglages">
+          <GroupBox name="post rotation 1">
+            <DoubleSpinBox name="value" value="0"/>
+            <ComboBox name="axis" value="0"/>
+          </GroupBox>
+          <GroupBox name="post rotation 2">
+            <DoubleSpinBox name="value" value="0"/>
+            <ComboBox name="axis" value="0"/>
+          </GroupBox>
+          <GroupBox name="ugv_0 Passe bas">
+            <DoubleSpinBox name="period, 0 for auto" value="0"/>
+            <DoubleSpinBox name="cutoff frequency" value="1"/>
+          </GroupBox>
+          <GroupBox name="ugv_0_euler">
+            <DoubleSpinBox name="period, 0 for auto:" value="0"/>
+            <DoubleSpinBox name="saturation, -1 to disable:" value="-1"/>
+          </GroupBox>
+          <GroupBox name="target Passe bas">
+            <DoubleSpinBox name="period, 0 for auto" value="0"/>
+            <DoubleSpinBox name="cutoff frequency" value="1"/>
+          </GroupBox>
+          <GroupBox name="target_euler">
+            <DoubleSpinBox name="period, 0 for auto:" value="0"/>
+            <DoubleSpinBox name="saturation, -1 to disable:" value="-1"/>
+          </GroupBox>
+          <GroupBox name="circle">
+            <DoubleSpinBox name="period, 0 for auto" value="0"/>
+            <DoubleSpinBox name="R" value="0"/>
+            <DoubleSpinBox name="velocity" value="0"/>
+            <DoubleSpinBox name="acceleration (absolute)" value="0"/>
+          </GroupBox>
+        </Tab>
+        <Tab name="Mesures ugv_0">
+          <DataPlot1D name="x" period="100" enabled="1"/>
+          <DataPlot1D name="y" period="100" enabled="0"/>
+          <DataPlot1D name="z" period="100" enabled="0"/>
+          <DataPlot1D name="vx" period="100" enabled="0"/>
+          <DataPlot1D name="vy" period="100" enabled="0"/>
+          <DataPlot1D name="vz" period="100" enabled="0"/>
+        </Tab>
+        <Tab name="Mesures (xy) ugv_0">
+          <DataPlot2D name="xy" period="100" enabled="1"/>
+        </Tab>
+        <Tab name="Mesures target">
+          <DataPlot1D name="x" period="100" enabled="0"/>
+          <DataPlot1D name="y" period="100" enabled="0"/>
+          <DataPlot1D name="z" period="100" enabled="0"/>
+          <DataPlot1D name="vx" period="100" enabled="0"/>
+          <DataPlot1D name="vy" period="100" enabled="0"/>
+          <DataPlot1D name="vz" period="100" enabled="0"/>
+        </Tab>
+        <Tab name="Mesures (xy) target">
+          <DataPlot2D name="xy" period="100" enabled="0"/>
+        </Tab>
+      </TabWidget>
+    </Tab>
+    <Tab name="ugv">
+      <GridLayout name="buttons">
+        <PushButton name="kill"/>
+        <PushButton name="start_circle"/>
+        <PushButton name="stop_circle"/>
+      </GridLayout>
+    </Tab>
+  </TabWidget>
+  <PushButton name="save config on target (ugv_0)" value="1"/>
+</root>
Index: /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/setup_sumo.xml
===================================================================
--- /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/setup_sumo.xml	(revision 378)
+++ /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/setup_sumo.xml	(revision 378)
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<root name="FrameworkManager">
+  <TabWidget name="Main_TabWidget">
+    <Tab name="controls">
+      <DataPlot1D name="speed" period="100" enabled="1"/>
+      <DataPlot1D name="turn" period="100" enabled="1"/>
+    </Tab>
+    <Tab name="Dualshock3">
+      <TabWidget name="Dualshock3">
+        <Tab name="Reglages"/>
+      </TabWidget>
+    </Tab>
+    <Tab name="vrpn">
+      <TabWidget name="vrpn">
+        <Tab name="Reglages">
+          <GroupBox name="post rotation 1">
+            <DoubleSpinBox name="value" value="0"/>
+            <ComboBox name="axis" value="0"/>
+          </GroupBox>
+          <GroupBox name="post rotation 2">
+            <DoubleSpinBox name="value" value="0"/>
+            <ComboBox name="axis" value="0"/>
+          </GroupBox>
+          <GroupBox name="ugv_0 Passe bas">
+            <DoubleSpinBox name="period, 0 for auto" value="0"/>
+            <DoubleSpinBox name="cutoff frequency" value="1"/>
+          </GroupBox>
+          <GroupBox name="ugv_0_euler">
+            <DoubleSpinBox name="period, 0 for auto:" value="0"/>
+            <DoubleSpinBox name="saturation, -1 to disable:" value="-1"/>
+          </GroupBox>
+          <GroupBox name="target Passe bas">
+            <DoubleSpinBox name="period, 0 for auto" value="0"/>
+            <DoubleSpinBox name="cutoff frequency" value="1"/>
+          </GroupBox>
+          <GroupBox name="target_euler">
+            <DoubleSpinBox name="period, 0 for auto:" value="0"/>
+            <DoubleSpinBox name="saturation, -1 to disable:" value="-1"/>
+          </GroupBox>
+          <GroupBox name="circle">
+            <DoubleSpinBox name="period, 0 for auto" value="0"/>
+            <DoubleSpinBox name="R" value="0"/>
+            <DoubleSpinBox name="velocity" value="0"/>
+            <DoubleSpinBox name="acceleration (absolute)" value="0"/>
+          </GroupBox>
+        </Tab>
+        <Tab name="Mesures ugv_0">
+          <DataPlot1D name="x" period="100" enabled="1"/>
+          <DataPlot1D name="y" period="100" enabled="0"/>
+          <DataPlot1D name="z" period="100" enabled="0"/>
+          <DataPlot1D name="vx" period="100" enabled="0"/>
+          <DataPlot1D name="vy" period="100" enabled="0"/>
+          <DataPlot1D name="vz" period="100" enabled="0"/>
+        </Tab>
+        <Tab name="Mesures (xy) ugv_0">
+          <DataPlot2D name="xy" period="100" enabled="1"/>
+        </Tab>
+        <Tab name="Mesures target">
+          <DataPlot1D name="x" period="100" enabled="0"/>
+          <DataPlot1D name="y" period="100" enabled="0"/>
+          <DataPlot1D name="z" period="100" enabled="0"/>
+          <DataPlot1D name="vx" period="100" enabled="0"/>
+          <DataPlot1D name="vy" period="100" enabled="0"/>
+          <DataPlot1D name="vz" period="100" enabled="0"/>
+        </Tab>
+        <Tab name="Mesures (xy) target">
+          <DataPlot2D name="xy" period="100" enabled="0"/>
+        </Tab>
+      </TabWidget>
+    </Tab>
+    <Tab name="ugv">
+      <GridLayout name="buttons">
+        <PushButton name="kill"/>
+        <PushButton name="start_circle"/>
+        <PushButton name="stop_circle"/>
+      </GridLayout>
+    </Tab>
+  </TabWidget>
+  <PushButton name="save config on target (ugv_0)" value="1"/>
+</root>
Index: unk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/ugv.sh
===================================================================
--- /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/ugv.sh	(revision 377)
+++ 	(revision )
@@ -1,11 +1,0 @@
-#! /bin/bash
-
-if [ -f /proc/xenomai/version ];then
-	EXEC=./TwoWheelRobotCircleFollower_ugv_rt
-else
-	EXEC=./TwoWheelRobotCircleFollower_ugv_nrt
-fi
-
-. $FLAIR_ROOT/flair-src/scripts/distribution_specific_hack.sh
-
-$EXEC -n ugv_0 -a 127.0.0.1 -p 9000 -l /tmp -x setup.xml
Index: /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/ugv_simu.sh
===================================================================
--- /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/ugv_simu.sh	(revision 378)
+++ /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/ugv_simu.sh	(revision 378)
@@ -0,0 +1,11 @@
+#! /bin/bash
+
+if [ -f /proc/xenomai/version ];then
+	EXEC=./TwoWheelRobotCircleFollower_ugv_rt
+else
+	EXEC=./TwoWheelRobotCircleFollower_ugv_nrt
+fi
+
+. $FLAIR_ROOT/flair-src/scripts/distribution_specific_hack.sh
+
+$EXEC -n ugv_0 -t ugv_simu -a 127.0.0.1 -p 9000 -l /tmp -x setup_simu.xml
Index: /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/ugv_sumo.sh
===================================================================
--- /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/ugv_sumo.sh	(revision 378)
+++ /trunk/demos/TwoWheelRobotCircleFollower/ugv/resources/core2-64/ugv_sumo.sh	(revision 378)
@@ -0,0 +1,11 @@
+#! /bin/bash
+
+if [ -f /proc/xenomai/version ];then
+	EXEC=./TwoWheelRobotCircleFollower_ugv_rt
+else
+	EXEC=./TwoWheelRobotCircleFollower_ugv_nrt
+fi
+
+. $FLAIR_ROOT/flair-src/scripts/distribution_specific_hack.sh
+
+$EXEC -n ugv_0 -t sumo -a 127.0.0.1 -p 9000 -l /tmp -x setup_sumo.xml
Index: /trunk/lib/FlairMeta/src/SimuUgv.h
===================================================================
--- /trunk/lib/FlairMeta/src/SimuUgv.h	(revision 377)
+++ /trunk/lib/FlairMeta/src/SimuUgv.h	(revision 378)
@@ -5,5 +5,5 @@
 /*!
  * \file SimuUgv.h
- * \brief Class defining a simulation x4 uav
+ * \brief Class defining a simulation ugv
  * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
  * \date 2020/12/16
Index: /trunk/lib/FlairMeta/src/SumoUgv.cpp
===================================================================
--- /trunk/lib/FlairMeta/src/SumoUgv.cpp	(revision 378)
+++ /trunk/lib/FlairMeta/src/SumoUgv.cpp	(revision 378)
@@ -0,0 +1,49 @@
+// %flair:license{
+// This file is part of the Flair framework distributed under the
+// CECILL-C License, Version 1.0.
+// %flair:license}
+//  created:    2020/12/16
+//  filename:   SumoUgv.cpp
+//
+//  author:     Guillaume Sanahuja
+//              Copyright Heudiasyc UMR UTC/CNRS 7253
+//
+//  version:    $Id: $
+//
+//  purpose:    Class defining a parrot sumo ugv
+//
+//
+/*********************************************************************/
+#ifdef CORE2_64
+
+#include "SumoUgv.h"
+#include <SumoUgvControls.h>
+
+
+using std::string;
+using namespace flair::core;
+using namespace flair::actuator;
+
+namespace flair {
+namespace meta {
+
+SumoUgv::SumoUgv(string name): Ugv(name) {
+
+
+  SetUgvControls(new SumoUgvControls("controls"));
+  
+  
+}
+
+SumoUgv::~SumoUgv() {}
+
+void SumoUgv::StartSensors(void) {
+ 
+}
+
+
+
+} // end namespace meta
+} // end namespace flair
+
+#endif
Index: /trunk/lib/FlairMeta/src/SumoUgv.h
===================================================================
--- /trunk/lib/FlairMeta/src/SumoUgv.h	(revision 378)
+++ /trunk/lib/FlairMeta/src/SumoUgv.h	(revision 378)
@@ -0,0 +1,37 @@
+// %flair:license{
+// This file is part of the Flair framework distributed under the
+// CECILL-C License, Version 1.0.
+// %flair:license}
+/*!
+ * \file SumoUgv.h
+ * \brief Class defining a parrot sumo igv
+ * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
+ * \date 2020/12/16
+ * \version 4.0
+ */
+
+#ifndef SUMOUGV_H
+#define SUMOUGV_H
+
+#include "Ugv.h"
+
+namespace flair {
+namespace meta {
+  
+/*! \class SumoUgv
+*
+* \brief Class defining a parrot sumo ugv
+*/
+class SumoUgv : public Ugv {
+  public:
+    SumoUgv(std::string name);
+    ~SumoUgv();
+    void StartSensors(void);
+    virtual std::string GetType(void) const{return "sumo";}
+
+  private:
+   
+};
+} // end namespace meta
+} // end namespace flair
+#endif // SUMOUGV_H
Index: /trunk/lib/FlairMeta/src/UgvFactory.cpp
===================================================================
--- /trunk/lib/FlairMeta/src/UgvFactory.cpp	(revision 377)
+++ /trunk/lib/FlairMeta/src/UgvFactory.cpp	(revision 378)
@@ -19,4 +19,5 @@
 #include "FrameworkManager.h"
 #include "SimuUgv.h"
+#include "SumoUgv.h"
 
 
@@ -52,11 +53,7 @@
     }
     return new SimuUgv(name, simu_id);
-  }/* else if (type.compare(0, 7, "x8_simu") == 0) {
-    int simu_id = 0;
-    if (type.size() > 7) {
-      simu_id = atoi(type.substr(7, type.size() - 7).c_str());
-    }
-    return new SimuX8(name, simu_id,options, multiplex);
-  }*/ else {
+  } else if (type.compare(0, 4, "sumo") == 0) {
+    return new SumoUgv(name);
+  } else {
     getFrameworkManager()->Err("UGV type %s unknown\n", type.c_str());
     return NULL;
Index: /trunk/lib/FlairSensorActuator/CMakeLists.txt
===================================================================
--- /trunk/lib/FlairSensorActuator/CMakeLists.txt	(revision 377)
+++ /trunk/lib/FlairSensorActuator/CMakeLists.txt	(revision 378)
@@ -9,4 +9,5 @@
 	${CMAKE_CURRENT_SOURCE_DIR}/../FlairVisionFilter/src
 	${CMAKE_SYSROOT}/usr/include/vrpn
+    ${CMAKE_SYSROOT}/usr/include/sumo
 )
 
Index: /trunk/lib/FlairSensorActuator/src/SimulatedUgvControls.h
===================================================================
--- /trunk/lib/FlairSensorActuator/src/SimulatedUgvControls.h	(revision 377)
+++ /trunk/lib/FlairSensorActuator/src/SimulatedUgvControls.h	(revision 378)
@@ -15,5 +15,4 @@
 
 #include <UgvControls.h>
-#include <Thread.h>
 
 namespace flair {
Index: /trunk/lib/FlairSensorActuator/src/SumoUgvControls.cpp
===================================================================
--- /trunk/lib/FlairSensorActuator/src/SumoUgvControls.cpp	(revision 378)
+++ /trunk/lib/FlairSensorActuator/src/SumoUgvControls.cpp	(revision 378)
@@ -0,0 +1,68 @@
+// %flair:license{
+// This file is part of the Flair framework distributed under the
+// CECILL-C License, Version 1.0.
+// %flair:license}
+//  created:    2020/&2/09
+//  filename:   SumoUgvControls.cpp
+//
+//  author:     Guillaume Sanahuja
+//              Copyright Heudiasyc UMR UTC/CNRS 7253
+//
+//  version:    $Id: $
+//
+//  purpose:    Class for a parrot sumo ugv controls
+//
+//
+/*********************************************************************/
+#ifdef CORE2_64
+
+#include "SumoUgvControls.h"
+#include <Matrix.h>
+#include <control.h>
+#include <image.h>
+
+using std::string;
+using namespace sumo;
+
+class ImageProcessing : public sumo::Image {
+public:
+	void handleImage(const struct sumo::image *, const uint8_t *buffer, size_t size) {
+		//nothing to do in this demo
+	}
+};
+
+namespace flair {
+namespace actuator {
+
+SumoUgvControls::SumoUgvControls(string name)
+    : UgvControls(name) {
+  
+  sumoControl= new Control (new ImageProcessing);
+  if (!sumoControl->open()) {
+    Err("error opening sumo control\n");
+  } else {
+    SetIsReady(true);
+  }
+}
+
+SumoUgvControls::~SumoUgvControls() {
+  sumoControl->close();
+  delete sumoControl;
+}
+
+
+void SumoUgvControls::SetControls(float speed,float turn) {
+  sumoControl->move(speed*127, turn*127);
+
+  // on prend une fois pour toute le mutex et on fait des accès directs
+  output->GetMutex();
+  output->SetValueNoMutex(0, 0, speed);
+  output->SetValueNoMutex(1, 0, turn);
+  output->ReleaseMutex();
+}
+
+
+} // end namespace sensor
+} // end namespace flair
+
+#endif
Index: /trunk/lib/FlairSensorActuator/src/SumoUgvControls.h
===================================================================
--- /trunk/lib/FlairSensorActuator/src/SumoUgvControls.h	(revision 378)
+++ /trunk/lib/FlairSensorActuator/src/SumoUgvControls.h	(revision 378)
@@ -0,0 +1,60 @@
+// %flair:license{
+// This file is part of the Flair framework distributed under the
+// CECILL-C License, Version 1.0.
+// %flair:license}
+/*!
+ * \file SumoUgvControls.h
+ * \brief Class for a parrot sumo ugv controls
+ * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
+ * \date 2020/12/09
+ * \version 4.0
+ */
+
+#ifndef SUMOUGVCONTROLS_H
+#define SUMOUGVCONTROLS_H
+
+#include <UgvControls.h>
+
+namespace sumo {
+    class Control;
+}
+
+namespace flair {
+namespace actuator {
+/*! \class SumoUgvControls
+*
+* \brief Class for a parrot sumo ugv controls
+*/
+class SumoUgvControls : public UgvControls {
+public:
+  /*!
+  * \brief Constructor
+  *
+  * Construct a SumoUgvControls.
+  *
+  * \param name name
+  */
+  SumoUgvControls(std::string name);
+
+  /*!
+  * \brief Destructor
+  *
+  */
+  ~SumoUgvControls();
+
+  /*!
+  * \brief Set controls values
+  *
+  * Reimplemented from UgvControls. \n
+  *
+  * \param speed speed value
+  * \param turn turn value
+  */
+  void SetControls(float speed,float turn);
+private:
+ sumo::Control *sumoControl;
+  
+};
+} // end namespace actuator
+} // end namespace flair
+#endif // SUMOUGVCONTROLS_H
