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.
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
modedé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_typespé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
positionetorientationsont exprimées dans le repère global selon la convention « Est/Nord/Haut ». -
Les valeurs angulaires
velocity,angular_velocity,thrustettorquesont exprimées dans le repère local du drone selon la convention « Avant/Gauche/Haut ». -
La valeur
auxdoit être comprise entre -1 et 1, ou égale àNaNpour 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) |
