FR 3110257 A1 20211119 FR 2004684 A 20200512 Utilisation de l’homogénéité généralisée pour améliorer une commande PID Un dispositif de commande numérique pour l’asservissement d’un système à commander numériquement, opérant par pas de temps discret, à partir d’un vecteur d’erreur reçu en entrée à chaque pas de temps, comprend : - une mémoire agencée pour recevoir des données de paramètres de commande comprenant un facteur d’homogénéité choisi dans la plage [-1 ; 0], une matrice de gain de rétroaction liée au système à commander, une matrice de générateur de dilatation, une matrice de Lyapunov définissant une norme canonique homogène, une borne inférieure, une borne supérieure, et un coefficient proportionnel, un coefficient dérivatif et un coefficient intégral caractéristiques du système à commander, - un estimateur agencé pour déterminer une plage de valeur de norme canonique homogène pour un pas de temps courant à partir des plages d’estimation des pas de temps précédents, du vecteur d’erreur du pas de temps courant, de la matrice de générateur de dilatation, de la matrice de Lyapunov, de la borne inférieure et de la borne supérieure, lesquelles définissent la plage d’estimation pour le premier pas de temps, - un calculateur agencé pour retourner une commande du système à commander pour le pas de temps courant à partir de la somme entre le vecteur d’erreur du pas de temps courant multiplié par un facteur calculé à partir de la matrice de gain de rétroaction, de la plage de valeur de norme canonique homogène pour un pas de temps courant, du coefficient proportionnel, du coefficient dérivatif et de la matrice de générateur de dilatation, et une valeur représentant l’intégrale entre le premier pas de temps et le pas de temps courant d’un produit associant le coefficient intégral, la matrice de générateur de dilatation, la plage de valeur de norme canonique homogène pour tous les pas de temps et le vecteur d’erreur. Fig.2 Utilisation de l’homogénéité généralisée pour améliorer une commande PID L’invention concerne le domaine des correcteurs pour l’asservissement de systèmes, et plus particulièrement des correcteurs du type PID (proportionnel-intégral-dérivé). L’asservissement d’une grandeur consiste en la mesure, en temps réel, de l’écart, appelé erreur, entre la valeur réelle de cette grandeur et la consigne à atteindre. Un correcteur applique ensuite à cette erreur une fonction de transfert. Le résultat de cette fonction de transfert forme une commande à appliquer pour réduire l’erreur entre consigne et valeur réelle de la grandeur à asservir. Les correcteurs PID sont caractérisés par une loi de fonctionnement comprenant un terme proportionnel, un terme dérivé et un terme intégral, d’où le nom. Les correcteurs PID sont linéaires, c’est-à-dire que leur fonction de transfert est une fonction linéaire. Le réglage d’un correcteur PID linéaire nécessite l’ajustement de trois coefficients pour régler ce correcteur PID, ce qui rend les correcteurs PID linéaires simples à mettre en œuvre. L’asservissement réalisé avec un correcteur PID linéaire bien réglé est robuste ( i.e. résistant aux perturbations), rapide ( i.e. à faible temps de réponse) et précis ( i.e. l’erreur asymptotique est sensiblement nulle). Ces qualités, associées à la simplicité du réglage des correcteurs PID, en font les correcteurs les plus utilisés de l’industrie. Ainsi, à titre d’exemple, la quasi-totalité des drones quadrirotors sont asservis par des correcteurs PID linéaires. Un correcteur PID est très efficace pour asservir un drone dans le cadre d’un modèle avec de faibles perturbations en tangage et en roulis autour de la position horizontale du drone. Les effets non linéaires de ce type de modèle sont relativement faibles, et peuvent être traités comme des incertitudes et minimisés par le réglage du correcteur, par exemple en utilisant un critère H-infini. Les correcteurs PID linéaires ne sont cependant pas parfaits, et existe un besoin de correcteurs plus performants. On connaît des correcteurs non linéaires du type commande à mode glissant, ou SMC (“ sliding mode control ” en anglais), comme décrits dans l’article de Xu, R., & Ozguner, U. (2006, December) “ Sliding mode control of a quadrotor helicopter ”, In Proceedings of the 45th IEEE Conference on Decision and Control (pp. 4957-4962). IEEE . L’article de Lee, D., Kim, H. J., & Sastry, S. (2009), “ Feedback linearization vs. adaptive sliding mode control for a quadrotor helicopter ”, International Journal of control, Automation and systems , 7(3), 419-428 , compare les performances entre un correcteur de type SMC et un correcteur du type à linéarisation par rétroaction, ou FLM (“ feedback linearization method ”). L’article de Besselmann, T., Lofberg, J., & Morari, M. (2012). “ Explicit MPC for LPV systems: Stability and optimality. ” IEEE Transactions on Automatic Control, 57(9), 2322-2332 ” décrit un correcteur non linéaire du type à commande prédictive de modèle, ou MPC (“ model predictive control ” en anglais). Les articles Milhim, A., Zhang, Y., & Rabbath, C. A. (2010). “ Gain scheduling based PID controller for fault tolerant control of quad-rotor UAV. In AIAA infotech@ aerospace 2010 (p. 3530) ”, et Ataka, A., Tnunay, H., Inovan, R., Abdurrohman, M., Preastianto, H., Cahyadi, A. I., & Yamamoto, Y. (2013, November), “ Controllability and observability analysis of the gain scheduling based linearization for uav quadrotor ” In 2013 International conference on robotics, biomimetics, intelligent computational systems (pp. 212-218). IEEE décrivent des correcteurs non linéaires du type PID à commutateur utilisant une planification de gain. Aucun de ces correcteurs non linéaires ne donne satisfaction. Les correcteurs du type SMC et les correcteurs du type à commutateur présentent un problème de babil (“ chattering ” en anglais), comme cela est décrit dans l’article de Xu, R., & Ozguner, U. (2006, December). “ Sliding mode control of a quadrotor helicopter ” In Proceedings of the 45th IEEE Conference on Decision and Control (pp. 4957-4962). IEEE . Les correcteurs du type MPC et FLM présentent une trop grande complexité algorithmique pour les mettre en œuvre en pratique. L’invention vient améliorer la situation. À cet effet, elle propose un dispositif de commande numérique pour l’asservissement d’un système à commander numériquement, opérant par pas de temps discret, à partir d’un vecteur d’erreur reçu en entrée à chaque pas de temps, comprenant une mémoire agencée pour recevoir des données de paramètres de commande comprenant un facteur d’homogénéité choisi dans la plage [-1 ; 0], une matrice de gain de rétroaction liée au système à commander, une matrice de générateur de dilatation, une matrice de Lyapunov définissant une norme canonique homogène, une borne inférieure, une borne supérieure, et un coefficient proportionnel, un coefficient dérivatif et un coefficient intégral caractéristiques du système à commander, un estimateur agencé pour déterminer une plage de valeur de norme canonique homogène pour un pas de temps courant à partir des plages d’estimation des pas de temps précédents, du vecteur d’erreur du pas de temps courant, de la matrice de générateur de dilatation, de la matrice de Lyapunov, de la borne inférieure et de la borne supérieure, lesquelles définissent la plage d’estimation pour le premier pas de temps, un calculateur agencé pour retourner une commande du système à commander pour le pas de temps courant à partir de la somme entre le vecteur d’erreur du pas de temps courant multiplié par un facteur calculé à partir de la matrice de gain de rétroaction, de la plage de valeur de norme canonique homogène pour un pas de temps courant, du coefficient proportionnel, du coefficient dérivatif et de la matrice de générateur de dilatation, et une valeur représentant l’intégrale entre le premier pas de temps et le pas de temps courant d’un produit associant le coefficient intégral, la matrice de générateur de dilatation, la plage de valeur de norme canonique homogène pour tous les pas de temps et le vecteur d’erreur. La Demanderesse a conçu un correcteur d’un genre nouveau, aux performances améliorées par rapport à un correcteur PID linéaire. La Demanderesse a mis en œuvre ce nouveau correcteur dans un système initialement asservi avec un correcteur PID linéaire en tirant profil des réglages déjà réalisés par un fabricant sur ce correcteur PID linéaire. Ce dispositif est particulièrement avantageux car il améliore le temps de réponse et la robustesse du système comparé à un correcteur linéaire caractérisé par les coefficients kp, ki et kd. Ces améliorations sont très simples à mettre en œuvre, car le système dans son ensemble est peu modifié. Enfin, comparé à un correcteur PID linéaire, le surcoût en complexité et en charge de calcul est très faible. Selon divers modes de réalisation, l’invention peut présenter une ou plusieurs des caractéristiques suivantes : - le calculateur est agencé pour calculer le facteur calculé à partir de la matrice de gain de rétroaction, de la plage de valeur de norme canonique homogène pour un pas de temps courant, du coefficient proportionnel, du coefficient dérivatif et de la matrice de générateur de dilatation selon la formule Où est la matrice de gain de rétroaction, est le facteur d’homogénéité, est une valeur tirée dans la plage de valeur de norme canonique homogène pour le pas de temps courant, est une matrice associant le coefficient proportionnel et le coefficient dérivatif, et G est la matrice de générateur de dilatation, -le calculateur est agencé pour calculer la valeur représentant l’intégrale entre le premier pas de temps et le pas de temps courant d’un produit associant le coefficient intégral, la matrice de générateur de dilatation, la plage de valeur de norme canonique homogène des pas de temps et le vecteur d’erreur selon la formule Où est le coefficient intégral, G est la matrice de générateur de dilatation, et est une valeur tirée dans la plage de valeur de norme canonique homogène pour le pas de temps , - le calculateur est agencé pour tirer comme valeur dans la plage de valeur de norme canonique homogène pour un pas de temps donnée la borne supérieure de cette plage, - le calculateur est agencé pour utiliser la borne supérieure de la plage de valeur de norme canonique homogène pour le pas de temps courant comme valeur tirée dans la plage de valeur de norme canonique homogène pour le pas de temps courant, - l’estimateur détermine la plage de valeur de norme canonique homogène pour un pas de temps courant en initialisant une valeur de plage inférieure et une valeur de plage supérieure avec les bornes de la plage de valeur de norme canonique homogène du pas de temps précédent et en appliquant : un premier test déterminant si le produit de la transposée du produit du vecteur d’erreur du pas de temps courant et de la transposée de l’exponentielle du produit de la matrice de générateur de dilatation par le négatif du logarithme de la valeur de plage supérieure, de la matrice de Lyapunov, et du produit du vecteur d’erreur du pas de temps courant et de la transposée de l’exponentielle du produit de la matrice de générateur de dilatation par le négatif du logarithme de la valeur de plage supérieure est plus grand que 1, et, le cas échéant, la définition de la plage de valeur de norme canonique homogène du pas de temps du pas de temps courant entre la valeur de plage supérieure et le minimum entre le double de la valeur de plage supérieure et la borne supérieure, un second test, appliqué si le premier test est négatif, déterminant si le produit de la transposée du produit du vecteur d’erreur du pas de temps courant et de la transposée de l’exponentielle du produit de la matrice de générateur de dilatation par le négatif du logarithme de la valeur de plage inférieure, de la matrice de Lyapunov, et du produit du vecteur d’erreur du pas de temps courant et de la transposée de l’exponentielle du produit de la matrice de générateur de dilatation par le négatif du logarithme de la valeur de plage inférieure est plus grand que 1, et, le cas échéant, la définition de la plage de valeur de norme canonique homogène du pas de temps du pas de temps courant entre le maximum entre la moitié de la valeur de plage inférieure et la borne inférieure et la valeur de plage inférieure, une boucle si le second test est négatif, qui met à jour itérativement la valeur de plage inférieure et la valeur de plage supérieure en calculant la moyenne entre la valeur de plage inférieure ou la valeur de plage supérieure, en déterminant si le produit de la transposée du produit du vecteur d’erreur du pas de temps courant et de la transposée de l’exponentielle du produit de la matrice de générateur de dilatation par le négatif du logarithme de la moyenne entre la valeur de plage inférieure ou la valeur de plage supérieure, de la matrice de Lyapunov, et du produit du vecteur d’erreur du pas de temps courant et de la transposée de l’exponentielle du produit de la matrice de générateur de dilatation par le négatif du logarithme de la moyenne entre la valeur de plage inférieure ou la valeur de plage supérieure est plus petit que 1, et en mettant à jour la valeur de plage supérieure avec la moyenne entre la valeur de plage inférieure ou la valeur de plage supérieure si c’est le cas, et la valeur de plage inférieure avec la moyenne entre la valeur de plage inférieure ou la valeur de plage supérieure dans le cas contraire. L’invention concerne également un quadrotor qui comprend un dispositif selon l’invention pour calculer une commande à partir d’une consigne reçue en entrée et [un produit de programme d’ordinateu agencé pour mettre en œuvre l’estimateur et le calculateur du dispositif selon l’invention. D’autres caractéristiques et avantages de l’invention apparaîtront mieux à la lecture de la description qui suit, tirée d’exemples donnés à titre illustratif et non limitatif, tirés des dessins sur lesquels : La représente une vue schématique d’un système de coordonnées d’un quadrotor, La représente une vue schématique d’un dispositif selon l’invention, La représente un exemple de boucle de fonctionnement du dispositif de la , La représente un exemple de mise en œuvre particulière d’une fonction de la , La représente un exemple de mise en œuvre particulière d’une autre fonction de la , La représente une comparaison de la précision entre une consigne, une commande PID classique, et la commande PID homogène de l’invention dans la dimension x, La représente une comparaison de la précision entre une consigne, une commande PID classique, et la commande PID homogène de l’invention dans la dimension y, La représente une comparaison de la précision entre une consigne, une commande PID classique, et la commande PID homogène de l’invention dans la dimension z, La représente une comparaison de la précision entre une consigne, une commande PID classique, et la commande PID homogène de l’invention dans la dimension Ψ, La représente la robustesse de la commande PID classique La représente la robustesse de la commande PID homogène selon l’invention, et La quantifie les améliorations représentées sur les figures 6 à 11 en norme L2. Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ils pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. La présente description est de nature à faire intervenir des éléments susceptibles de protection par le droit d’auteur et/ou le copyright. Le titulaire des droits n’a pas d’objection à la reproduction à l’identique par quiconque du présent document de brevet ou de sa description, telle qu’elle apparaît dans les dossiers officiels. Pour le reste, il réserve intégralement ses droits. La représente une vue schématique d’un système de coordonnées d’un quadrotor. Ce système va être utilisé pour expliquer le fonctionnement classique d’un système commandé par le dispositif selon l’invention. Dans ce système, 4 rotors exercent des forces respectives à , par exemple pour faire voler un drone. La commande des rotors est réalisée par le biais d’une commande u qui est un vecteur de dimension 4. En écrivant le bilan des forces et le principe fondamental de la dynamique, on peut écrire le modèle linéarisé autour en mode ‘vol’ régit le mouvement du drone : Où est la constance de gravité, est la masse, sont les moments d’inerties par rapport à l’axe , et les sont les composantes de la commande d’où est un mapping inversible, dont un exemple peut être trouvé dans l’article de Wang, S., Polyakov, A., & Zheng, G.. “ Quadrotor Control Design under Time and State Constraints: Implicit Lyapunov Function Approach ” in 2019 18th European Control Conference (pp. 650-655). IEEE. En posant les variables On peut reformuler les équations Math 1 et Math 2 sous la forme Où représente un vecteur d’état dans le système de coordonnées de la figure 1, est le vecteur de commande, et représente les coordonnées réelles que l’on cherche à contrôler par la commande , parmi les 4 cas suivants : De manière classique, les matrices et sont connues pour un système à commander donné, et la commande est contrôlée par une commande proportionnelle intégrale dérivée linéaire selon la formule suivante : Où e représente l’erreur, c’est-à-dire la différence entre la valeur réelle de et la valeur désirée pour , est le coefficient proportionnel de la commande, est le coefficient dérivatif de la commande, et est le coefficient intégral de la commande. C’est ce type de commande que l’invention vient améliorer, en introduisant la notion de commande proportionnelle intégrale dérivée homogène. Pour cela, elle vient utiliser les paramètres déjà connus que sont les matrices et du modèle linéarisé au tour du point opérationnel du système à commander, ainsi que les coefficients , et , . Partant de cet existant, la Demanderesse a posé les nouvelles variables suivantes : À partir de ces nouvelles formules, la Demanderesse a cherché à utiliser les méthodes d’homogénéisation généralisée et à les adapter à ce problème. Elle a donc d’abord défini une matrice de gain de rétroaction de dimension qui est définie par la contrainte suivante : Où est la matrice pseudo-inverse de la matrice Une fois la matrice déterminée, il faut déterminer la matrice de générateur de dilatation . Cette matrice doit être une matrice de dimension qui respecte le critère anti-Hurwitz, c’est-à-dire que toutes ses valeurs propres ont une partie réelle positive, et respecte la contrainte suivante : Où est la matrice identité, et est un facteur d’homogénéité compris dans la plage [-1 ; 0]. Enfin, une fois la matrice déterminée, il faut déterminer la matrice de Lyapunov, qui va servir à définir une norme canonique homogène. La matrice doit être une matrice symétrique de dimension qui respecte les contraintes suivantes : Les travaux de la Demanderesse ont démontré que les matrices , et existent dans la quasi-totalité des systèmes mécaniques décrits plus haut. Ainsi, ces matrices sont considérées comme des paramètres intrinsèquement définis par le système à commander et ses paramètres et . Une fois ces nouveaux paramètres établis, la Demanderesse a appliqué la théorie de l’homogénéisation, ce qui a permis de définir une loi de commande homogène à partir de l’équation de la formule Math 5 sous la forme suivante : Où exp() est la fonction exponentielle, et est une norme canonique homogène définie de manière implicite par les matrices et selon les contraintes suivantes : La norme canonique homogène fait l’objet d’explications détaillées dans l’article de Polyakov et al ” Sliding mode control design using canonical homogeneous norm ” International Journal of Robust and Nonlinear Control, 2019, vol. 29, no 3, p. 682-701. L’avantage de cette reformulation est qu’elle permet de définir une commande proportionnelle intégrale dérivée dans laquelle les coefficients et ne sont plus fixes, mais peuvent varier dans le temps, ce qui permet à la commande proportionnelle intégrale dérivée homogène plus performante. Cependant, la formule Math 10 reste très complexe à résoudre dans l’absolu, en particulier la détermination de la valeur de la norme canonique homogène selon la formule Math 11. La Demanderesse a donc utilisé un algorithme numérique afin d’estimer en ligne cette norme canonique homogène. Le dispositif décrit avec les figures 2 à 5 vient réaliser cela. La représente une vue schématique d’un dispositif selon l’invention. Le dispositif 2 comprend une mémoire 4, un estimateur 6 et un calculateur 8. Le dispositif 2 reçoit des données de fonctionnement 12 d’un système à commander 10, et le calculateur 8 émet vers le système 10 une commande 14. La mémoire 4 peut être tout type de stockage de données propre à recevoir des données numériques : disque dur, disque dur à mémoire flash, mémoire flash sous toute forme, mémoire vive, disque magnétique, stockage distribué localement ou dans le cloud, etc. Les données calculées par le dispositif peuvent être stockées sur tout type de mémoire similaire à la mémoire 4, ou sur celle-ci. Ces données peuvent être effacées après que le dispositif a effectué ses tâches ou conservées. Dans l’exemple décrit ici, la mémoire 4 reçoit les paramètres décrits plus haut, à savoir le facteur d’homogénéité choisi dans la plage [-1 ; 0], la matrice de gain de rétroaction , la matrice de générateur de dilatation, la matrice de Lyapunov définissant la norme canonique homogène, le coefficient proportionnel , le coefficient dérivatif et le coefficient intégral caractéristiques du système à commander. La mémoire 4 reçoit également une borne inférieure , une borne supérieure , et un nombre de boucles . En effet, lors de ses travaux, la Demanderesse a découvert un algorithme permettant d’estimer une plage de valeurs approchant la valeur de la norme canonique. Cet algorithme sera décrit avec la figure 3. Cependant, afin de garantir sa convergence, il est nécessaire de seuiller une partie des calculs avec la borne inférieure et la borne supérieure , et de définir un nombre de boucles . L’estimateur 6 et le calculateur 8 sont des éléments accédant directement ou indirectement à la mémoire 4. Ils peuvent être réalisés sous la forme d’un code informatique approprié exécuté sur un ou plusieurs processeurs. Par processeurs, il doit être compris tout processeur adapté aux calculs décrits plus bas. Un tel processeur peut être réalisé de toute manière connue, sous la forme d’un microprocesseur pour ordinateur personnel, d’une puce dédiée de type FPGA ou SoC, d’une ressource de calcul sur une grille ou dans le cloud, d’un microcontrôleur, ou de toute autre forme propre à fournir la puissance de calcul nécessaire à la réalisation décrite plus bas. Un ou plusieurs de ces éléments peuvent également être réalisés sous la forme de circuits électroniques spécialisés tel un ASIC. Une combinaison de processeur et de circuits électroniques peut également être envisagée. Bien que l’estimateur 6 et le calculateur 8 soient décrits séparément du système 10 sur la , ils sont prévus pour être intégrés à ce dernier, soit par modification du contrôleur du système 10, soit par adjonction à celui-ci. Dit autrement, le dispositif 2, bien que représenté et décrit séparément, a pour objectif d’être intégré intimement au sein du système 10 et remplacer sa commande proportionnelle intégrale dérivée linéaire. Il restera néanmoins possible de le réaliser sous la forme d’un ajout qui vient se greffer sur un système 10 et dériver la commande de celui-ci. La figure 3 représente une boucle de fonctionnement du dispositif 2. Comme expliqué plus haut, le dispositif 2 est numérique et utilise le fait que les systèmes 10 pour lesquels il est conçu sont également numériques. Cela signifie qu’il fonctionne par pas de temps discrets. Aussi, au lieu de parler d’une variable de temps , on utilisera par la suite un indice i qui désigne un nombre de pas de temps, et donc un instant t équivalent au produit de l’indice par la durée du pas de temps du dispositif 2. La figure 3 est donc présentée sous la forme d’une boucle de mise à jour qui reçoit en entrée dans une opération 300 des données 12 de vecteur d’erreur et qui émet en sortie dans une opération 399 des données 14 de commande au système 10. Avantageusement, tous les éléments calculés dans les diverses boucles seront stockés dans la mémoire 4. En variante, ces éléments pourraient ne pas être stockés, et, lorsqu’une fonction fait référence à une valeur passée, celle-ci pourrait être recalculée. Dans une opération 310, l’estimateur 6 exécute une fonction Est() afin de déterminer une plage de valeur qui approche la valeur de la norme canonique homogène de la formule Math 11. La représente un mode de réalisation en exemple de la fonction Est(). La fonction Est() repose sur le test d’une valeur afin de déterminer directement ou de manière dichotomique les bornes de la plage qui approche la valeur de la norme canonique homogène. Pour le premier pas de temps, cette plage est fixée par la borne inférieure et la borne supérieure , c’est-à-dire que nc[0] vaut [a ; b]. Ensuite, pour chaque pas de temps, cette fonction commence dans une opération 400 par initialiser la variable de valeur de borne inférieure et la variable de valeur de borne supérieure avec les valeurs des bornes de la plage déterminée au pas précédent nc[i-1]. Ensuite, deux tests sont réalisés afin de déterminer si un cas de convergence directe s’offre, ou si une boucle par dichotomie doit être exécutée. Le premier test est effectué dans une opération 410 avec l’exécution d’une fonction test() avec la variable de valeur de borne supérieure comme argument. La fonction test est comme suit : Si la valeur de test(B) est supérieure à 1, alors la plage nc[i] est déterminée dans une opération 420 comme étant comprise entre la variable de borne supérieure et le mininum entre le double de la variable de borne supérieure et la borne supérieure . Ensuite, la fonction se termine dans une opération 499. Si la valeur de test(B) est inférieure à 1, alors le deuxième test est réalisé dans une opération 430. Ici, c’est la variable de valeur de borne inférieure est qui donnée en argument à la fonction test(). Si la valeur de test(A) est inférieure à 1, alors la plage nc[i] est déterminée dans une opération 440 comme étant comprise entre le maximum entre la moitié de la variable de borne inférieure et la borne inférieure d’une part et la variable de borne inférieure d’autre part. Ensuite, la fonction se termine dans l’opération 499. Si la valeur de test(A) est supérieure à 1, alors la plage nc[i] est calculée par dichotomie dans une boucle qui commence par l’initialisation d’un indice de boucle à 0. Ensuite, une condition de fin de boucle est testée dans une opération 455 en comparant l’indice au nombre de boucles . Si ce dernier n’est pas atteint, alors la boucle commence dans une opération 460 par le calcul d’une variable de dichotomie qui est mise à la moitié de la somme de la variable de valeur de borne inférieure et de la variable de valeur de borne supérieure . La variable de dichotomie est alors donnée en argument à la fonction test() dans une opération 465. Si la valeur de test(V) est inférieure à 1, alors la variable de valeur de borne supérieure est mise à jour avec la variable de dichotomie dans une opération 470. Si la valeur de test(V) est supérieure à 1, alors la variable de valeur de borne inférieure est mise à jour avec la variable de dichotomie dans une opération 475. Enfin, l’indice est incrémenté dans une opération 480 et la boucle reprend avec le test de l’opération 455. Une fois la boucle terminée, la plage nc[i] est définie dans une opération 490 comme comprise entre la variable de valeur de borne inférieure et la variable de valeur de borne supérieure et la fonction Est() se termine dans l’opération 499. Il apparaît que la valeur du nombre de boucles est un facteur important et constitue un compromis à choisir pour le dispositif 2. En effet, il arrivera régulièrement que les tests des opérations 410 et 430 soient négatifs, auquel cas la boucle est exécutée, ce qui est plus coûteux en temps de calcul et en énergie consommée. Aussi, il conviendra de choisir la valeur de N en fonction du compromis précision recherchée / temps de calcul et énergie consommée. La Demanderesse a découvert qu’il est possible d’utiliser n’importe quelle valeur de la plage nc[i] pour approcher la valeur de la norme canonique homogène de E[i], et qu’il est avantageux de retenir la borne supérieure de la plage nc[i]. En variante, la fonction Est() pourrait être implémentée différemment, par exemple par l’utilisation de gradient. Afin de garantir la stabilité de la commande , il est souhaitable de seuiller la valeur retenue pour la valeur de la norme canonique homogène de E[i] entre la borne inférieure et la borne supérieure . En variante, la fonction Est() peut retourner la valeur ncv[i] directement à la place de la plage nc[i]. Une fois la valeur de la norme canonique homogène bornée, l’opération 310 de la est suivie par la détermination de la valeur du terme intégrale de la formule Math 10, avec l’exécution dans une opération 320 d’une fonction Int() par le calculateur 8. La représente un exemple de mise en œuvre de la fonction Int(). Dans cette mise en œuvre, la nature numérique de l’implémentation est exploitée en remplaçant le calcul du terme intégrale de la formule Math 10 par l’ajout de l’incrément à la valeur précédente. Ainsi, la première intégrale est initialisée à 0, et pour les suivantes la fonction commence dans une opération 500 par initialiser la valeur d’intégrale I[i] du pas courant avec la valeur d’intégrale du pas précédent I[i-1]. Ensuite, la valeur de la norme canonique homogène pour le pas courant est choisie par une fonction cho() dans une opération 510. Comme décrit plus haut, dans une version préférée, c’est la borne supérieure de la plage nc[i] qui est retenue. Enfin, dans une opération 520, la valeur d’intégrale I[i] est calculée en ajoutant la contribution du terme du pas de temps courant, puis la fonction Int() se termine dans une opération 599. En variante, la fonction Int() pourrait recalculer la valeur de l’intégrale I[i] en repartant de zéro. Une fois la valeur du terme intégrale déterminée, la commande est calculée dans une opération 330 de la . Pour cela, le calculateur 8 exécute une fonction Cont(). La fonction Cont() vient réaliser le calcul de la formule suivante : Ainsi, la commande résultant peut être envoyée pour commander le système 10. Les figures 6 à 11 montrent des comparaisons entre une commande proportionnelle dérivée intégrale linéaire et la commande proportionnelle dérivée intégrale homogène du dispositif 2. Plus précisément, les figures 6 à 9 représentent une comparaison de la précision entre une consigne, une commande PID classique, et la commande PID homogène de l’invention dans les dimensions x, y, z et Ψ à chaque fois une vue rapprochée de la zone stable. Les figures 10 et 11 représentent la robustesse respectivement de la commande PID classique et de la commande PID homogène selon l’invention. Enfin, la quantifie ces améliorations en norme L2. Pour note, le coût en énergie est de seulement 1,1% en plus par rapport à la commande PID classique. Dispositif de commande numérique pour l’asservissement d’un système à commander numériquement, opérant par pas de temps discret, à partir d’un vecteur d’erreur reçu en entrée à chaque pas de temps, comprenant - une mémoire agencée pour recevoir des données de paramètres de commande comprenant un facteur d’homogénéité choisi dans la plage [-1 ; 0], une matrice de gain de rétroaction liée au système à commander, une matrice de générateur de dilatation, une matrice de Lyapunov définissant une norme canonique homogène, une borne inférieure, une borne supérieure, et un coefficient proportionnel, un coefficient dérivatif et un coefficient intégral caractéristiques du système à commander, - un estimateur agencé pour déterminer une plage de valeur de norme canonique homogène pour un pas de temps courant à partir des plages d’estimation des pas de temps précédents, du vecteur d’erreur du pas de temps courant, de la matrice de générateur de dilatation, de la matrice de Lyapunov, de la borne inférieure et de la borne supérieure, lesquelles définissent la plage d’estimation pour le premier pas de temps, - un calculateur agencé pour retourner une commande du système à commander pour le pas de temps courant à partir de la somme entre le vecteur d’erreur du pas de temps courant multiplié par un facteur calculé à partir de la matrice de gain de rétroaction, de la plage de valeur de norme canonique homogène pour un pas de temps courant, du coefficient proportionnel, du coefficient dérivatif et de la matrice de générateur de dilatation, et une valeur représentant l’intégrale entre le premier pas de temps et le pas de temps courant d’un produit associant le coefficient intégral, la matrice de générateur de dilatation, la plage de valeur de norme canonique homogène pour tous les pas de temps et le vecteur d’erreur. Dispositif selon la revendication 1, dans lequel le calculateur est agencé pour calculer le facteur calculé à partir de la matrice de gain de rétroaction, de la plage de valeur de norme canonique homogène pour un pas de temps courant, du coefficient proportionnel, du coefficient dérivatif et de la matrice de générateur de dilatation selon la formule Où est la matrice de gain de rétroaction, est le facteur d’homogénéité, est une valeur tirée dans la plage de valeur de norme canonique homogène pour le pas de temps courant, est une matrice associant le coefficient proportionnel et le coefficient dérivatif, et G est la matrice de générateur de dilatation. Dispositif selon la revendication 1 ou 2, dans lequel le calculateur est agencé pour calculer la valeur représentant l’intégrale entre le premier pas de temps et le pas de temps courant d’un produit associant le coefficient intégral, la matrice de générateur de dilatation, la plage de valeur de norme canonique homogène des pas de temps et le vecteur d’erreur selon la formule Où est le coefficient intégral, G est la matrice de générateur de dilatation, et est une valeur tirée dans la plage de valeur de norme canonique homogène pour le pas de temps . Dispositif selon la revendication 2 ou 3, dans lequel le calculateur est agencé pour tirer comme valeur dans la plage de valeur de norme canonique homogène pour un pas de temps donnée la borne supérieure de cette plage. Dispositif selon la revendication 4, dans lequel le calculateur est agencé pour utiliser la borne supérieure de la plage de valeur de norme canonique homogène pour le pas de temps courant comme valeur tirée dans la plage de valeur de norme canonique homogène pour le pas de temps courant. Dispositif selon l’une des revendications précédentes, dans lequel l’estimateur détermine la plage de valeur de norme canonique homogène pour un pas de temps courant en initialisant une valeur de plage inférieure et une valeur de plage supérieure avec les bornes de la plage de valeur de norme canonique homogène du pas de temps précédent et en appliquant : un premier test déterminant si le produit de la transposée du produit du vecteur d’erreur du pas de temps courant et de la transposée de l’exponentielle du produit de la matrice de générateur de dilatation par le négatif du logarithme de la valeur de plage supérieure, de la matrice de Lyapunov, et du produit du vecteur d’erreur du pas de temps courant et de la transposée de l’exponentielle du produit de la matrice de générateur de dilatation par le négatif du logarithme de la valeur de plage supérieure est plus grand que 1, et, le cas échéant, la définition de la plage de valeur de norme canonique homogène du pas de temps du pas de temps courant entre la valeur de plage supérieure et le minimum entre le double de la valeur de plage supérieure et la borne supérieure, un second test, appliqué si le premier test est négatif, déterminant si le produit de la transposée du produit du vecteur d’erreur du pas de temps courant et de la transposée de l’exponentielle du produit de la matrice de générateur de dilatation par le négatif du logarithme de la valeur de plage inférieure, de la matrice de Lyapunov, et du produit du vecteur d’erreur du pas de temps courant et de la transposée de l’exponentielle du produit de la matrice de générateur de dilatation par le négatif du logarithme de la valeur de plage inférieure est plus grand que 1, et, le cas échéant, la définition de la plage de valeur de norme canonique homogène du pas de temps du pas de temps courant entre le maximum entre la moitié de la valeur de plage inférieure et la borne inférieure et la valeur de plage inférieure, une boucle si le second test est négatif, qui met à jour itérativement la valeur de plage inférieure et la valeur de plage supérieure en calculant la moyenne entre la valeur de plage inférieure ou la valeur de plage supérieure, en déterminant si le produit de la transposée du produit du vecteur d’erreur du pas de temps courant et de la transposée de l’exponentielle du produit de la matrice de générateur de dilatation par le négatif du logarithme de la moyenne entre la valeur de plage inférieure ou la valeur de plage supérieure, de la matrice de Lyapunov, et du produit du vecteur d’erreur du pas de temps courant et de la transposée de l’exponentielle du produit de la matrice de générateur de dilatation par le négatif du logarithme de la moyenne entre la valeur de plage inférieure ou la valeur de plage supérieure est plus petit que 1, et en mettant à jour la valeur de plage supérieure avec la moyenne entre la valeur de plage inférieure ou la valeur de plage supérieure si c’est le cas, et la valeur de plage inférieure avec la moyenne entre la valeur de plage inférieure ou la valeur de plage supérieure dans le cas contraire. Quadrotor, caractérisé en ce qu’il comprend un dispositif selon l’une des revendications précédentes pour calculer une commande à partir d’une consigne reçue en entrée. Produit de programme d’ordinateur, caractérisé en ce qu’il est agencé pour mettre en œuvre l’estimateur et le calculateur du dispositif selon l’une des revendications 1 à 6.