Je me tente à la programmation d'un pilote automatique, j'ai déjà tapé du code pour tester le PID mais..... ça ne marche pas -________-"
Code : Tout sélectionner
erreur = consigne - mesure
commande = kp * erreur + ki * integrale_erreur + kd * derivee_erreur
Code : Tout sélectionner
commande = kp *erreur
Code : Tout sélectionner
Vector3d error = (Vector3d)vessel.transform.InverseTransformDirection((Vector3)dir);
yaw_command = k * error.x;
pitch_command = -k * error.z;
Après avoir regardé mon satellite faire du gangnam style pendant des heures et après de multiples tentatives de réglage de kp, ki et kd, j'ai soudain eu une illumination : c'est logique que ça ne marche pas avec cette équation. Les commandes yaw et pitch sont en quelque sorte des intégrateurs. Plus yaw/pitch va être grand, plus l'accélération va être grande, or on ne veut pas régler une accélération, on veut régler une position.
J'ai regardé le code source de MechJeb et c'est bien compliqué, ils ont bien un PID dans leur code mais c'est un PID trafiqué, avant d'injecter la commande, il font tout un tas de manipulation de vecteur mais leur code n'est pas très bien commenté. En gros ils pondèrent la commande avec un vecteur d'inertie et un vecteur de moment et tout un tas d'autres coefficients... ce n'est plus vraiment un PID là en fait
J'ai pas envie de copier coller du code que je ne comprend pas, et ça perdrais tout l'intérêt de ma démarche. J'aimerais réussir à faire un PID simple sans user de formules magiques.
Quelques liens pour mieux comprendre :
1) Comment faire un PID
2) Le code du PID de MechJeb
3) Le code qui récupère la valeur du PID et qui fait de la sorcellerie dessus avant d'injecter les valeurs dans les commandes de KSP
Depuis que j'ai eu mon bac, j'ai bouffé du PID chaque jour à toutes les sauces pendant 6 ans sauf que.... on ne nous a jamais appris à en programmer un algorithme, c'est un peu frustrant . Surtout qu'au final, quand je vois ce que je trouve sur internet concernant la programmation d'un PID, on est très loin des délires de transformés de Laplace, d'études fréquentielles, de réponses indicielles, de Dirac,... bref de tout ce que j'ai vu en cours
Si j'arrive à faire fonctionner ce PID, j'envisage de faire un petit tuto sur le développement d'addon dans KSP
Quelqu'un aurait une idée d'algo qui fonctionnerait ?