From 87f20e72525ca571e441f5985c9516b276d6e82d Mon Sep 17 00:00:00 2001 From: Philippe Roy Date: Sat, 29 Apr 2023 03:19:38 +0200 Subject: [PATCH] Tutoriel 3 : capteur imu --- labyrinthe/3-arduino/3-labyrinthe-imu.blend | Bin 1152952 -> 1152952 bytes labyrinthe/3-arduino/3-labyrinthe-imu.py | 56 +++++++----------- .../3-labyrinthe-imu/3-labyrinthe-imu.ino | 19 +----- .../3-arduino/test/imu-test/imu-test.ino | 12 ++-- 4 files changed, 28 insertions(+), 59 deletions(-) diff --git a/labyrinthe/3-arduino/3-labyrinthe-imu.blend b/labyrinthe/3-arduino/3-labyrinthe-imu.blend index 49ff99aae2b9fea17a9798bf19fdb8b889b742a8..8e08b85d5a4f1e2b6b3fb00ee5db270ee7d2c2ce 100644 GIT binary patch delta 39621 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%0AGlt2}NnOl}+JJM0$6o!5G14*A|M^%c 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 delta 39244 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 diff --git a/labyrinthe/3-arduino/3-labyrinthe-imu.py b/labyrinthe/3-arduino/3-labyrinthe-imu.py index d440058..c12d09b 100644 --- a/labyrinthe/3-arduino/3-labyrinthe-imu.py +++ b/labyrinthe/3-arduino/3-labyrinthe-imu.py @@ -32,12 +32,11 @@ ACTIVATE = bge.logic.KX_INPUT_ACTIVE # Communication avec la carte Arduino ############################################################################### -# serial_baud=500000 serial_baud=115200 # 7 fps # serial_baud=38400 # 6 fps # serial_baud=9600 # 2 fps -# serial_comm = serial.Serial('COM4',serial_baud) # Windows -serial_comm = serial.Serial('/dev/ttyACM0',serial_baud) # GNU/Linux +# serial_comm = serial.Serial('COM4',serial_baud, timeout=0.016) # Windows +serial_comm = serial.Serial('/dev/ttyACM0',serial_baud, timeout=0.016) # GNU/Linux print (serial_comm) ############################################################################### @@ -98,41 +97,27 @@ def capteur(cont): serial_comm.close() bge.logic.endGame() - # # Gestion du FPS - Tous les tics - # milliseconds = int(time.time() * 1000) # Tous les tics - # if milliseconds != fps_time: - # fps = int(1000/(milliseconds-fps_time)) - # else: - # fps = "----" - # # print ("Durée entre deux tics (16 ms), fps (60) :", milliseconds-fps_time, fps) - # fps_time = milliseconds - # Désactivation du capteur pendant la chute if scene.objects['Bille']['chute']: return - # else: - # return # Lecture de la liaison série : programme Arduino : 3-labyrinthe-imu.ino - serial_msg = str(serial_comm.readline()) # Communication série : Arduino -> UPBGE - txt = serial_msg.split(',',2) - # print (txt) - x_txt = txt[0][2:] - y_txt = txt[1][:-5] - # print (x_txt, y_txt) - # obj['IMU x']=-float(x_txt) - # obj['IMU y']=-float(y_txt) - # obj['Rx']=obj.worldOrientation.to_euler().x*57.3 # 360 / (2 * pi) - # obj['Ry']=obj.worldOrientation.to_euler().y*57.3 # 360 / (2 * pi) - # obj['Rz']=obj.worldOrientation.to_euler().z*57.3 # 360 / (2 * pi) + serial_msg = str(serial_comm.readline()) + # print (serial_msg) + if serial_msg.find(",")>0: + # if ("\r\n") in serial_msg: + # print (serial_msg) + txt = serial_msg.split(',',2) + # print (txt) + x_txt = txt[0][2:] + y_txt = txt[1][:-5] + x=-(float(x_txt)/57.3) * resolution # 1/ 360 / (2 * pi) + y=-(float(y_txt)/57.3) * resolution # 1/ 360 / (2 * pi) - x=-(float(x_txt)/57.3) * resolution # 1/ 360 / (2 * pi) - y=-(float(y_txt)/57.3) * resolution # 1/ 360 / (2 * pi) - - # Roll et Pitch - # applyRotationTo(scene.objects['Plateau'], x,0, 0) - applyRotationTo(scene.objects['Plateau'], x,y, 0) - # obj.applyRotation((0,0,-obj.worldOrientation.to_euler().z), False) + # Roll et Pitch + # applyRotationTo(scene.objects['Plateau'], x,0, 0) + applyRotationTo(scene.objects['Plateau'], x,y, 0) + # obj.applyRotation((0,0,-obj.worldOrientation.to_euler().z), False) ############################################################################### # Gameplay @@ -141,7 +126,7 @@ def capteur(cont): # Initialisation de la scène def init(cont): obj = cont.owner # obj est l'objet associé au contrôleur donc 'Bille' - eevee_qualite(0) + # eevee_qualite(0) # Mémorisation de la position de départ de la bille obj['init_x']=obj.worldPosition.x @@ -171,8 +156,8 @@ def chute(cont): print ("Chuuuu.....te") # Replacement du plateau (tous les angles à 0 en plusieurs fois) - while obj_plateau.worldOrientation.to_euler().x != 0 and obj_plateau.worldOrientation.to_euler().y !=0 and obj_plateau.worldOrientation.to_euler().z !=0 : - obj_plateau.applyRotation((-obj_plateau.worldOrientation.to_euler().x, -obj_plateau.worldOrientation.to_euler().y, -obj_plateau.worldOrientation.to_euler().z), False) + # while obj_plateau.worldOrientation.to_euler().x != 0 and obj_plateau.worldOrientation.to_euler().y !=0 and obj_plateau.worldOrientation.to_euler().z !=0 : + # obj_plateau.applyRotation((-obj_plateau.worldOrientation.to_euler().x, -obj_plateau.worldOrientation.to_euler().y, -obj_plateau.worldOrientation.to_euler().z), False) # Mettre la bille à la position de départ avec une vitesse nulle obj.worldLinearVelocity=(0, 0, 0) @@ -182,6 +167,7 @@ def chute(cont): obj.worldPosition.z = obj['init_z']+0.5 # On repose la bille time.sleep(0.1) obj['chute']=False + scene.objects['Plateau']['chute']=False # Victoire (colision de la bille avec l'arrivée) def victoire(cont): diff --git a/labyrinthe/3-arduino/3-labyrinthe-imu/3-labyrinthe-imu.ino b/labyrinthe/3-arduino/3-labyrinthe-imu/3-labyrinthe-imu.ino index 0edc433..8a46807 100644 --- a/labyrinthe/3-arduino/3-labyrinthe-imu/3-labyrinthe-imu.ino +++ b/labyrinthe/3-arduino/3-labyrinthe-imu/3-labyrinthe-imu.ino @@ -41,28 +41,15 @@ float pitch_deg; String roll_txt; String pitch_txt; -/****************************************************************************** - * Pupitre - ******************************************************************************/ - -// Adressage de la led Arduino -const int led = 13; // Led de mouvement (onboard) -const int led_com = 10; // Led de communication modele 3d-> arduino - /****************************************************************************** * Initialisation ******************************************************************************/ void setup() { - pinMode(led, OUTPUT); // Led de mouvement - pinMode(led_com, OUTPUT); // Led de communication modele 3d-> arduino - digitalWrite(led, LOW); - digitalWrite(led_com, LOW); - - // Moniteur serie + // Liaison série Serial.begin(115200); // 7 fps - /* Serial.begin(38400); */ // 6 fps + /* Serial.begin(38400); */ // 6 fps /* Serial.begin(9600); */ // trop lent 2fps // I2C @@ -94,7 +81,7 @@ void loop() { pitch_txt = String(pitch_deg); /***** - * Communication : Arduino -> modèle 3d + * Communication : Arduino -> UPBGE *****/ // Serial.println("Roll (Rx): "+ roll_txt + " Pitch (Ry): " + pitch_txt); diff --git a/labyrinthe/3-arduino/test/imu-test/imu-test.ino b/labyrinthe/3-arduino/test/imu-test/imu-test.ino index a11b1f2..8ef728e 100644 --- a/labyrinthe/3-arduino/test/imu-test/imu-test.ino +++ b/labyrinthe/3-arduino/test/imu-test/imu-test.ino @@ -62,9 +62,9 @@ void setup() { // Moniteur serie Serial.begin(115200); // 7 fps - // Serial.begin(9600); // trop lent 2fps - //Serial.begin(500000); - + // Serial.begin(38400); // 7 fps + //Serial.begin(9600); // trop lent 2fps + // I2C Wire.begin(); Serial.println("Initialisation des composants I2C."); @@ -97,11 +97,7 @@ void loop() { * Communication : Arduino -> modèle 3d *****/ - // Serial.println("Roll (Rx): "+ roll_txt + " Pitch (Ry): " + pitch_txt); - Serial.print(roll_txt); - Serial.print(","); - Serial.print(pitch_txt); - Serial.println(); + Serial.println("Roll (Rx): "+ roll_txt + " Pitch (Ry): " + pitch_txt); /* delay(300); */ }