Accueil > Forum > Bricolage > Drone > Problème démarrage du drone

Problème démarrage du drone

✔ Ce sujet est résolu
1 2
frangipane frangipane 27 Messages
Même problème...

Je suis entrain de checker si toutes les valeurs sont les bonnes.

J'ai regarder la variable "angular_motions[ROLL]" avec aussi YAW et PITCH.
Je ne sais pas quelles doivent être les valeurs. En tout cas moi ca tourne autour de 0. Quand il y a du mouvement ca va peut-être vers 10, ca dépends. Après ca se calme (je ne bouge plus) et ca reviends à zéro très rapidement (même étant incliné)

Pas de problème pour la réception des joysticks.

Peut-être que la dérive viens du batterie drop.

Quand je dirige mon joystick pour les directions (avancer, reculer, gauche, droite), le drone semble calculer le mouvement du drone (pour aller par exemple vers la gauche) seulement pendant que je dirige mon joystick vers la gauche. 
Exemple : je met les moteurs à 50%
je commence à diriger mon joystick vers la gauche --> il y a du changement
je suis au max vers la gauche --> ca reviens comme avant

Je trouve que ca réagis un peu comme le angular_motions (le même fonctionnement).

Désolé pour les fautes et merci de m'aider !
Frangipane
frangipane frangipane 27 Messages
Personne n'a de réponse ?
lobodol lobodol 752 Messages BIG BOSS
Je t'avoue que là j'ai pas trop de piste... Il va falloir débuguer pas-à-pas. Vérifier la partie IMU puis, PID.
frangipane frangipane 27 Messages
J'ai une idée !

Vous avez bien réussi à faire voler votre drone non ?
Donc le plus simple c'est de faire un grand tableau en comparant plein de variables avec les miennes.
Comme ca je vois tout de suite les différence et je s'aurai où chercher !
Le problème c'est que ce genre de tableau prendrait un peu de temps à faire...

Vous accepteriez ?
Je pourrai peut-être enfin faire voler ce truc !
lobodol lobodol 752 Messages BIG BOSS
Salut Frangipane, désolé pour le temps de réponse, j'ai bcp de trucs à gérer en même temps en ce moment.

Quelles variables veux-tu comparer ?
frangipane frangipane 27 Messages
Je voudrais comparé en gros les variables qui "forme" le résultat finale, la commande moteur, avec les votre.
Enfaite, je vais chercher un peu de mon côté, voir par exemple quel est la source de la dérive (à mon avis c'est du à la compensation de la perte de puissance de la batterie). Malheureusement je suis en révision.............. 

Donc je suis obligé de voir ça après le 25..............................
Merci quand même de votre attention à mon projet ! 
frangipane frangipane 27 Messages
Enfaite ! J'ai envie d'avancer !
J'ai trouver quel est l'origine de la dérive !
c'est "error_sum", qui augmente au fil du temps. En effet, elle n'est pas remise à zéro et elle ajoute à chaque fois "errors" (ben oui c'est une somme en fait je suis bête).
Si j'ai bien compris cet somme d'erreur devrait au contraire être de plus en plus petite en se rapprochant de la consigne (tendre vers 0).
J'ai regardé la fameuse variable "errors" et bingo ! ça vient du gyroscope ! Ca doit être mon problème.
"angular_motions" fluctue donc entre -0.04 et 0.03... hmm aucune idée de ce que ça veut dire : voyons plus loin.

Cette variable est calculé avec gyro_raw, comme c'est des données brute je pense que je ne comprendrai rien si je vais regarder. Du coup j'ai regarder "gyro_angle" : ca me semble être bien.

Attendez... Ho nan... Y a  pas un truc qui vous choque dans tout ca ?...
Si le drone est dans l'incapacité de faire l'asservissement (évidemment j'ai rien relier aux moteurs pour l'instant), que fait-il ?
Donner plus de jus !!! J'en ai mare ! puré ! Bon ben si y a pas de problème je vous redirai si j'ai réussi !

...........
frangipane frangipane 27 Messages
J'ai fait les 1er essais ! (Ca fait quand même du bien)
Toujours la notion d'une dérive. Je pense, pour éviter ce genre de problème que le drone ne devrait faire de calcule (PID) tant que la puissance demandé est égale à 1100. Si le drone fait la somme des erreurs sans qu'il puisse les corriger ca peut partir en steak ! (la dérive).

Je ne l'ai pas vraiment fait décoller (il touchait le sol, pas envie qu'il aille se planter dans le décor), c'est peut pour ca qu'il partait en steak aussi, je pense que les deux sont lié. J'ai fait une tour censé enlever le problème du décollage.
Mon drone n'a pas de pied --> il est pas droit --> ca doit provoquer la dérive. Je vais en faire.
Mon gyroscope n'est pas parfaitement parallèle au drone --> important ? (surement oui, je vais essayé de changer ca).
Mon drone est à peu près équilibré pour le poids.

Il me semble que la dérive s'applique à deux, voir trois moteurs et qui ne sont pas forcément les mêmes à chaque fois --> je pense donc que l'asservissement ce fait bien. Tout doit être un problème physique.

Des conseils ? remarques ? Merci de m'aidé ! :)
frangipane frangipane 27 Messages
J'ai refait des tests, mon drone par sur le côté dans le sens opposé de la pente. Il semble partir en saturation. Sans la fonction minMax() qui englobe les calculs du PID je me demande qu'elles auraient été les valeurs pour la puissance demandé. Je vais essayé de retrouver mes coefficients PID pour voir si c'est mieux.
Comme je ne comprend pas le calculs des angles utilisé, je me suis penché sur le chapitre 5. Pourquoi ne pas utiliser cette méthode ? Elle semble fiable, marche très bien. Vous avez dit que la fréquence de lecture n'est pas suffisamment élevé mais elle est tout de même de 100 exécution par seconde à peu près.
lobodol lobodol 752 Messages BIG BOSS
J'ai refait des tests, mon drone par sur le côté dans le sens opposé de la pente
Tu as bien orienté ton capteur dans le bon sens ?
Convention


La méthode du chapitre 5 est très loin des 100 lectures/sec. Je n'ai plus les chiffres en tête, mais c'est très insuffisant. Il ne faut pas oublier que la lecture est séquentielle et bloque donc le reste du programme. Du coup, l'asservissement n'a pas le temps de s'effectuer à 250 Hz, le drone par donc en vrille.
frangipane frangipane 27 Messages
J'ai orienté le "x" du capteur vers les moteurs 1 et 2, qui représente l'avant il me semble. Mais je pense qu'il n'est pas dans le mauvais sens puisque, quelque soit l'orientation du drone par rapport à une pente, il va toujours se retourner dans le sens opposé de celle-ci. Par contre le "y", selon votre schéma, le mien est inversé. Voici mon gyroscope, "y" est dans le mauvais sens :
NIOsANS

Il est donc orienté vers les moteurs A et C alors que ca devrait être vers les moteurs B et D. Comment je peux faire pour régler ca ?
Un autre problème c'est qu'il part en saturation et se retourne. Est-ce que c'est donc bien du à des mauvais coefficients PID ?
lobodol lobodol 752 Messages BIG BOSS
Bonjour frangipane,

En effet, les sens de rotation positifs du capteur ne sont pas les mêmes que les miens, mais ça ne pose pas de problème, il ne s'agit que d'un signe à changer dans le code. Donc pas d'inquiétude de ce côté-là, c'est déjà géré dans le code.

Pour t'en assurer, tu peux mettre des Serial.print dans ton code pour afficher l'inclinaison du drone.

Je vais essayer de prendre du temps en fin de semaine pour comparer avec mon drone pour voir comment il se comporte.
frangipane frangipane 27 Messages
C'est booooooooooooooooooooooooon !!!!
Le problème était des mauvais coefficients PID !!
J'ai finis par trouvez ceci (complètement différents des vôtre !) : 0.3,  0.00045,  12
Alors que mon drone a à peu près la même carrure que le vôtre (mes hélices sont quand même plus grandes).
Ce qui ma étonné c'est le coefficient I

Durant le calibrage j'ai laissé les coefficient du lacet à 0, est-ce qu'il peut décoller comme ça ?

Merci beaucoup de votre aide !!
Plus qu'a le faire décoller !

Un drone peut donc se retourner directement (sans même décoller) si il a de mauvais coefficients.
lobodol lobodol 752 Messages BIG BOSS
Top ! Pour un premier test tu peux laisser le lacet à zéro mais il risque de tourner sur lui-même.

Je confirme, mon premier essai le drone s'est retourné directe !
1 2
Vous devez être connecté pour pouvoir répondre à ce sujet.
Utilisation des données

Afin d'améliorer ton expérience utilisateur, nous utilisons des cookies 🍪