Changes between Version 14 and Version 15 of setup_target/bebop2
- Timestamp:
- Mar 20, 2020, 10:59:40 AM (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
setup_target/bebop2
v14 v15 1 Cette page contient les informations nécessaires pour utiliser le drone parrot bebop2 sous linux avec des programmes "maison". Tous les capteurs et actionneurs sont utilisables.2 N'hésitez pas à contribuer en envoyant un mail àdrones(at)hds.utc.fr1 This page contains all the required information to use the Parrot bebop2 drone with homebrew software under Linux. All sensors and actuators are usable. 2 You're welcome to contribute by sending us a mail at drones(at)hds.utc.fr 3 3 4 Le drone bebop2 fonctionne avec une distribution linux Parrot. Certains logiciels spécifiques ajoutés par Parrot ont leurs sources sur https://github.com/Parrot-Developers 5 On y trouve notamment les sources du noyau utilisé. 4 The stock bebop2 drone works with a Parrot tuned linux distribution. Among the Parrot specific sotware, some have their sources available at https://github.com/Parrot-Developers. There you'll find the kernel sources for example. 6 5 7 Une doc sur le "hack" du drone[https://github.com/nicknack70/bebop/blob/master/UBHG/UBHG1_7_3.pdf ici].6 This document gives a lot of information on hacking the bebop [https://github.com/nicknack70/bebop/blob/master/UBHG/UBHG1_7_3.pdf ici]. 8 7 9 == Conne xion ==10 Pendant son boot le drone crée un point d'accès wifi Bebop2-xxxxxx. Il faut s'y connecter depuis son PC. Ensuite il faut appuyer 4 fois rapidement sur le gros bouton rouge à l'arrière sous la batterie et un serveur telnet est lançé. Il suffit alors de taper{{{ telnet 192.168.42.1 }}}8 == Connection == 9 While booting the drone create a Wifi access point named Bebop2-xxxxxx. Connect to it from your machine. Then you have to press 4 times shortly the big red button at the rear of the drone, under the battery pack. This will start a telnet server. Then you can remote connect to the drone by simple typing {{{ telnet 192.168.42.1 }}} 11 10 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.11 If a USB cable is plugged while you do the 4 short presses, then the drone sets up an ethernet over USB connexion. So you can also access the drone through this interface, should something go wrong with the wifi {{{ telnet 192.168.43.1 }}}. 13 12 14 == Procédure de démarrage standard==15 Au démarrage le premier processus exécuté ("init") correspond au binaire /sbin/boxinit (programme maison Parrot, fork d'android init. Non publié surParrot-devs).13 == Standard startup procedure == 14 Upon startup, the first run process ("init") is the binary executable /sbin/boxinit (Parrot specific program, fork of android init. Not released on Parrot-devs). 16 15 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 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.16 This program executes the instructions contained in the /etc/boxinit.rc file. Instructions are organized in "classes" that contain "services". The "core" class is launched on boot. Looks like the "core-main" class is started thereafter. 17 The rcs-init service, member of the core class, corresponds to the main startup script, /etc/init.d/rcS. This script does all the one shot actions necessary upon startup, including network and I/O configuration. 19 18 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 At the very end of the startup process, the "dragon-prog" program is launched. It is the program that governs the drone flight laws. 21 20 22 21 == Logs == 23 Toutes les opérations sont loguées par le démon ulogger. Il s'agit d'un binaire Parrot (sources fournis sur Parrot-devs, projet "ulog").24 {{{ ulogger -h }}} pour lesoptions.25 L es logs peuvent être consultés avec le binaire ulogcat.26 Très intéressant pour suivre toutes les étapes du démarrage.22 Most operations are logged by the ulogger deamon. It's a Parrot binary which sources are available on Parrot-devs, under the "ulog" project. 23 {{{ ulogger -h }}} for options. 24 Logs can be read with the ulogcat binary. 25 Very convenient to follow all startup steps. 27 26 28 == Réseau==27 == Network == 29 28 === mac address === 30 29 The mac address is defined in /data/mac_address.txt. It can be easily overwritten. 31 30 32 === Démarrage === 33 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). 34 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. 35 Le chargement du driver wl entraîne la déclaration de l'interface eth0 dans le noyau. 36 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. 31 === Startup === 32 When /etc/init.d/rcS script runs, it starts udev (/usr/bin/udevd_init). Udev configuration is in /lib/udev. The rules.d/50-network.rules contains the main network interface rules (wifi). 33 Upon startup, the BSP creates a usb broadcom device. Udev detects it, and activates a rule which runs {{{/sbin/broadcom_setup.sh insmod}}}. As a consequence, the wl (proprietary broadcom driver) ans bcm_bus modules are loaded in the kernel. 34 The wl driver creates the eth0 network interface in the kernel. Udev detects this, and activates an other rule that runs {{{/sbin/broadcom_setup.sh create_net_interface}}}. As a consequence, the eth0 interface is configured as a wifi access point. 37 35 38 36 === Watchdog === 39 Au démarrage un démon de surveillance est démarré /usr/bin/bcm-watchdog. {{{bcm-watchdog -h}}} pour lesoptions.40 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!)37 Upon startup, a watchdog daemon is started: /usr/bin/bcm-watchdog. {{{bcm-watchdog -h}}} for options. 38 It calls {{{broadcom_setup.sh reboot}}} if the network connection is lost. This script runs the broadcom_reset.sh script, which disables the network connection, waits for 3s, then re-enables it (should feel strange while inflight!) 41 39 42 == Gros bouton ==40 == Big Button == 43 41 Pendant le démarrage un démon est lancé pour surveiller les appuis sur le gros bouton rouge à l'arrière sous la batterie. Les différents comportements sont décrits dans le répertoire /bin/onoffbutton. 44 42 Les comportement sont