AR.Flyingace GRATUIT sur l’AppStore !

Posté le 28 avril 2011 par MG - 1 commentaire

AR.FlyingAcePré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.

C’est ici que ça se passe !

1

AR.Drone… Le cœur de la bête !

Posté le 5 avril 2011 par jackpirot - 2 commentaires

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.

 

La machine :

Processeur : ARM9 468 MHz

Mémoire : DDR 128 Mbyte at 200MHz

Réseau : Wifi b/g

USB

Linux OS

L’avantage de ce type de système est la possibilité de développement de nombreuses applications.Parrot a aussi fait le choix d’une machine ouverte avec de nombreuses possibilités de pilotage via des applications  développé par d’autres. 

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.

 

Le système Linux de l’AR.Drone

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

Pour lister le repertoire data  tapez :

# 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 .

 

Les paramètres du serveur DHCP du drone

 

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

 

Le FTP

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

 

Comment voir les connexion sur le drone

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)

 

Pour voir les processus tournant en mémoire tapez :

#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.

 

 

 

 

2