Tutoriel 6 : déplacement manuel

This commit is contained in:
Philippe Roy 2023-10-19 06:35:49 +02:00
parent e00e7c037b
commit 26e9e54253
2 changed files with 9 additions and 6 deletions

View File

@ -45,7 +45,6 @@ if serial_comm is None:
def capteur(cont): def capteur(cont):
obj = cont.owner # obj est l'objet associé au contrôleur donc 'Plateau' obj = cont.owner # obj est l'objet associé au contrôleur donc 'Plateau'
obj_bille = scene.objects['Bille'] obj_bille = scene.objects['Bille']
echelle = 0.2 # Facteur d'échelle entre la capteur et la 3D
ecart=0.001 # Écart maxi sur la rotation ecart=0.001 # Écart maxi sur la rotation
# Touche ESC -> Quitter # Touche ESC -> Quitter
@ -63,13 +62,16 @@ def capteur(cont):
# depart() # depart()
# Roll et Pitch : copier la position du plateau réel # Roll et Pitch : copier la position du plateau réel
# FIXME : sensible aux vibrations -> lissage
if serial_msg_in.find(",")>0: if serial_msg_in.find(",")>0:
txt = serial_msg_in.split(',',2) txt = serial_msg_in.split(',',2)
x_txt = txt[0][2:] x_txt = txt[0][2:]
y_txt = txt[1][:-5] y_txt = txt[1][:-5]
if x_txt != " NAN" and y_txt != " NAN": # NAN : Not A Number if x_txt != " NAN" and y_txt != " NAN": # NAN : Not A Number
x=-(float(x_txt)/57.3) * echelle # 57,3 = 360 / (2 * pi) x=-(float(x_txt)/57.3) # 57,3 = 360 / (2 * pi)
y=-(float(y_txt)/57.3) * echelle # 57,3 = 360 / (2 * pi) y=(float(y_txt)/57.3) # 57,3 = 360 / (2 * pi)
obj['angle_x']=x*57.3
obj['angle_y']=y*57.3
while abs(x-obj.worldOrientation.to_euler().x) > ecart : while abs(x-obj.worldOrientation.to_euler().x) > ecart :
obj.applyRotation((x-obj.worldOrientation.to_euler().x, 0, -obj.worldOrientation.to_euler().z), False) obj.applyRotation((x-obj.worldOrientation.to_euler().x, 0, -obj.worldOrientation.to_euler().z), False)
while abs(y-obj.worldOrientation.to_euler().y) > ecart : while abs(y-obj.worldOrientation.to_euler().y) > ecart :
@ -111,13 +113,14 @@ def cycle(cont):
# serial_msg_out = str(obj['Lx'])+str(obj['Ly'])+"\n" # serial_msg_out = str(obj['Lx'])+str(obj['Ly'])+"\n"
# serial_comm.write(serial_msg_out.encode()) # serial_comm.write(serial_msg_out.encode())
# # Si l'altitude de bille < -10 et pas de victoire -> chute # Si l'altitude de bille < -10 et pas de victoire -> chute
# if obj['z'] < -10 and obj['victoire'] == False : if obj['z'] < -10 and obj['victoire'] == False :
# # Afficher image de chute sur la matrice de leds # # Afficher image de chute sur la matrice de leds
# serial_msg_out = "91\n" # serial_msg_out = "91\n"
# serial_comm.write(serial_msg_out.encode()) # serial_comm.write(serial_msg_out.encode())
# obj['chute'] = True obj['chute'] = True
depart()
# Départ de la bille # Départ de la bille
def depart(): def depart():