J'ai pu commencer les modifications évoquées dans l'article précédent.
Le script python motorJoy.py retransmet maintenant les trames mavlink en UDP, ce qui permet de récupérer les messages (et par exemple d'avoir une visualisation avec des courbes) dans la plupart des stations de contrôle de drones.
J'ai essayé d'envoyer les trames mavlink de feedback de la barre directement à partir de l'arduino de la station sol, mais cela bloquait... Peut-être un problème lié au fait que ces trames ont été rajoutées il y a une quinzaine de jour dans mavlink. A creuser...
J'ai ajouté un réglage des gains directement via les boutons supérieurs de la manette/joystick. Lors des tests avec l'IMU, je trouvais le fonctionnement bizarre, le roulis était mal estimé. Je suis repassé en mode RAW, pour voir les trames avant fusion : la valeur correspondant à l'accélération selon y était toujours à 0. Cela semblait être un problème au niveau du capteur. Plus possible en tout cas de mesurer le roulis (à moins de faire un changement d'axe).
J'avais un capteur de rechange, mais pas là où j'étais parti en WE, ce qui me bloquait pour faire des tests...
Finalement, j'ai tout de même réessayer avec une version logicielle antérieure... et là miracle ça marchait. Le problème peut-être observé en sortie de la fonction MPU9150::getMotion9 qui récupère les accélérations, vitesses de giration et le champ magnétique sur les 3 axes du capteur.
En faisant les lectures en 3 temps, plus de problème, alors que le code semble être le même à l'intérieur. Mystérieux, mais maintenant ça remarche...
J'ai également coupé le script motorJoy.py en deux.
Le script joystick.py récupère les consignes donnés au joystick et les envoie dans une trame mavlink MANUAL_CONTROL qui sera lu par motorJoy.py
Cela devrait me permettre d'avoir le joystick déporté, et par exemple de faire le lancement du kite tout seul (en mettant mon téléphone en routeur wifi à mi-chemin)
J'ai également créé un script keyboard.py qui permet d'envoyer les consignes mais simplement à partir d'un clavier, ce qui devrait permettre à un plus grand nombre de développeurs de pouvoir faire des tests (j'ai en tête la simulation Software In The Loop derrière) sans disposer de matériel spécifique.
Finalement, pour tester tout ça, j'ai fait des tests d'endurance (nuit de lundi à mardi) avec le script motorJoy.py, joystick.py ainsi que QgroundControl pour faire les sauvegardes des messages, sur le PC, le programme GoundUnit.ino sur l'arduino de la station au sol, et le programme MPU9150_MS5611_IMU.ino
Et au bout de 5h, tout marchait toujours! A ma surprise, le fichier d'enregistrement ne faisait que 25Mo. A regarder plus en détail.
J'étais presque prêt pour des tests, plus qu'à installer le tout sur le raspberry pour éviter de sortir la PC sur la plage sous la pluie...
Malheureusement, j'avais oublié l'adaptateur pour la carte microSD, donc j'ai du charger le programme en ssh (et de toute manière, je devais installer scipy également). Et là j'avais l'erreur "Video system not initialized" que je n'avais pas sur mon PC. Peut-être lié à une mauvaise fermeture du programme au premier lancement (je me rappelle avoir eu un problème similaire lorsque j'essayais de faire un affichage graphique en mode console), mais là ce n'est pas là cas.
Donc prêt pour des essais mais une fois encore avec le PC.
Aucun commentaire:
Enregistrer un commentaire