AR.Flyingace GRATUIT sur l’AppStore !
Préparez-vous à des combats aériens immersifs !?
AR.FlyingAce, vient d’apparaître sur l’App Store, au programme réalité augmentée, effets spéciaux, etc…
C’est GRATUIT…. au moins aujourd’hui.
Préparez-vous à des combats aériens immersifs !?
AR.FlyingAce, vient d’apparaître sur l’App Store, au programme réalité augmentée, effets spéciaux, etc…
C’est GRATUIT…. au moins aujourd’hui.
Le système d’exploitation du drone , est donc un Linux (embarqué) tournant sur le processeur ARM9 à 468 MHz. C’est un système pratiquement standard et gratuit, souvent utilisé dans les systèmes embarqués. Je voudrais vous présenter ici , brièvement le système Linux embarqué dans l’AR.Drone.
Je ne parle pas de ce que nous appelons le ‘firmware’ , programme principal qui pilote le drone. Celui-ci n’est pas accessible et nous n’en avons pas les sources. Il sert à commander notamment les moteurs, envoie la vidéo , gerer les capteurs etc ..
Parrot a prévu ce que l’on nomme interface de programmation (API) qui fournit un certain nombre de fonctions utilisables par une application externe (via le réseau WiFi) pour commander le drone, par exemple il existe une instruction pour le faire décoller, une pour le faire atterrir, tourner a droite etc.
Tout cela est bien expliqué dans la documentation de l’API disponible sur le site ARDRONE open API platform (https://projects.ardrone.org/)
L’API complète est disponible la (https://projects.ardrone.org/attachments/download/334/ARDrone_SDK_1_6_20110224.tar.gz) et comprend les sources pour plusieurs type de client et d’OS.
Des exemples pour Linux , iPhone , Androïd et même Windows !!
J’ai personnellement utilisé les exemples pour Linux sous Ubuntu 10.10 , cela demande quelques connaissance en Linux et en compilation ..
L’application (Navigation) permet de piloter le drone avec un Joystick et elle affiche divers éléments du drone et, dans une autre fenêtre la vidéo.
Il s’agit d’un linux léger, qui ne possède pas toutes les commandes standard mais permet quand même de faire pas mal de choses.
Pour accéder à la machine depuis un PC via le réseau WiFi , il faut se connecter déjà au drone en WiFi.
Le drone possède un serveur DHCP , il va donc affecter une adresse IP automatiquement au PC , généralement 192.168.1.2 le drone possède déjà l’adresse 192.168.1.1.
Si vous n’arrivé pas a vous connecter, il faut faire un unpair (petit bouton sous le drone) pour qu’il accepte la connexion avec le PC.
Pour vérifier si votre PC a bien récupéré une adresse IP passez en mode commande :
sous Windows , allez dans Demarrer , Exécuter , et tapez cmd.
Sous linux ouvrez un terminal
Sous Windows , faire ipconfig vous devez voir votre adresse IP , sous linux c’est ifconfig.
Si vous voyez votre adresse IP alors vous pouvez vous connecter en mode console sur le drone en tapant :
telnet 192.168.1.1
vous devez avoir un prompt de ce type :
BusyBox v1.14.0 (2011-02-04 10:06:10 CET) built-in shell (ash)
Enter ‘help’ for a list of built-in commands.
Pour connaitre la version du linux du drone tapez la commande suivante :
# uname –a
Linux myhost 2.6.27.47-parrot-01389-g6fdcd14 #1 PREEMPT Fri Feb 4 10:10:29 CET 2011 armv5tejl GNU/Linux
# cd data
# ls –l
-rw-r–r– 1 root root 12 Jan 1 00:03 accs_infos.bin
-rw-r–r– 1 root root 3651 Jan 1 00:00 config.ini
-rw-r–r– 1 root root 1892 Jan 1 00:00 emergency.bin
-rw-r–r– 1 root root 12 Jan 1 00:01 fact_accs_infos.bin
-rw-r–r– 1 root root 0 Jan 1 00:00 navdata_blackbox.bin
-rw-r–r– 1 root root 2 Jan 1 00:00 old_adress.txt
-rw-r–r– 1 root root 19 Jan 1 00:00 random_mac.txt
-rw-r–r– 1 root root 690057 Jan 1 00:03 syslog.bin
drwxr-xr-x 2 root root 368 Jan 1 00:00 video
Pour changer de répertoire tapez :
cd ..
cd /firmware
Pour voir le fichier de configuration tapez :
# cat/data/ config.ini
[general]
flying_time = 3959
num_version_config = 1
num_version_mb = 17
num_version_soft = 1.5.1
soft_build_date = 2011-02-04 10:10
motor1_soft = 1.15
motor1_hard = 3.0
motor1_supplier = 1.1
motor2_soft = 1.15
motor2_hard = 3.0
motor2_supplier = 1.1
motor3_soft = 1.15
motor3_hard = 3.0
motor3_supplier = 1.1
motor4_soft = 1.15
motor4_hard = 3.0
motor4_supplier = 1.1
ardrone_name = My ARDrone
navdata_demo = TRUE
com_watchdog = 2
video_enable = TRUE
vision_enable = TRUE
vbat_min = 9000
[network]
ssid_single_player = ardrone_040485
ssid_multi_player = ardrone_v1.5.1
infrastructure = TRUE
secure = FALSE
passkey =
navdata_port = 5554
video_port = 5555
at_port = 5556
cmd_port = 0
owner_mac = 00:00:00:00:00:00
owner_ip_address = 0
local_ip_address = 0
broadcast_address = 0
[control]
accs_offset = { -2.3278464e+03 1.6864414e+03 2.0654978e+03 }
accs_gains = { 9.7636747e-01 6.4969078e-02 5.6547962e-02 1.8642375e-02 -9.8015934e-01 7.9478472e-02 4.3404266e-02 -9.5812902e-02 -9.6632087e-01 }
gyros_offset = { 1.6966400e+03 1.7034500e+03 1.7080620e+03 }
gyros_gains = { 7.0519145e-03 -6.7858030e-03 -3.7692583e-03 }
gyros110_offset = { 1.6966860e+03 1.7285880e+03 }
gyros110_gains = { 1.5755034e-03 -1.5139313e-03 }
gyro_offset_thr_x = 4.0000000e+00
gyro_offset_thr_y = 4.0000000e+00
gyro_offset_thr_z = 5.0000000e-01
pwm_ref_gyros = 470
shield_enable = 1
euler_angle_max = 2.0943952e-01
altitude_max = 3000
altitude_min = 50
control_trim_z = 0.0000000e+00
control_iphone_tilt = 3.4906584e-01
control_vz_max = 7.0000000e+02
control_yaw = 1.7453293e+00
outdoor = FALSE
flight_without_shell = FALSE
brushless = TRUE
autonomous_flight = FALSE
manual_trim = FALSE
indoor_euler_angle_max = 2.0943952e-01
indoor_control_vz_max = 7.0000000e+02
indoor_control_yaw = 1.7453293e+00
outdoor_euler_angle_max = 3.4906584e-01
outdoor_control_vz_max = 1.0000000e+03
outdoor_control_yaw = 3.4906585e+00
flying_mode = 0
[pic]
ultrasound_freq = 8
ultrasound_watchdog = 3
pic_version = 100925498
[video]
camif_fps = 15
camif_buffers = 2
num_trackers = 12
bitrate = 0
bitrate_ctrl_mode = 0
[leds]
[detect]
enemy_colors = 1
enemy_without_shell = 0
detect_type = 10
detections_select_h = 0
detections_select_v_hsync = 0
detections_select_v = 0
[syslog]
output = 7
max_size = 102400
nb_files = 5
#
Voir d’autres fichiers ….
# cd firmware/
# ls -l
drwxr-xr-x 2 root root 304 Jan 1 00:00 ADC
-rwxr-x— 1 root root 14765 Jan 1 00:00 BLC.hex.backup
-rw-r–r– 1 root root 6 Jan 1 00:00 version.txt
#
# cat version.txt
1.5.1
C’est la version actuelle du firmware .
cat /tmp/udhcp.conf
start 192.168.1.2
end 192.168.1.5
interface ath0
decline_time 1
conflict_time 1
opt subnet 255.255.255.0
opt router 192.168.1.1
opt lease 1200
Le serveur alloue des adresses IP a partir de 192.168.1.2 jusqu’à 192.168.1.5
Le router (drone) prend comme adresse 192.168.1.1
Lors d’une connexion DFTP sur le drone , on arrive dans le répértoire /data/video
on y trouve 2 fichiers : licenses.txt et sys_bootldr.bin
Tapez :
# netstat –a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:5551 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5559 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN
tcp 0 137 192.168.1.1:23 192.168.1.3:55058 ESTABLISHED
tcp 0 0 192.168.1.1:21 192.168.1.3:38363 TIME_WAIT
tcp 0 0 192.168.1.1:51482 192.168.1.3:34885 TIME_WAIT
udp 0 0 0.0.0.0:5554 0.0.0.0:*
udp 0 0 0.0.0.0:5555 0.0.0.0:*
udp 0 0 0.0.0.0:5556 0.0.0.0:*
udp 0 0 0.0.0.0:67 0.0.0.0:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] DGRAM 810 /dev/log
unix 2 [ ] DGRAM 812
#
On vois ici 2 connexion tcp ( port 21 ftp) et la connexion telnet (port 23) etablies avec avec mon PC 192.168.1.3
Le drone ouvre aussi 3 ports en UDP pour les commandes et les retours vidéo et télémétrie (5554 , 5555 , 5556)
#top
Mem: 20668K used, 105412K free, 0K shrd, 0K buff, 3724K cached
Load average: 0.77 0.74 0.57 2/48 1069
PID PPID USER STAT VSZ %MEM COMMAND
957 956 root S 11936 9% /bin/program.elf
1069 986 root R 2816 2% top
955 1 root S 2812 2% inetd
946 1 root S 2736 2% telnetd -l /bin/sh
956 1 root S 2736 2% /bin/sh /bin/check_update.sh
986 946 root S 2736 2% /bin/sh
1 0 root S 2732 2% init
948 1 root S 2732 2% udhcpd /tmp/udhcpd.conf
959 1 root S 2732 2% init
960 1 root S 2732 2% /sbin/syslogd -n -m 0
961 1 root S 2732 2% /sbin/klogd -n
830 1 root S 1632 1% /bin/factory_reset_cb
2 0 root SW< 0 0% [kthreadd]
3 2 root SW< 0 0% [ksoftirqd/0]
4 2 root SW< 0 0% [watchdog/0]
5 2 root SW< 0 0% [events/0]
6 2 root SW< 0 0% [khelper]
74 2 root SW< 0 0% [kblockd/0]
86 2 root SW< 0 0% [khubd]
92 2 root SW< 0 0% [kmmcd]
115 2 root SW 0 0% [pdflush]
116 2 root SW 0 0% [pdflush]
Le programme principal qui fait fonctionner le drone est /bin/program.elf.
Il s’agit du firmware qui tourne sur le drone et assure toutes les fonctions de pilotage, de commande des moteurs , de retour télémétrie , vidéo.
Voilà un premier aperçu de la machine.