Changes between Version 1 and Version 2 of setup_target/bebop2


Ignore:
Timestamp:
01/16/20 16:13:35 (4 years ago)
Author:
Bayard Gildas
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • setup_target/bebop2

    v1 v2  
    1212Si après les 4 appuis un câble USB est branché, alors le drone crée une connexion ethernet over USB. On peut donc aussi accéder au drone par cette interface avec {{{ telnet 192.168.43.1 }}}, ce qui est pratique en cas de problème avec une configuration wifi custom.
    1313
    14 == Procédure de démarrage ==
     14== Procédure de démarrage standard ==
    1515Au démarrage le premier processus exécuté ("init") correspond au binaire /sbin/boxinit (programme maison Parrot, fork d'android init. Non publié sur Parrot-devs).
    1616
    1717Celui-ci exécute les instructions présentent dans /etc/boxinit.rc. Les instructions sont organisées par "classes" qui contiennent des "services". La classe "core" est lancée au boot. Apparemment la classe "core-main" est lancée ensuite.
    1818Le service rcs-init, membre de la classe core, correspond au principal script de démarrage, /etc/init.d/rcS. Ce script effectue les actions "one shot" qui doivent être faites au démarrage: configurer le réseau et les IOs notamment.
     19
     20A la toute fin du processus de démarrage, le programme "dragon-prog" se lance. Il s'agit du programme qui gère le vol du drone (lois de commande).
    1921
    2022== Logs ==
     
    2527
    2628== Réseau ==
    27 === démarrage ===
     29=== Démarrage ===
    2830Lors du démarrage le script /etc/init.d/rcS démarre udev (/usr/bin/udevd_init). La configuration d'udev se trouve dans /lib/udev (histoire qu'on galère un peu pour la trouver...). le fichier rules.d/50-network.rules rassemble les règles associées à la gestion du réseau principal (wifi).
    2931Au démarrage le bsp créé un périphérique usb broadcom. Udev le détecte, ce qui active une règle qui exécute {{{/sbin/broadcom_setup.sh insmod}}}. En conséquence les modules wl (driver broadcom propriétaire) et bcm_dbus sont chargés.
     
    3133Udev le détecte, ce qui active une règle qui exécute {{{/sbin/broadcom_setup.sh create_net_interface}}}. En conséquence l'interface eth0 est configurée en mode wifi access point.
    3234
    33 à la fin du démarrage on lance un chroot sur un système de fichier maison afin de continuer avec nos programmes. Le système de fichier, obtenu avec robomap3, se trouve là [https://devel.hds.utc.fr/software/flair/wiki/setup_target]
    34 === watchdog ===
     35=== Watchdog ===
    3536Au démarrage un démon de surveillance est démarré /usr/bin/bcm-watchdog. {{{bcm-watchdog -h}}} pour les options.
    3637Appelle {{{broadcom_setup.sh reboot}}} en cas de perte de connexion. Ce script appelle broadcom_reset.sh. Ce script désactive l'interface réseau, attend 3s et la réactive (ça doit faire bizarre en vol!)
     
    4445  * 1 appui trèèèès long: '''DANGER! ''' factory reset: toute la partie /data est écrasée, on perd tout ce qu'on a installé
    4546
    46 === rootfs ===
     47== rootfs ==
     48A la fin de la procédure parrot le drone est prêt à voler avec les lois de commande de parrot. Pour remplacer ces lois de commande et utiliser les nôtres, nous pourrions installer notre programme dans le système de fichier de parrot et le lancer à la place de celui de parrot ("dragon-prog"). Mais cela a 2 inconvénients
     49  * le système de fichier original est modifié. Si on fait des erreurs, on risque de ne plus pouvoir démarrer!
     50  * nous ne sommes pas certains que le programme original de parrot ne termine pas la configuration du drone. Si c'est le cas nous pourrions avoir des problèmes pour utiliser certains capteurs par exemple
    4751
    48 We use a chrooted environment
    49 https://uav.hds.utc.fr/src/bebop/robomap3/core-image-flair-bebop.tar.bz2
     52En conséquence nous préférons démarrer nos programmes dans un "chroot", c'est à dire un système de fichier à part. L'idée est de lancer un serveur ssh (dropbear) dans un système de fichier créé avec robomap3. C'est dans ce système de fichier que nous trouverons nos programmes de vol.
     53
     54Attention, il faut éviter que nos lois de commande et celles de parrot entrent en conflit (par exemple l'une veut accélérer un moteur alors que l'autre veut le ralentir). Pour cela il faut commencer par faire "kk" 💩. C'est un script fournit par parrot qui termine le processus dragon-prog. Notons que c'est un kk dur car le script utilise le signal SIGKILL...
    5055
    5156=== chroot script ===
    52 chroot script (''/data/ftp/internal_000/bebop_chroot.sh''):
     57A titre d'exemple, voici le script script de chroot complet que nous utilisons (''/data/ftp/internal_000/bebop_chroot.sh''):
    5358
    5459{{{