diff --git a/Inc/canon.h b/Inc/canon.h
new file mode 100644
index 0000000000000000000000000000000000000000..8c60fa1432e7a9bbb0801ae69c54e64e2dd264dd
--- /dev/null
+++ b/Inc/canon.h
@@ -0,0 +1,15 @@
+/****************
+   Description : Gestion du cannon
+   Auteur : Sébastien FAGUET
+*****************/
+
+#ifndef CANON
+#define CANON
+
+#include "main.h"
+
+
+void canon_shoot(float speed, float rate);
+void traitement_shoot(void);
+void canon_shoot_end(void);
+#endif
diff --git a/Inc/pilotes.h b/Inc/pilotes.h
new file mode 100644
index 0000000000000000000000000000000000000000..e093cc2185ad7b6db2c0170b9d7ece10aae598e1
--- /dev/null
+++ b/Inc/pilotes.h
@@ -0,0 +1,32 @@
+/****************
+   Description : Configuration du robot
+   Auteur : Sébastien FAGUET
+*****************/
+
+#ifndef PILOTE
+#define PILOTE
+
+#include "main.h"
+
+#define PILOTE_ANTONIN 0
+
+typedef struct
+{
+	float sensitivity_ch_1;
+	float sensitivity_ch_2;
+	float sensitivity_mouse_x;
+	float sensitivity_mouse_y;
+	
+	double sensitivity_chassis_RC_Vx;
+	double sensitivity_chassis_RC_Vy;
+	double sensitivity_chassis_RC_W;
+	float sensitivity_chassis_keyboard_Vx;
+	float sensitivity_chassis_keyboard_Vy;
+	float sensitivity_chassis_mouse_W;
+} pilote_t;
+
+
+/* Fonction qui premet de configurer le pilote */
+void piloteInit(uint8_t pilote_id);
+
+#endif
diff --git a/Inc/receiver_RadioController.h b/Inc/receiver_RadioController.h
index 621aa5639899732976ff7a58e90cd5a470db2b0a..ca0b04bed3ecb0bb935a50c01044c9fd83786d5d 100644
--- a/Inc/receiver_RadioController.h
+++ b/Inc/receiver_RadioController.h
@@ -72,6 +72,7 @@ struct receiver_RadioController_data
 
 struct receiver_RadioController
 {
+		char keyboard_mode; //0: RC, 1: Mouse and keyboard
     struct receiver_RadioController_data data;
     struct receiver_RadioController_data last_data;
     uint16_t state;
diff --git a/Inc/traitement.h b/Inc/traitement.h
index 418c53db03e651639369e1d1f10d3282c6f5482a..e075d0f5dcb23751c3a3e257dc677afc995b5766 100644
--- a/Inc/traitement.h
+++ b/Inc/traitement.h
@@ -23,4 +23,5 @@ void traitement_pids_compute(void);
 /* Fonctions qui fait les liens entre les entrées (capteurs, radio controller, CV, ...) et les sorties (consignes moteurs), on peut créer plusieurs traitements */
 void traitement_1(void);
 
+void chassis_consigne(double Vx, double Vy, double W);
 #endif
diff --git a/MDK-ARM/RobotMaster_allRobots.uvoptx b/MDK-ARM/RobotMaster_allRobots.uvoptx
index 92e16edc098145a6dbd6de895e1fe2510b7b3263..f61020c55f1708836293eadfb285475d90fd1be6 100644
--- a/MDK-ARM/RobotMaster_allRobots.uvoptx
+++ b/MDK-ARM/RobotMaster_allRobots.uvoptx
@@ -525,7 +525,7 @@
 
   <Group>
     <GroupName>Application/User</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -533,7 +533,7 @@
       <GroupNumber>4</GroupNumber>
       <FileNumber>23</FileNumber>
       <FileType>1</FileType>
-      <tvExp>1</tvExp>
+      <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>../Src/main.c</PathWithFileName>
@@ -653,7 +653,7 @@
 
   <Group>
     <GroupName>Libraries</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -673,7 +673,7 @@
 
   <Group>
     <GroupName>BoardA</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -693,7 +693,7 @@
 
   <Group>
     <GroupName>Devices</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -737,7 +737,7 @@
       <GroupNumber>7</GroupNumber>
       <FileNumber>38</FileNumber>
       <FileType>1</FileType>
-      <tvExp>1</tvExp>
+      <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\Src\referee_system.c</PathWithFileName>
@@ -784,12 +784,12 @@
     <File>
       <GroupNumber>7</GroupNumber>
       <FileNumber>42</FileNumber>
-      <FileType>5</FileType>
+      <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\Inc\jetson.h</PathWithFileName>
-      <FilenameWithoutPath>jetson.h</FilenameWithoutPath>
+      <PathWithFileName>..\Src\pilotes.c</PathWithFileName>
+      <FilenameWithoutPath>pilotes.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
@@ -813,6 +813,18 @@
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
     </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>44</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\Src\canon.c</PathWithFileName>
+      <FilenameWithoutPath>canon.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
   </Group>
 
   <Group>
diff --git a/MDK-ARM/RobotMaster_allRobots.uvprojx b/MDK-ARM/RobotMaster_allRobots.uvprojx
index b05b14aa23f999131c35d74bd5843be925112c9d..0f716759785fe59a50368fd59b89f4adad656c95 100644
--- a/MDK-ARM/RobotMaster_allRobots.uvprojx
+++ b/MDK-ARM/RobotMaster_allRobots.uvprojx
@@ -10,7 +10,7 @@
       <TargetName>RobotMaster_allRobots</TargetName>
       <ToolsetNumber>0x4</ToolsetNumber>
       <ToolsetName>ARM-ADS</ToolsetName>
-      <pCCUsed>5060960::V5.06 update 7 (build 960)::ARMCC</pCCUsed>
+      <pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
       <uAC6>0</uAC6>
       <TargetOption>
         <TargetCommonOption>
@@ -619,9 +619,9 @@
               <FilePath>..\Src\jetson.c</FilePath>
             </File>
             <File>
-              <FileName>jetson.h</FileName>
-              <FileType>5</FileType>
-              <FilePath>..\Inc\jetson.h</FilePath>
+              <FileName>pilotes.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\pilotes.c</FilePath>
             </File>
           </Files>
         </Group>
@@ -633,6 +633,11 @@
               <FileType>1</FileType>
               <FilePath>..\Src\traitement.c</FilePath>
             </File>
+            <File>
+              <FileName>canon.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\Src\canon.c</FilePath>
+            </File>
           </Files>
         </Group>
         <Group>
diff --git a/Src/BoardA_handle.c b/Src/BoardA_handle.c
index c3e74236843228ea62c257fdb921d7f47a505ff5..ffacb2b9b7e709bcf06d0977eaf72bd7c98872ae 100644
--- a/Src/BoardA_handle.c
+++ b/Src/BoardA_handle.c
@@ -105,7 +105,7 @@ void uart_debug(){
 		return;
 	}
 	tickstart = HAL_GetTick();
-	snprintf(buff2, 1000, " PITCH(%f/%f) YAW(%f/%f)\r\n", motors[TOURELLE_PITCH].info.angle_360, motors[TOURELLE_PITCH].consigne, motors[TOURELLE_YAW].info.angle_360, motors[TOURELLE_YAW].consigne);
+	snprintf(buff2, 1000, "Keyboard Z%i S%i Q%i D%i\r\n", receiver_RadioController.data.kb.bit.Z, receiver_RadioController.data.kb.bit.S, receiver_RadioController.data.kb.bit.Q, receiver_RadioController.data.kb.bit.D);
 	HAL_UART_Transmit_DMA(&huart8, (uint8_t*)buff2, strlen(buff2));
 	/*
 	uart_debug_command("[2J"); //Clear entire screen
@@ -137,6 +137,7 @@ void uart_debug_command(char* command){
 	HAL_UART_Transmit(&huart8, (uint8_t*) BUF, 4, 10);
 }
 /**
+
   * @brief      enable global uart it and do not use DMA transfer done it
   * @param[in]  huart: uart IRQHandler id
   * @param[in]  pData: receive buff 
diff --git a/Src/canon.c b/Src/canon.c
new file mode 100644
index 0000000000000000000000000000000000000000..f4dc583d876c413c5f7712044bfc45fde7dab33f
--- /dev/null
+++ b/Src/canon.c
@@ -0,0 +1,78 @@
+/****************
+   Description : Gestion du cannon
+   Auteur : Sébastien FAGUET
+*****************/
+
+                 
+#include "canon.h"
+
+#define TIME_BEFORE_START_FEEDER 10
+#define TIME_BEFORE_STOP 100
+
+extern motor_t motors[MAX_MOTORS];
+uint32_t begin_canon_shoot = 0; //0: Pas de séquence de début de tir initialisé sinon temps du début de la séquence
+uint32_t end_canon_shoot = 0; //0: Pas de séquence de fin de tir initialisé sinon temps du début de la séquence
+uint32_t shooting = 0; //0: Pas de séquence de tir initialisé sinon temps du début de la séquence
+float shoot_rate = 0; //Cadance de tir
+
+//Demande de tirer
+void canon_shoot(float speed, float rate){
+	// Si une des valeurs est null, on demande l'arret des tirs
+	if(speed == 0 || rate == 0){ 
+		canon_shoot_end();
+	}else{ 
+		//Si nous ne sommes pas entrain de tirer, nous débutons la séquence de tir
+		if(begin_canon_shoot == 0 && end_canon_shoot == 0 && shooting == 0){
+			begin_canon_shoot = HAL_GetTick();
+			
+			PWM_SetAllDuty(&htim1, speed, speed); //Démarage des snails
+			shoot_rate = rate; //Sauvegarde de la cadance de tir
+		}
+		
+		//Prise en compte des nouvelles valeurs que si nous sommes entrain de tirer
+		if(begin_canon_shoot == 0 && end_canon_shoot == 0 && shooting != 0){ 
+			PWM_SetAllDuty(&htim1, speed, speed); //Changement de la vitesse 
+			motors[FEEDER].consigne = rate; //Changement de la cadance de tir
+			shoot_rate = rate; //Changement de la cadance de tir
+		}
+	}
+}
+
+
+
+//Fonction de traitement des tirs, a appeler à chaque boucle
+void traitement_shoot(){
+	//Si on a demandé de commencer de tirer il y a plus de x ms, on démare maintenant le feeder
+	if(begin_canon_shoot != 0 && HAL_GetTick() - begin_canon_shoot > TIME_BEFORE_START_FEEDER){
+		begin_canon_shoot = 0;
+		end_canon_shoot = 0;
+		shooting = HAL_GetTick();
+		
+		motors[FEEDER].consigne = shoot_rate; //Démarage du feeder
+	}
+	
+	//Si on a demandé d'arreter de tirer il y a plus de x ms, on arrete tout
+	if(end_canon_shoot != 0 && HAL_GetTick() - end_canon_shoot > TIME_BEFORE_STOP){ 
+		begin_canon_shoot = 0;
+		end_canon_shoot = 0;
+		shooting = 0;
+		
+		PWM_SetAllDuty(&htim1, 0, 0); //Arret des snails
+		motors[FEEDER].consigne = 0; //Arret du feeder
+	}
+}
+
+
+//Demande l'arret des tirs
+void canon_shoot_end(){
+	begin_canon_shoot = 0;
+	if(shooting != 0){
+		// Si nous étions entrain de tirer
+		motors[FEEDER].consigne = -7000; //On enlève les balles
+		shooting = 0;
+	}
+	if(end_canon_shoot == 0){ 
+		//Si nous n'avons pas encore commencer la séquence de fin de tir
+		end_canon_shoot = HAL_GetTick(); //Début de la séquence de fin de tir
+	}
+}
diff --git a/Src/main.c b/Src/main.c
index b256529658e379601b3e6002e831a1b629caa24d..57de24db3944f786678a3e8657aaf401e1904a34 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -26,6 +26,8 @@
 #include "tim.h"
 #include "usart.h"
 #include "gpio.h"
+#include "pilotes.h"
+#include "canon.h"
 
 /* Private includes ----------------------------------------------------------*/
 /* USER CODE BEGIN Includes */
@@ -111,7 +113,8 @@ int main(void)
 	can1_init();
 	robotInit(5); //Initialise le robot comme un standard, l'objectif c'est que l'initialisation de fasse par le referee system
 	extern motor_t motors[MAX_MOTORS];
-	
+	extern pilote_t pilote;
+	piloteInit(PILOTE_ANTONIN);
   /* USER CODE END 2 */
 
   /* Infinite loop */
@@ -120,8 +123,9 @@ int main(void)
   {
 		signOfLife(); //LEDs BLINK
 		//oled_debug(); //Display debug menu on OLED
-		//uart_debug(); //Display debug menu on UART
+		uart_debug(); //Display debug menu on UART
 		traitement_1();							//Calcul les consignes des moteurs
+		traitement_shoot();					//Traitement du canon
 		traitement_pids_compute(); 	//Calcul les commandes des moteurs
 		can_send_command(); 				//Envoie des commandes des moteurs
 		
diff --git a/Src/pilotes.c b/Src/pilotes.c
new file mode 100644
index 0000000000000000000000000000000000000000..7d00eec5e556697db139bf127e3f5f93b951f4b4
--- /dev/null
+++ b/Src/pilotes.c
@@ -0,0 +1,36 @@
+/****************
+   Description : Gestion des pilotes, sauvegarde de leur configuration
+   Auteur : Sébastien FAGUET
+*****************/
+                  
+#include "pilotes.h"
+
+pilote_t pilote;
+
+/* Fonction qui premet de configurer le robot */
+void piloteInit(uint8_t pilote_id){
+	/*
+	Robot ID:
+		0: Antonin;
+	*/
+	pilote.sensitivity_ch_1 = 0.00005;
+	pilote.sensitivity_ch_2 = 0.00005;
+	pilote.sensitivity_mouse_x = 0.000005;
+	pilote.sensitivity_mouse_y = 0.000005;
+
+	pilote.sensitivity_chassis_RC_Vx = 10;
+	pilote.sensitivity_chassis_RC_Vy = 10;
+	pilote.sensitivity_chassis_RC_W = 3;
+
+	pilote.sensitivity_chassis_keyboard_Vx = 500;
+	pilote.sensitivity_chassis_keyboard_Vy = 500;
+	pilote.sensitivity_chassis_mouse_W = 2;
+	
+	switch(pilote_id){ //Configuration personnalisée
+		/* Antonin */
+		case PILOTE_ANTONIN:
+			break;
+		default:
+			while(1);
+	}
+}
diff --git a/Src/receiver_RadioController.c b/Src/receiver_RadioController.c
index 474e283621b3e34bd4b846fd9403ca1b65e6567e..114914acd6a4cefb35344fa9e24cc090ec31eca7 100644
--- a/Src/receiver_RadioController.c
+++ b/Src/receiver_RadioController.c
@@ -8,7 +8,8 @@
 
 
 uint8_t uart1_rx_buff[UART1_RX_BUFFLEN];
-receiver_RadioController_t receiver_RadioController;
+receiver_RadioController_t receiver_RadioController = {false};
+
 
 /* On récupère les variables exterieurs */
 extern uint32_t signOfLife_Receiver_RadioController_tick;
@@ -59,7 +60,7 @@ void receiver_RadioController_callback_handler()
 	if ((abs(receiver_RadioController.data.ch4) > 660)) receiver_RadioController.data.ch4 = 0;
 
 	receiver_RadioController.data.mouse.x = uart1_rx_buff[6] | (uart1_rx_buff[7] << 8); // x axis
-	receiver_RadioController.data.mouse.y = uart1_rx_buff[8] | (uart1_rx_buff[9] << 8);
+	receiver_RadioController.data.mouse.y = -(uart1_rx_buff[8] | (uart1_rx_buff[9] << 8));
 	receiver_RadioController.data.mouse.z = uart1_rx_buff[10] | (uart1_rx_buff[11] << 8);
 
 	receiver_RadioController.data.mouse.l = uart1_rx_buff[12];
@@ -69,6 +70,13 @@ void receiver_RadioController_callback_handler()
 
 	receiver_RadioController.data.wheel = (uart1_rx_buff[16] | uart1_rx_buff[17] << 8);
 	receiver_RadioController.data.wheel -= 1024;
+	if(receiver_RadioController.data.mouse.x != 0 ||
+					receiver_RadioController.data.mouse.y != 0 ||
+					receiver_RadioController.data.mouse.z != 0 ||
+					receiver_RadioController.data.mouse.l != 0 ||
+					receiver_RadioController.data.kb.key_code != 0){
+		receiver_RadioController.keyboard_mode = true;
+	}
 }
 
 
diff --git a/Src/traitement.c b/Src/traitement.c
index d944c4b639028f86f16ce193662dae855a9b2a6d..32919b2ebdf970bac925a57de6ac331002aa0bcf 100644
--- a/Src/traitement.c
+++ b/Src/traitement.c
@@ -5,12 +5,15 @@
 
 
 #include "traitement.h"
+#include "pilotes.h"
+#include "canon.h"
 
 #define MAX_BASE_SPEED_COEFF  10
 
 /* On récupère les variables exterieurs */
 extern receiver_RadioController_t receiver_RadioController;	
 extern motor_t motors[MAX_MOTORS];
+extern pilote_t pilote;
 
 /* Calcul les pids de tous les moteurs (calcul des commandes en fonction des consignes */
 void traitement_pids_compute(){
@@ -24,36 +27,82 @@ void traitement_pids_compute(){
 
 /* Fonctions qui fait les liens entre les entrées (capteurs, radio controller, CV, ...) et les sorties (consignes moteurs), on peut créer plusieurs traitements */
 void traitement_1(){
-	add_consigne_position(&motors[TOURELLE_PITCH], (float)receiver_RadioController.data.ch2_float, 0.00005);
-	add_consigne_position(&motors[TOURELLE_YAW], 	(float)receiver_RadioController.data.ch1_float, 0.00005);
-	
+	if(receiver_RadioController.keyboard_mode){
+		double chassis_w;
+		double tourelle_yaw;
+		if(receiver_RadioController.data.kb.bit.CTRL){
+			chassis_w = -receiver_RadioController.data.mouse.x;
+			tourelle_yaw = 0;
+		}else{
+			chassis_w = 0;
+			tourelle_yaw = receiver_RadioController.data.mouse.x;
+		}
+		add_consigne_position(&motors[TOURELLE_PITCH], receiver_RadioController.data.mouse.y, pilote.sensitivity_mouse_y);
+		add_consigne_position(&motors[TOURELLE_YAW], tourelle_yaw, pilote.sensitivity_mouse_x);
+		
+		chassis_consigne(receiver_RadioController.data.kb.bit.W - receiver_RadioController.data.kb.bit.S, 
+											receiver_RadioController.data.kb.bit.D - receiver_RadioController.data.kb.bit.A, 
+											chassis_w);
+		
+		
+		if(receiver_RadioController.data.mouse.l){
+			canon_shoot(0.15, 2000);
+		}else if(receiver_RadioController.data.mouse.r){
+			canon_shoot(0.20, 5000);
+		}else{
+			canon_shoot_end();
+		}
+	}else{		
+		add_consigne_position(&motors[TOURELLE_PITCH], receiver_RadioController.data.ch2_float, pilote.sensitivity_ch_2);
+		add_consigne_position(&motors[TOURELLE_YAW], 	receiver_RadioController.data.ch1_float, pilote.sensitivity_ch_1);
 	
-	switch(receiver_RadioController.data.sw1){
-		case 1:
-			motors[FEEDER].consigne = 0;
-			break;
-		case 3:
-			motors[FEEDER].consigne = 5000;
-			break;
-		case 2:
-			motors[FEEDER].consigne = 10000;
-			break;
-	}
-	switch(receiver_RadioController.data.sw2){
-		case 1:
-			PWM_SetAllDuty(&htim1, 0.0, 0.0);
-			break;
-		case 3:
-			PWM_SetAllDuty(&htim1, 0.25, 0.25);
-			break;
-		case 2:
-			PWM_SetAllDuty(&htim1, 0.50, 0.50);
-			break;
+		switch(receiver_RadioController.data.sw1){
+			case 1:
+				motors[FEEDER].consigne = 0;
+				break;
+			case 3:
+				motors[FEEDER].consigne = 5000;
+				break;
+			case 2:
+				motors[FEEDER].consigne = 10000;
+				break;
+		}
+		switch(receiver_RadioController.data.sw2){
+			case 1:
+				PWM_SetAllDuty(&htim1, 0.0, 0.0);
+				break;
+			case 3:
+				PWM_SetAllDuty(&htim1, 0.25, 0.25);
+				break;
+			case 2:
+				PWM_SetAllDuty(&htim1, 0.50, 0.50);
+				break;
+		}
+		
+		chassis_consigne(receiver_RadioController.data.ch4, receiver_RadioController.data.ch3, receiver_RadioController.data.wheel); 
 	}
-	
-	
-	motors[FRONT_LEFT].consigne 	= MAX_BASE_SPEED_COEFF*(receiver_RadioController.data.ch4 - receiver_RadioController.data.ch3 - 0.3*receiver_RadioController.data.wheel);
-	motors[FRONT_RIGHT].consigne 	= -MAX_BASE_SPEED_COEFF*(receiver_RadioController.data.ch4 + receiver_RadioController.data.ch3 + 0.3*receiver_RadioController.data.wheel);
-	motors[BACK_RIGHT].consigne 	= -MAX_BASE_SPEED_COEFF*(receiver_RadioController.data.ch4 - receiver_RadioController.data.ch3 + 0.3*receiver_RadioController.data.wheel);
-	motors[BACK_LEFT].consigne 		= MAX_BASE_SPEED_COEFF*(receiver_RadioController.data.ch4 + receiver_RadioController.data.ch3 - 0.3*receiver_RadioController.data.wheel); 
 }
+
+void chassis_consigne(double Vx, double Vy, double W){ 
+	/*
+		Vx: Avant / Arrière
+		Vy:	Translation gauche / Droite
+		W: Rotation
+	*/
+	double sensitivity_Vx;
+	double sensitivity_Vy;
+	double sensitivity_W;
+	if(receiver_RadioController.keyboard_mode){
+		sensitivity_Vx = pilote.sensitivity_chassis_keyboard_Vx;
+		sensitivity_Vy = pilote.sensitivity_chassis_keyboard_Vy;
+		sensitivity_W = pilote.sensitivity_chassis_mouse_W;
+	}else{
+		sensitivity_Vx = pilote.sensitivity_chassis_RC_Vx;
+		sensitivity_Vy = pilote.sensitivity_chassis_RC_Vy;
+		sensitivity_W = pilote.sensitivity_chassis_RC_W;
+	}
+	motors[FRONT_LEFT].consigne 	= sensitivity_Vx*Vx - sensitivity_Vy*Vy - sensitivity_W*W;
+	motors[FRONT_RIGHT].consigne 	= -(sensitivity_Vx*Vx + sensitivity_Vy*Vy + sensitivity_W*W);
+	motors[BACK_RIGHT].consigne 	= -(sensitivity_Vx*Vx - sensitivity_Vy*Vy + sensitivity_W*W);
+	motors[BACK_LEFT].consigne 		= sensitivity_Vx*Vx + sensitivity_Vy*Vy - sensitivity_W*W; 
+}