Open Modular Drone - Project

Version 1.0.1

Site de ressource pour l'assemblage et l'utilisation des drones modulaires ouverts de la plateforme CNRS Open-perform

Mavsim Protocol

Introduction

Le protocole mavsim (également appelé Mavlink/Simulink) est un protocole UDP simple facilitant la communication entre le drone et l’application Simulink.

Grâce à ce protocole, l’ordinateur distant envoie des trames de commande au pont Wi-Fi du drone et reçoit des trames d’état sur le même port UDP en provenance de ce pont.

Mavsim protocol

La trame de commande peut contenir des données vides, des données de suivi de mouvement ou des commandes de contrôle, tandis que la trame d’état regroupe toutes les données d’état du drone dans une seule structure.

Lorsque le pont Mavsim est configuré en mode esclave, il n’envoie de trames d’état qu’en réponse à une trame de commande.

En mode normal, le pont attend une première trame de commande pour obtenir l’adresse IP et le port du client, puis envoie des trames d’état périodiquement à 100 Hz.

UDP Trame de Commande

La trame de commande commence par un champ id indiquant le type de commande. Les valeurs possibles de id sont les suivantes :

  • 0 → Trame vide (peut être utilisée en mode esclave pour recevoir l’état)

  • 1 → Trame de contrôle pour déplacer le drone

  • 2 → Trame de pose visuelle (peut être utilisée pour envoyer la sortie d’un système de capture de mouvement externe ne prenant pas en charge les protocoles VRPN ou QTM).

Trame vide

Field type Field name field description
uint8_t id command ID = 0 for empty frame

Trame de controle

Field type Field name field description
uint8_t id command ID = 1 for control command
uint32_t num message counter (should be incremented evry time)
uint8_t arm_state armed or not
uint8_t mode flight mode (manual, pos, offboard, etc.)
uint8_t cmd_type position, vel, attitude, rate
uint8_t use_aux flag to send aux outputs
float[3] position position in meters
float[3] velocity velocity in m/s
float[3] thrust thrust in N
float[3] orientation_euler euler angles in radians [roll, pitch, yaw]
float[4] orientation_quat quaternion [x,y,z,w]
float[3] angular_velocity angular velocity in rad/s
float[3] torque torque in Nm
float[6] aux aux commands, e.g. for servos, etc.
  • Les valeurs mode définissent le mode de vol PX4 (utilisez Offboard pour contrôler le drone avec le bureau à distance) :
Mode PX4 flight mode
1 Manual
2 Altitude
3 Position
4 Auto
5 Acro
6 Offboard
7 Stabilized
8 Rattitude
  • Le paramètre cmd_type spécifie le type de commande (utilisé uniquement en mode hors-bord) :
Command type Description Fields used
0 Position command position, orientation_euler[yaw]
1 velocity command velocity, angular_velocity[yaw]
2 Attitude command (Euler) orientation_euler, thrust
3 Attitude command (Quaternion) orientation_quat, thrust
4 Rate command angular_velocity, thrust
  • Les valeurs position et orientation sont exprimées dans le repère global selon la convention « Est/Nord/Haut ».

  • Les valeurs angulaires velocity, angular_velocity, thrust et torque sont exprimées dans le repère local du drone selon la convention « Avant/Gauche/Haut ».

  • La valeur aux doit être comprise entre -1 et 1, ou égale à NaN pour désactiver l’affichage.

Repère de pose de la vision

Field type Field name field description
uint8_t id command ID = 2 for Vision Pose Frame
float[3] position position in meters
float[4] orientation orientation in quaternion [x,y,z,w]

Trame d’état UDP

Field type Field name Field description
uint32_t num message counter
float[3] position position in meters
float[4] orientation orientation (Quaternion [x,y,z,w])
float[3] angles orientation (Euler angles)
float[3] linear_speed linear speed (m/sec)
float[3] angular_speed angular speed (rad/sec)
float battery_voltage measured battery voltage (V)
float battery_remaining estimated battery charge (%)
float battery_current measured current (A)
float armed arming state (1. or 0.)
float mode fly mode
float[32] actuators actuators value
float airspeed measured airspeed (if air sensor available)
uint32_t[2] encoders encoder ticks (if available)
Last updated on 6 Jan 2025
Published on 6 Jan 2025
 Edit on GitHub

Open Modular Drone © 2024 by CNRS - Open-perform is licensed under CC BY 4.0