Changes between Version 1 and Version 2 of setup_target/bebop2
- Timestamp:
- Jan 16, 2020, 4:13:35 PM (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
setup_target/bebop2
v1 v2 12 12 Si 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. 13 13 14 == Procédure de démarrage ==14 == Procédure de démarrage standard == 15 15 Au 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). 16 16 17 17 Celui-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. 18 18 Le 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 20 A 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). 19 21 20 22 == Logs == … … 25 27 26 28 == Réseau == 27 === démarrage ===29 === Démarrage === 28 30 Lors 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). 29 31 Au 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. … … 31 33 Udev 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. 32 34 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 === 35 36 Au démarrage un démon de surveillance est démarré /usr/bin/bcm-watchdog. {{{bcm-watchdog -h}}} pour les options. 36 37 Appelle {{{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!) … … 44 45 * 1 appui trèèèès long: '''DANGER! ''' factory reset: toute la partie /data est écrasée, on perd tout ce qu'on a installé 45 46 46 === rootfs === 47 == rootfs == 48 A 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 47 51 48 We use a chrooted environment 49 https://uav.hds.utc.fr/src/bebop/robomap3/core-image-flair-bebop.tar.bz2 52 En 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 54 Attention, 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... 50 55 51 56 === chroot script === 52 chroot script(''/data/ftp/internal_000/bebop_chroot.sh''):57 A titre d'exemple, voici le script script de chroot complet que nous utilisons (''/data/ftp/internal_000/bebop_chroot.sh''): 53 58 54 59 {{{