Ton algo PID semble bon mais il y a des choses que je ne comprends pas.
Le gyroscope va de +45° a -45° pour le pitch ? Il ne fait pas un tour du genre de 0° à 360° ?
Le gyroscope va de -90° à 90°. Il vaut 0 degré lorsque le drone est à l'horizontal, -90 et 90 quand il est à la verticale, pour le pitch.
Avec mon joystick, je peux demander au drone de s'incliner suivant un angle de -45 à 45 degrés.
Cette ligne :
desired_pitch = map(joystick.pitch, -32767, 32767, -45, 45); // on récupère la consigne de l'angle PITCH
, traduit la position de mon joystick par la position angulaire souhaitée.
Je ne vois pas quand tu lis l'angle Pitch ? Alors que tu l'utilises.
Je lis l'angle pitch dans un autre fichier, en voici un extrait :
1 2 3
| accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // on récupère les valeurs brutes de l'accéléromètre et du gyroscope pour les 3 axes
roll = 0.96*(angle_x+float(gx)*0.01/131) + 0.04*atan2((double)ax,(double)az)*180/PI; (on leur applique un filtre complémentaire)
pitch = 0.96*(angle_y+float(gy)*0.01/131) + 0.04*atan2((double)ay,(double)az)*180/PI; |
(j'ai vérifié avec Serial.println() que les angles sont bel et bien lu).
Autrement dit tu ajoutes ou retire des pouillèmes à 1000 par exemple donc le PID ne régule rien.
C'est sur si les moteurs sont tous à 1000, si le PID enlève 15 à deux moteurs, les "if else" vont annuler la correction du PID. En revanche, si comme dans mes vidéos, les moteurs tournent à 1300, si le PID diminue de 20 unités la vitesse de deux moteurs et augmentent de 20 unités la vitesse de deux autres moteurs, le drone va se pencher, et le PID régulera bien quelque chose.
De plus, le fait de borner le résultat du PID lorsque les moteurs sont à 2000 est en effet assez problématique, sauf que pour l'instant lors des test PID, les moteurs n'atteigneront jamais cette vitesse, donc pour l'instant ce n'est pas ça qui va m'empêcher de trouver les bons coefs PID.
ps : dans le cas d'un quadcopter, pour faire modifier son orientation, il suffit juste de faire varier la vitesse des moteurs de quelques pouièmes. Si le coef Kp valait par exemple 2, il se retournerait brutalement le drone et aucune régulation ne serait possible.
Merci pour ton aide
Partager