Historical project documentation. Content is maintained in GitLab.

NGOS

Document/NGOS/Shell/Commandes/Controleurs/Configuration/Parametres/Comportements/DSLChapitre Suivant

LE système d’exploitation du NG (NGOS : NG Operating System)

Quelles sont les fonctionnalités du NGOS ?

{i} Le NGOS permet le contrôle en quasi temps réel et boucle fermée de la stabilisation d’un quadrocoptère. Il utilise le temps processeur restant comme planificateur de tâches préemptives tout en coopérant intelligemment avec les tâches différées.

Il utilise une structure modulaire, extensible pour ajouter des algorithmes de contrôle en boucle fermée, appelé Contrôleurs, et permet à plusieurs algorithmes d’être mises en œuvre en même temps en utilisant une couche d’abstraction simplifiée. Cela permet à chacun de créer facilement des extensions d’algorithmes de contrôle en boucle fermée sans intervenir au niveau du firmware ou du système.

La couche d’abstraction modulaire du contrôleur est couplé avec une couche d’abstraction modulaire de configuration, permettant à chacun des Contrôleurs d’avoir leur propre jeu de Paramètres dans différents fichiers de Configuration.

Ce système permet des shells multiples et leur commandes spécifiques afin qu’il soit utilisé sur les différents périphériques physiques d’entrées/sorties. Le shell est également très modulaire et offre aux développeurs la possibilité d’ajouter rapidement des nouvelles commandes pour débogage et tests. Les Contrôleurs et leur Configuration peuvent être manipulés en ligne en utilisant l’un des nombreux shells à disposition.

De ce fait, l’utilisateur peut configurer comme il le souhaite les règles de comportements en utilisant des conditions simples et les actions en utilisant le shell.

Pour une liste détaillée des caractéristiques consulter la page des Caractéristique (en Anglais) !

Pourquoi appelons-nous le Firmware, un système d’exploitation ?

Vous avez raison, c’est un firmware… :)

… mais c’est devenu un firmware avec beaucoup, beaucoup de caractéristiques d’un système d’exploitation !

Le firmware détecte le matériel à la mise sous tension et l’active à la demande. Il est divisé entre l’utilisateur, le système et les IRQ. Le contrôleur à boucle fermée est lancé dans un niveau système. L’utilisateur en mode shell doit utiliser les appels systèmes pour utiliser le code opérateur réservé. DE plus, il dispose d’une minuterie et d’un planificateur de tâches avec une table des processus. Il dispose également d’une table du matériel et d’un outil de diagnostic du matériel. Le gestionnaire matériel du NGOS pourrait si nécessaire charger des pilotes.

/!\ to translate: The started consoles implemented as cooperative shell tasks in user context (which are able to fork off commands) executed by a round-robin scheduler conclude the operating system like features.

Introduction au NGOS

Démarrage de NGOS

Au démarrage, NGOS détecte le matériel connecté aux différents bus. Ensuite, si le matériel détecté est connu, il est inscrit comme disponible dans la table du matériel. Le reste du programme et le shell utilisateur inspectent ensuite l’information et active ou non certaines parties du code selon les besoins.

NGOS initialise et active tout le matériel qu’il trouve dés qu’il est détecté sauf s’il est configuré différemment. Il démarre le gestionnaire de temps et active le déclencheur de comportements. La dernière chose que fait NGOS lorsqu’il est lancé, c’est démarré le planificateur de tâches et d’effectuer différentes tâches sur les périphériques d’entrées/sorties.

Contrôle boucle fermée temps réel du NGOS

Les processus temps réel du système démarrent à partir d’une interruption du minuteur, qui passe de l’IRQ au coeur du système et exécute une minuterie programmée. Cette minuterie programmée pilote un processus de contrôle en boucle fermée de 1ms. Ceci constitue la méthode du contrôleur en boucle fermée configuré. Selon l’état du contrôleur de vol, il va commencer à manipuler les signaux de sortie du moteur.

Initialisation et Vol

Voler est une chose simple pour le logiciel. Un état des déclencheurs de comportements (par exemple le levier des gaz / lacet en bas à droite) et une action spéciale (par exemple ctrl_enable_motors) déclenchent une requête qui change le mode de vol de STATIONNÉ à INITIALISÉ. La variable flight-mode représente l’état du contrôleur de la machine. Dés qu’il n’est plus STATIONNÉ, le Contrôleur configuré commence à manipuler le signal de sortie des moteurs. Le Contrôleur passe à l’état VOL après l’initialisation et l’activation du contrôleur. Quand il revient à l’état STATIONNÉ, les moteurs sont éteints.

Les futures versions auront d’avantage d’états de vol. Différents contrôles en circuit fermé peuvent agir différemment sur les divers états de vol.