-
Notifications
You must be signed in to change notification settings - Fork 7
Simulateur
For Additional info only, to get started see HERE !
- Installer QGroundControl (on l'appelle "QGC"): http://qgroundcontrol.com/
- 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
- 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.
- 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.
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.
- 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.
- 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.
- 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.
- MAVLink est le protocole pour parler à PX4. Donc c'est l'interface vers PX4.
- MAVSDK est une librairie qui implémente le protocole MAVLink, et donc qui vous permet de parler à l'autopilote.
- 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 :-).
- QGroundControl est la "ground control station" officielle pour les drones PX4 et APM, faite en Qt et multi-plateforme.
- 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).
docker run --rm -it -p 8554:8554 jonasvautherin/px4-gazebo-headless:latest
docker run --rm -it jonasvautherin/px4-gazebo-headless:latest 10.0.2.2 10.0.2.2
- À 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.
-
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.
-
Ouvrir le terminal et
docker build -t add-windows https://github.com/jonasvautherin/px4-gazebo-headless.git#add-windows -
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 -
Dans le terminal bash qui s'ouvre,
apt install vim, puisvim /root/edit_rcS.bashentrer la commande:w ++ff=unixpour remplacer les retours à la ligne, puis:xpour sauver. Ensuite,vim /root/entrypoint.shet répéter l'opération. -
Lancer le simulateur avec
bash entrypoint.sh
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.