Flashage des cartes pour l'Ardupilot
Flashage de l’ArduIMU
- Telecharger la derniere version du firmware sur http://code.google.com/p/ardu-imu/downloads/list
- Decompresser l’archive et copier les dossiers qui se trouve dans librairies dans le repertoire librairies de votre application arduino
- Configurer le code suivant les instructions
- Ouvrir le fichier arduimu.pde avec Arduino
Dans notre cas, on a juste changé la valeur de GPS_PROTOCOL pour la régler l’utilisation du GPS uBlox:
#define GPS_PROTOCOL 3
Flashage de l’Ardupilot
- Telecharger la derniere version du firmware sur http://code.google.com/p/ardupilot/downloads/list
- Decompresser l’archive et ouvrir Ardupilot27.pde dans Arduino
- Dans AP_config.h, définir le mode de DEBUG_SYSTEM a effectuer
- Dans AP_config.h, définir GPS_PROTOCOL sur 2 (= ArduIMU)
Pour le flashage, la batterie de l’avion doit être branchée afin d’alimenter l’ardupilot.
Attention: pour brancher la batterie, il faut d’abord allumer la télécommande et régler la puissance moteur à nulle (commande moteur vers le bas)
Debug the Radio input
#define DEBUG_SUBSYSTEM 1
Puis flashage de l’ArduPilot.
ATTENTION: les channels 2 et 3 ont été inversés au DEBUG 8, en tenir compte pour lecture de ce debug.
Sortie dans le terminal (réglage sur 38400 baud):
Radio in ch1: 1585 ch2: 1102 ch3:1478 ch4:1500
Radio in ch1: 1583 ch2: 1102 ch3:1478 ch4:1500
Radio in ch1: 1586 ch2: 1107 ch3:1482 ch4:1500
- Variation sur gauche/droite: chan3
- gauche toute: 1878
- valeur nulle: 1478
- droite toute: 1070
- Variation sur haut/bas: chan1
- haut toute: 1988
- valeur nulle: 1583
- bas toute: 1164
- Variation moteur: chan2
- valeur nulle: 1102
- moteur max: 1919
Debug the Radio input
#define DEBUG_SUBSYSTEM 2
Puis flashage de l’ArduPilot.
ATTENTION: les channels 2 et 3 ont été inversés au DEBUG 8, en tenir compte pour lecture de ce debug.
Sortie dans le terminal (réglage sur 38400 baud):
Init Ardupilot 2.7.1
Radio in A: 1500 E: 1500 T :1100 R :1500
freeRAM: 403
Begin Debug: Servo Subsystem
Reverse ROLL - CH1: 1
Reverse PITCH - CH2: 1
Reverse THROTTLE - CH3: 0
Reverse RUDDER - CH4: 1
Servo_out ch1: 0.0000000000 ch2: -0.4500000000 ch3: 47.5000000000 ch4: 0.0000000000 Radio out ch1: 1582 ch2: 1103 ch3:1475 ch4:1500
Servo_out ch1: 0.0000000000 ch2: -0.4500000000 ch3: 47.5000000000 ch4: 0.0000000000 Radio out ch1: 1582 ch2: 1103 ch3:1475 ch4:1500
Servo_out ch1: 0.0000000000 ch2: 0.0900000000 ch3: 47.5000000000 ch4: 0.0000000000 Radio out ch1: 1582 ch2: 1109 ch3:1475 ch4:1500
Servo_out ch1: 0.0000000000 ch2: -0.4500000000 ch3: 47.5000000000 ch4: 0.0000000000 Radio out ch1: 1582 ch2: 1103 ch3:1475 ch4:1500
Gauche toute
Servo_out ch1: -2.3399999141 ch2: 0.0000000000 ch3: 87.1999969482 ch4: 0.0000000000 Radio out ch1: 1556 ch2: 1108 ch3:1872 ch4:1500
Servo_out ch1: -2.4300000667 ch2: -0.4500000000 ch3: 87.1999969482 ch4: 0.0000000000 Radio out ch1: 1555 ch2: 1103 ch3:1872 ch4:1500
Servo_out ch1: -2.3399999141 ch2: 0.0000000000 ch3: 87.3000030517 ch4: 0.0000000000 Radio out ch1: 1556 ch2: 1108 ch3:1873 ch4:1500
Droite toute
Servo_out ch1: -0.6300000190 ch2: -0.5400000095 ch3: 8.0000000000 ch4: 0.0000000000 Radio out ch1: 1575 ch2: 1102 ch3:1080 ch4:1500
Servo_out ch1: -0.7200000286 ch2: -0.4500000000 ch3: 7.9000005722 ch4: 0.0000000000 Radio out ch1: 1574 ch2: 1103 ch3:1079 ch4:1500
Servo_out ch1: -0.7200000286 ch2: -0.4500000000 ch3: 7.8000001907 ch4: 0.0000000000 Radio out ch1: 1574 ch2: 1103 ch3:1078 ch4:1500
Haut toute
Servo_out ch1: 36.9900016784 ch2: 0.0000000000 ch3: 44.6000022888 ch4: 0.0000000000 Radio out ch1: 1992 ch2: 1108 ch3:1446 ch4:1500
Servo_out ch1: 36.9000015258 ch2: 0.0000000000 ch3: 44.7000007629 ch4: 0.0000000000 Radio out ch1: 1991 ch2: 1108 ch3:1447 ch4:1500
Servo_out ch1: 36.9900016784 ch2: 0.0000000000 ch3: 44.8000030517 ch4: 0.0000000000 Radio out ch1: 1992 ch2: 1108 ch3:1448 ch4:1500
Bas toute
Servo_out ch1: -37.9799995422 ch2: 0.0000000000 ch3: 47.7999992370 ch4: 0.0000000000 Radio out ch1: 1160 ch2: 1108 ch3:1478 ch4:1500
Servo_out ch1: -37.7099990844 ch2: 0.0000000000 ch3: 47.7999992370 ch4: 0.0000000000 Radio out ch1: 1163 ch2: 1108 ch3:1478 ch4:1500
Servo_out ch1: -37.9799995422 ch2: -0.4500000000 ch3: 47.7999992370 ch4: 0.0000000000 Radio out ch1: 1160 ch2: 1103 ch3:1478 ch4:1500
Moteur toute
Servo_out ch1: 0.0900000000 ch2: -58.5320014953 ch3: 47.7000007629 ch4: 0.0000000000 Radio out ch1: 1583 ch2: 1000 ch3:1477 ch4:1500
Servo_out ch1: 0.2700000047 ch2: -58.8019981384 ch3: 47.7000007629 ch4: 0.0000000000 Radio out ch1: 1585 ch2: 1000 ch3:1477 ch4:1500
Servo_out ch1: 0.1800000095 ch2: -58.6220016479 ch3: 47.7000007629 ch4: 0.0000000000 Radio out ch1: 1584 ch2: 1000 ch3:1477 ch4:1500
Debug the Sensor input
#define DEBUG_SUBSYSTEM 3
Mettre le shield ardupilot sur l’ardupilot. Puis flashage de l’ArduPilot.
Init Ardupilot 2.7.1
Radio in A: 1500 E: 1500 T :1100 R :1500
freeRAM: 337
Begin Debug: Analog Sensor Subsystem
Shield Version: 1
AirSpeed sensor enabled: 0
ENABLE_Z_SENSOR: 1
Enable Battery: 0
Air pressure offset:227
Analog IN: 0:128, 1: 100, 2: 480, 3: 227.2966156005 Sensors: ir_max:40 roll:60 pitch:-31 airSpeed:0.0000000000m battV:8382.4599609375volts
Analog IN: 0:14, 1: 20, 2: 480, 3: 227.1669616699 Sensors: ir_max:40 roll:60 pitch:6 airSpeed:0.0000000000m battV:7963.3369140625volts
Analog IN: 0:13, 1: 25, 2: 480, 3: 227.1502532958 Sensors: ir_max:40 roll:60 pitch:13 airSpeed:0.0000000000m battV:7565.1708984375volts
Problemes
- La valeur battV varie énormément
- La valeur pitch varie entre 6 et 36
- La valeur ir_max, roll et airSpeed ne changent pas
- Chercher à quoi correspondent les valeur Analog IN
Extrait après long run:
Analog IN: 0:18, 1: 40, 2: 480, 3: 226.7457580566 Sensors: ir_max:40 roll:60 pitch:24 airSpeed:0.0000000000m battV:0.0720591259volts
Analog IN: 0:13, 1: 32, 2: 480, 3: 226.5711822509 Sensors: ir_max:40 roll:60 pitch:21 airSpeed:0.0000000000m battV:0.0684561681volts
Analog IN: 0:11, 1: 27, 2: 480, 3: 226.6140594482 Sensors: ir_max:40 roll:60 pitch:18 airSpeed:0.0000000000m battV:0.0650333642volts
Debug the GPS input
#define DEBUG_SUBSYSTEM 4
Puis flashage de l’ArduPilot.
GPS_PROTOCOL: Simulated GPS mode (Debug)
Init Ardupilot 2.7.1
Radio in A: 1500 E: 1500 T :1100 R :1500
freeRAM: 638
Begin Debug: GPS Subsystem
Lat:-9510 Lon:-9510 Alt:65535m, gs: 18 COG:0 SAT:0 FIX:0 TIM:0
Lat:-9510 Lon:-9510 Alt:65535m, gs: 18 COG:0 SAT:0 FIX:0 TIM:0
Lat:-9510 Lon:-9510 Alt:65535m, gs: 18 COG:0 SAT:0 FIX:0 TIM:0
Lat:-9510 Lon:-9510 Alt:65535m, gs: 18 COG:0 SAT:0 FIX:0 TIM:0
GPS_PROTOCOL: Arduimu
Le GPS ne lock pas (clignotage led bleu sur arduimu et ardupilot), même au bout de 15 minutes (wiki ardupilot: le gps peut prendre 15 minutes à demarrer en cold booting, environ après 1 jours sans allumage.)
Test de l’arduimu seulement en port série pour comprendre pourquoi le GPS ne lock pas, le début de la série fonctionne mais bordel après “Ground Start complete”:
???Welcome...***
???You are using Hardware Veion 2...***
???Software Version 1.8.1***
???Ground Start!***
???Ground Start!***
379.47
376.99
370.86
529.98
405.87
396.09
???Ground Start complete
DIYd>DIYd>DIYd DDIYd
HDIYd DDIYdNDIYdïÿ8Jÿ
EDIYdNDI
...pleins de chars bizarres...
Dans le code ArduIMU, il faut régler le flag PRINT_BINARY à 0 afin d’avoir le debug dans la console série:
???Welcome...***
???You are using Hardware Veion 2...***
???Software Version 1.8.1***
???Ground Start!***
???Ground Start!***
379.49
375.91
370.23
565.40
420.52
426.64
???Ground Start complete
!!!VER:1.8.1,RLL:-0.00,PCH:-0.01,YAW:0.01,IMUH:255,TOW:0***
!!!VER:1.8.1,RLL:-0.00,PCH:-0.01,YAW:0.01,IMUH:255,LAT:0,LON:0,ALT:-17,COG:0,SOG:0,FIX:0,SAT:0,TOW:55250***
!!!VER:1.8.1,RLL:-0.01,PCH:-0.00,YAW:0.02,IMUH:255,TOW:55250***
Problemes
Le GPS ne fix pas, même après un reflashage du firmware ublox en suivant les indications de diydrones:
- Telecharger u-center
- Telecharger le dernier firmware ublox
- Telecharger le driver FTDI
- Connecter le GPS avec le cable FTDI en suivant les instructions du tutorial
- Mettre à jour le firmware en suivant les instructions du tutorial
- Mettre a jour la configuration GPS
- Il y aura une alerte sur le numero de version du fichier de configuration, ne pas en tenir compte
- Le premier flashage de la configuration ne fonctionnera pas car le GPS est configuré en 9800 bauds par defauts. Effectuer la premiere configuration, puis passer en 38400 bauds, puis relancer la configuration.
Debug the GPS input - RAW HEX OUTPUT
En attente du fix GPS de la partie précédente.
Debug the IMU
#define DEBUG_SUBSYSTEM 6
Puis flashage de l’ArduPilot.
Init Ardupilot 2.7.1
Radio in A: 1500 E: 1500 T :1100 R :1500
freeRAM: 495
Begin Debug: IMU Subsystem
roll:0 pitch:0 course:0
roll:0 pitch:0 course:0
roll:0 pitch:0 course:0
Il semble y avoir un problème de communication entre l’IMU et l’ardupilot, comme dans Debug the Sensor input.
Debug the Control Switch
#define DEBUG_SUBSYSTEM 7
Puis flashage de l’ArduPilot.
Init Ardupilot 2.7.1
Radio in A: 1500 E: 1500 T :1100 R :1500
freeRAM: 515
Begin Debug: Control Switch Test
Position 3
Position 1 - Manual
A l’activation (vers arrière de la commande) du channel 6 (bouton radio en haut à droite de la télécommande de l’avion), le debug passe en position 3, puis revient en Position 1 - Manual quand le bouton revient à sont état initial (vers avant de la commande).
Debug the Throttle
#define DEBUG_SUBSYSTEM 8
Puis flashage de l’ArduPilot.
Init Ardupilot 2.7.1
Radio in A: 1500 E: 1500 T :1100 R :1500
freeRAM: 483
Begin Debug: Throttle Subsystem
ch3: 1519 Radio_in limited: 1178 PWM output: 1178 Throttle: 17.8000011444 PWM Min: 1519 PWM Max: 1519
Probleme
Le channel 3 réagit avec les commandes gauche/droite.
Gauche toute
ch3: 1920 Radio_in limited: 1916 PWM output: 1916 Throttle: 91.5999984741 PWM Min: 1114 PWM Max: 1926
Droite toute
ch3: 1114 Radio_in limited: 1115 PWM output: 1115 Throttle: 11.5000000000 PWM Min: 1114 PWM Max: 1926
Solution
- Inverser les chan 2 et 3 en INPUT sur ardupilot
- Inverser les chan 2 et 3 en OUTPUT sur ardupilot
- Attention: ceci change les données des debugs précédents
Moteur nulle
ch3: 1121 Radio_in limited: 1120 PWM output: 1120 Throttle: 12.0000000000 PWM Min: 1119 PWM Max: 1937
Moteur toute
ch3: 1937 Radio_in limited: 1892 PWM output: 1892 Throttle: 89.2000045776 PWM Min: 1119 PWM Max: 1938
Debug the Throttle
#define DEBUG_SUBSYSTEM 9
Puis flashage de l’ArduPilot.
Init Ardupilot 2.7.1
Radio in A: 1500 E: 1500 T :1100 R :1500
freeRAM: 549
Begin Debug: Radio Min Max
CH1: 1578|1583 CH2: 1494|1495 CH3: 1117|1117 CH4: 1500|1500
Après manipulation de tous les channels pour atteindre les extrèmes min/max:
CH1: 1162|1995 CH2: 1082|1907 CH3: 1116|1928 CH4: 1500|1500