Index: trunk/lib/FlairSensorActuator/src/Bldc.cpp
===================================================================
--- trunk/lib/FlairSensorActuator/src/Bldc.cpp	(revision 375)
+++ trunk/lib/FlairSensorActuator/src/Bldc.cpp	(revision 376)
@@ -96,4 +96,4 @@
 }
 
-} // end namespace sensor
+} // end namespace actuator
 } // end namespace flair
Index: trunk/lib/FlairSensorActuator/src/Bldc.h
===================================================================
--- trunk/lib/FlairSensorActuator/src/Bldc.h	(revision 375)
+++ trunk/lib/FlairSensorActuator/src/Bldc.h	(revision 376)
@@ -15,5 +15,4 @@
 
 #include <IODevice.h>
-#include <stdint.h>
 
 namespace flair {
Index: trunk/lib/FlairSensorActuator/src/SimulatedUgvControls.cpp
===================================================================
--- trunk/lib/FlairSensorActuator/src/SimulatedUgvControls.cpp	(revision 376)
+++ trunk/lib/FlairSensorActuator/src/SimulatedUgvControls.cpp	(revision 376)
@@ -0,0 +1,78 @@
+// %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:   SimulatedUgvControls.cpp
+//
+//  author:     Guillaume Sanahuja
+//              Copyright Heudiasyc UMR UTC/CNRS 7253
+//
+//  version:    $Id: $
+//
+//  purpose:    Class for a simulation ugv controls
+//
+//
+/*********************************************************************/
+#ifdef CORE2_64
+
+#include "SimulatedUgvControls.h"
+#include <FrameworkManager.h>
+#include <Matrix.h>
+#include <SharedMem.h>
+#include <sstream>
+#include <string.h>
+
+using std::string;
+using std::ostringstream;
+using namespace flair::core;
+
+namespace flair {
+namespace actuator {
+
+SimulatedUgvControls::SimulatedUgvControls(const IODevice *parent,string name, uint32_t modelId,uint32_t deviceId)
+    : UgvControls(parent,name) {
+  
+  shmem = new SharedMem((Thread *)this, ShMemName(modelId, deviceId),2 * sizeof(float)+sizeof(Time));
+  
+  buf=(char*)malloc(2 * sizeof(float)+sizeof(Time));
+  if(buf==NULL) {
+    Err("error creating buffer\n");
+    return;
+  }
+  
+  SetIsReady(true);
+}
+
+SimulatedUgvControls::~SimulatedUgvControls() {
+  if(buf!=NULL) free(buf);
+}
+
+string SimulatedUgvControls::ShMemName(uint32_t modelId,uint32_t deviceId) {
+  ostringstream dev_name;
+  dev_name << "simu" <<  modelId << "_ugvcontrols_" << deviceId;
+  return dev_name.str().c_str();
+}
+
+void SimulatedUgvControls::SetControls(float speed,float turn) {
+  float *values=(float*)buf;
+  buf[0]=speed;
+  buf[1]=turn;
+  Time time=GetTime();
+  memcpy(buf+2 * sizeof(float),&time,sizeof(Time));
+
+  shmem->Write(buf, 2 * sizeof(float)+sizeof(Time));
+
+  // on prend une fois pour toute le mutex et on fait des accès directs
+  output->GetMutex();
+  for (int i = 0; i < 2; i++) {
+    output->SetValueNoMutex(i, 0, buf[i]);
+  }
+  output->ReleaseMutex();
+}
+
+
+} // end namespace sensor
+} // end namespace flair
+
+#endif
Index: trunk/lib/FlairSensorActuator/src/SimulatedUgvControls.h
===================================================================
--- trunk/lib/FlairSensorActuator/src/SimulatedUgvControls.h	(revision 376)
+++ trunk/lib/FlairSensorActuator/src/SimulatedUgvControls.h	(revision 376)
@@ -0,0 +1,70 @@
+// %flair:license{
+// This file is part of the Flair framework distributed under the
+// CECILL-C License, Version 1.0.
+// %flair:license}
+/*!
+ * \file SimulatedUgvControls.h
+ * \brief Class for a simulation ugv controls
+ * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
+ * \date 2020/12/09
+ * \version 4.0
+ */
+
+#ifndef SIMULATEDUGVCONTROLS_H
+#define SIMULATEDUGVCONTROLS_H
+
+#include <UgvControls.h>
+#include <Thread.h>
+
+namespace flair {
+  namespace core {
+    class SharedMem;
+  }
+}
+
+namespace flair {
+namespace actuator {
+/*! \class SimulatedUgvControls
+*
+* \brief Class for a simulation ugv controls
+*/
+class SimulatedUgvControls : public UgvControls {
+public:
+  /*!
+  * \brief Constructor
+  *
+  * Construct a SimulatedUgvControls.
+  *
+  * \param parent parent
+  * \param name name
+  * \param modelId Model id
+  * \param deviceId Imu id of the Model
+  */
+  SimulatedUgvControls(const core::IODevice *parent,std::string name,
+          uint32_t modelId,uint32_t deviceId);
+
+  /*!
+  * \brief Destructor
+  *
+  */
+  ~SimulatedUgvControls();
+
+private:
+ 
+  /*!
+  * \brief Set controls values
+  *
+  * Reimplemented from UgvControls. \n
+  *
+  * \param speed speed value
+  * \param turn turn value
+  */
+  void SetControls(float speed,float turn);
+  
+  char *buf;
+  std::string ShMemName(uint32_t modelId,uint32_t deviceId);
+  core::SharedMem *shmem;
+};
+} // end namespace actuator
+} // end namespace flair
+#endif // SIMULATEDUGVCONTROLS_H
Index: trunk/lib/FlairSensorActuator/src/UgvControls.cpp
===================================================================
--- trunk/lib/FlairSensorActuator/src/UgvControls.cpp	(revision 376)
+++ trunk/lib/FlairSensorActuator/src/UgvControls.cpp	(revision 376)
@@ -0,0 +1,53 @@
+// %flair:license{
+// This file is part of the Flair framework distributed under the
+// CECILL-C License, Version 1.0.
+// %flair:license}
+//  created:    2020/12/09
+//  filename:   UgvControls.cpp
+//
+//  author:     Guillaume Sanahuja
+//              Copyright Heudiasyc UMR UTC/CNRS 7253
+//
+//  version:    $Id: $
+//
+//  purpose:    Virtual class for igv controls
+//
+//
+/*********************************************************************/
+
+#include "UgvControls.h"
+#include <Matrix.h>
+
+using namespace flair::core;
+
+using std::string;
+
+namespace flair {
+namespace actuator {
+
+UgvControls::UgvControls(const IODevice *parent, string name)
+    : IODevice(parent, name) {
+  
+  MatrixDescriptor *desc = new MatrixDescriptor(2, 1);
+  desc->SetElementName(0, 0, "speed");
+  desc->SetElementName(1, 0, "turn");
+
+  output = new Matrix(this, desc, floatType);
+  delete desc;
+  AddDataToLog(output);
+}
+
+UgvControls::~UgvControls() {
+}
+
+void UgvControls::UseDefaultPlot(void) {
+  
+}
+
+Matrix *UgvControls::Output(void) const {
+ return output;
+}
+
+
+} // end namespace actuator
+} // end namespace flair
Index: trunk/lib/FlairSensorActuator/src/UgvControls.h
===================================================================
--- trunk/lib/FlairSensorActuator/src/UgvControls.h	(revision 376)
+++ trunk/lib/FlairSensorActuator/src/UgvControls.h	(revision 376)
@@ -0,0 +1,90 @@
+// %flair:license{
+// This file is part of the Flair framework distributed under the
+// CECILL-C License, Version 1.0.
+// %flair:license}
+/*!
+ * \file UgvControls.h
+ * \brief Base class for ugv controls
+ * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
+ * \date 2020/12/09
+ * \version 4.0
+ */
+
+#ifndef UGVCONTROLS_H
+#define UGVCONTROLS_H
+
+#include <IODevice.h>
+
+namespace flair {
+namespace core {
+class Matrix;
+}
+}
+
+
+namespace flair {
+namespace actuator {
+/*! \class UgvControls
+*
+* \brief Base class for ugv controls
+*/
+class UgvControls : public core::IODevice {
+  
+public:
+  /*!
+  * \brief Constructor
+  *
+  * Construct a UgvControls.
+  *
+  * \param parent parent
+  * \param name name
+  */
+  UgvControls(const core::IODevice *parent, std::string name);
+
+  /*!
+  * \brief Destructor
+  *
+  */
+  ~UgvControls();
+
+  /*!
+  * \brief Use default plot
+  *
+  */
+  void UseDefaultPlot(void);
+
+  /*!
+  * \brief Output from motors
+  *
+  * First column is real speed if available, secund column is current if
+  *available
+  *
+  */
+  core::Matrix *Output(void) const;
+  
+protected:
+  core::Matrix *output;
+
+private:
+  /*!
+  * \brief Update using provided datas
+  *
+  * Reimplemented from IODevice.
+  *
+  * \param data data from the parent to process
+  */
+  void UpdateFrom(const core::io_data *data){};
+
+  /*!
+  * \brief Set controls values
+  *
+  * \param speed speed value
+  * \param turn turn value
+  */
+  virtual void SetControls(float speed,float turn)=0;
+  
+
+};
+} // end namespace actuator
+} // end namespace flair
+#endif // UGVCONTROLS_H
Index: trunk/lib/FlairSimulator/src/TwoWheelRobot.cpp
===================================================================
--- trunk/lib/FlairSimulator/src/TwoWheelRobot.cpp	(revision 375)
+++ trunk/lib/FlairSimulator/src/TwoWheelRobot.cpp	(revision 376)
@@ -151,5 +151,5 @@
 // z down
 void TwoWheelRobot::CalcModel(void) {
-  float speed=0.4, turn=0;
+  float speed,turn;
   Time motorTime;
 
