Changes between Version 14 and Version 15 of setup_target/bebop2


Ignore:
Timestamp:
Mar 20, 2020, 10:59:40 AM (5 years ago)
Author:
Bayard Gildas
Comment:

--

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.fr
     1This page contains all the required information to use the Parrot bebop2 drone with homebrew software under Linux. All sensors and actuators are usable.
     2You're welcome to contribute by sending us a mail at drones(at)hds.utc.fr
    33
    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é.
     4The 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.
    65
    7 Une doc sur le "hack" du drone [https://github.com/nicknack70/bebop/blob/master/UBHG/UBHG1_7_3.pdf ici].
     6This document gives a lot of information on hacking the bebop [https://github.com/nicknack70/bebop/blob/master/UBHG/UBHG1_7_3.pdf ici].
    87
    9 == Connexion ==
    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 ==
     9While 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 }}}
    1110
    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.
     11If 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 }}}.
    1312
    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é sur Parrot-devs).
     13== Standard startup procedure ==
     14Upon startup, the first run process ("init") is the binary executable /sbin/boxinit (Parrot specific program, fork of android init. Not released on Parrot-devs).
    1615
    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.
     16This 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.
     17The 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.
    1918
    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).
     19At the very end of the startup process, the "dragon-prog" program is launched. It is the program that governs the drone flight laws.
    2120
    2221== 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 les options.
    25 Les logs peuvent être consultés avec le binaire ulogcat.
    26 Très intéressant pour suivre toutes les étapes du démarrage.
     22Most 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.
     24Logs can be read with the ulogcat binary.
     25Very convenient to follow all startup steps.
    2726
    28 == Réseau ==
     27== Network ==
    2928=== mac address ===
    3029The mac address is defined in /data/mac_address.txt. It can be easily overwritten.
    3130
    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 ===
     32When /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).
     33Upon 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.
     34The 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.
    3735
    3836=== Watchdog ===
    39 Au démarrage un démon de surveillance est démarré /usr/bin/bcm-watchdog. {{{bcm-watchdog -h}}} pour les options.
    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!)
     37Upon startup, a watchdog daemon is started: /usr/bin/bcm-watchdog. {{{bcm-watchdog -h}}} for options.
     38It 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!)
    4139
    42 == Gros bouton ==
     40== Big Button ==
    4341Pendant 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.
    4442Les comportement sont