Flashage des cartes pour l'Ardupilot

Posted on Jan 11 -

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

Other Posts