Skip to content
This repository was archived by the owner on Jun 22, 2022. It is now read-only.

Simulateur

Wermeille Bastien edited this page May 1, 2020 · 16 revisions

For Additional info only, to get started see HERE !

Infos utiles pour l'installation du simulateur

  1. Installer QGroundControl (on l'appelle "QGC"): http://qgroundcontrol.com/
  2. Démarrer un simulateur headless, ici avec une image docker (le simulateur s'appelle Gazebo, et je le démarre ici sans interface graphique, mais QGC devrait s'y connecter automatiquement): https://github.com/JonasVautherin/px4-gazebo-headless#run-in-broadcast-mode
  3. Apprendre à utiliser un peu QGC avec le simulateur: https://docs.qgroundcontrol.com/en/

Par la suite vous voudrez probablement utiliser le simulateur avec la UI (c'est plus sympa), mais il faudra compiler PX4 pour ça, donc on verra dans un deuxième temps. Vous voudrez aussi rejoindre le Slack PX4: https://slack.px4.io/. Ici la communauté open source pourra vous aider si vous avez des problèmes avec le simulateur (on appelle ça "SITL", pour "software in the loop") ou avec QGC.

Infos complémentaires installation

  • Faire tourner un simulateur (je vous conseille soit jMAVSim, soit gazebo) avec QGroundControl pour vous familiariser avec PX4 (décoller, planifier une mission, etc). J'ai mis un lien docker dans mon précédent e-mail pour faire tourner gazebo sans interface graphique.
  • Si vous voulez faire tourner un simulateur en mode graphique, il vous faudra compiler PX4. Nous avons un guide pour ça: https://dev.px4.io/master/en/setup/dev_env.html. La plupart des devs PX4 sont sur Linux, ensuite macOS, et finalement Windows.

Compréhension des composants

Pour comprendre les composants : SITL/drone parle en MAVLink avec mavsdk_server, et MAVSDK-Java parle avec mavsdk-server. Ce sont 3 composants différents, qui peuvent tourner soit sur le drone, soit sur l'ordi, soit sur le natel (chacun tourne ou il veut). Une fois compris ça, normalement ça devrait être clair quelle est la différence entre l'exemple java et l'exemple Android. L'exemple Java ne fait tourner que MAVSDK-Java, alors que l'app Android fait tourner mavsdk_server sur le téléphone. Le reste, c'est pareil.

Autres Infos

  1. Checker les libs de cartes. Dans l'exemple Android, j'utilise Mapbox, mais il y a d'autres solutions (Here, Leaflet, Google Maps, ...). De mon expérience, des points importants sont:
    • Est-ce que la lib permet d'accéder à l'altitude d'un point GPS?
    • Comment dessiner sur la carte? Par exemple vous allez probablement vouloir dessiner la trace du drone, ou les lignes qu'il va suivre, ou encore afficher un polygone que l'utilisateur peut modifier pour sélectionner une région sur la carte.
  2. PX4 est le nom du firmware. Donc le code qui reçoit les informations des capteurs et qui contrôle les moteurs pour que le drone vole et aille au bon endroit.
  3. En général, on fait tourner PX4 sur un ordinateur spécialisé pour l'autopilote, qu'on appelle le "flight controller unit". Pixhawk est par exemple une board qui peut faire tourner PX4.
  4. MAVLink est le protocole pour parler à PX4. Donc c'est l'interface vers PX4.
  5. MAVSDK est une librairie qui implémente le protocole MAVLink, et donc qui vous permet de parler à l'autopilote.
  6. Vous pourriez entendre parler de APM ou "Ardupilot". C'est un "concurrent" open source à PX4. Donc vraiment un projet similaire, qui parle aussi MAVLink, mais qui n'est pas PX4 :-).
  7. QGroundControl est la "ground control station" officielle pour les drones PX4 et APM, faite en Qt et multi-plateforme.
  8. Pas mal de drones aujourd'hui ont aussi un "companion computer". C'est en général une board (genre raspberry pi) qui fait tourner Linux pour faire des trucs. Le companion computer est connecté au FCU (flight controller unit). Par exemple, vous pourriez avoir un companion puissant qui reçoit les informations des caméras autour du drone pour calculer l'évitement d'obstacles, et qui envoie les ordres de trajectoire au FCU, qui ne s'occupe que du vol (et pas du calcul d'obstacles depuis les caméras).

Windows - installation sous docker

Avec Docker (Windows Pro ou entreprise)

docker run --rm -it -p 8554:8554 jonasvautherin/px4-gazebo-headless:latest

Avec Docker Toolbox (version obsolète, mais Docker n'est plus que supporté sur Windows Pro)

docker run --rm -it jonasvautherin/px4-gazebo-headless:latest 10.0.2.2 10.0.2.2

Méthode obsolète avec build manuel

  • À l'heure où j'écris, il n'existe pas de build en ligne pour windows, mais j'ai regardé avec Jonas pour qu'il le publie. Du coup, voici les instructions pour le faire manuellement.
  1. Lancer docker et clic droit-> settings sur l'icône dans la barre des tâches. Dans le menu Ressources qui apparaît, augmenter la quantité de RAM allouée à la VM qui fait tourner Docker ; s'il y en a pas assez, le build échouera.

  2. Ouvrir le terminal et docker build -t add-windows https://github.com/jonasvautherin/px4-gazebo-headless.git#add-windows

  3. Une fois le build terminé, il ne fonctionne pas à cause d'un problème de retour à la ligne. Pour ce faire, docker run --rm -it --entrypoint bash add-windows

  4. Dans le terminal bash qui s'ouvre, apt install vim, puis vim /root/edit_rcS.bashentrer la commande :w ++ff=unix pour remplacer les retours à la ligne, puis :xpour sauver. Ensuite, vim /root/entrypoint.sh et répéter l'opération.

  5. Lancer le simulateur avec bash entrypoint.sh

Mavsdk-server on Android

There exist a java library mavsdk-server which allow to run an instance of mavsdk-server on an android devices. However, only arm64-v8a devices are currently supported. The code necessary to run it has be written in the file Drone.kt and commented. Once you have the right device, then just uncomment this code to enable an instance of mavsdk-server to run behind the scene.

Clone this wiki locally