Kalman et CNC

J
Jmr06
Compagnon
Bonjour.
Pourquoi le pilotage des CNC ne se fait pas via un filtre de Kalman dans la boucle d'asservissement ?

A priori, une machine peut se modéliser facilement avec un modèle linéaire. Avec un asservissement classique, l'identification est forcément approximative puisqu'on n'a pas la masse de la pièce ni les efforts de coupe. Kalman est fait pour cela, il adapte le modèle aux observations. Un PID classique sur chaque axe n'a pas l'aspect prédictif du Kalman. Bref, dans ma petite tête, il me semble que Kalman c'est la méthode d'asservissement la plus adaptée.

Or, je suis avec intérêt et passion le formidable sujet de @kioraven sur sa CNC de précision (on devrait peut-être dire, d'ultra précision ?) et @gaston48, @CNCSERV @arba et autres "moustachus" expérimentés débattent sur la meilleure méthode d'asservissement, en position, vitesse, avec feedforward etc ...
Bref, j'en conclus que l'asservissement sur ces machines se fait avec un PID, plus ou moins sophistiqué certes, mais à la base ce n’est qu'un PID.

Pourquoi pas des méthodes d'asservissement plus évoluées ? Qui prennent en compte la totalité du problème, à savoir les mesures passées via les capteurs, les erreurs constatées pour corriger le modèle, l'état présent et enfin la projection dans le future avec ce que devra faire la machine aux instants suivants. Bref, un Kalman. Je suis à coté de la plaque et disant cela ? Ou je n'ai rien compris au problème ou à ce qui est réellement fait dans ces boucles d'asservissement ?

D'ailleurs, vu l'important du sujet, il est certain que je n'ai pas compris quelque chose, mais quoi, mais où ?
 
J
Jmr06
Compagnon
Merci@gaston48 pour le lien. Je regarderais la publi à tête reposée, ce soir dans le lit. Elle a l'air pile dans le sujet.
Elle date de 2010. Cela ne me parait pas très vieux, pour un sujet ancien.
A vrai dire, je n'ai même pas pensé à rechercher sur le net ! c'est pourtant la première chose à faire ...
 
O
Otatiaro
Compagnon
Salut,

Un filtre de Kalman, comme son nom l'indique, n'est pas un asservissement mais un filtre.
Un asservissement adaptatif, comme dans beaucoup de procédés industriel, n'est pas envisageable pour une excellente raison, il n'est pas reproductible.

Une CNC qui doit faire de la précision, on fait une pièce test, on la mesure, et si besoin on fait des corrections, après on relance encore et encore. Si à chaque fois le résultat est différent parce que le modèle s'est "adapté" alors on ne peut plus rien régler (et le modèle ne prendra pas en compte la déflection de l'outil, etc. donc ne sera pas suffisant à lui tout seul).

C'est pour cela qu'on préfère dans l'immense majorité des cas un "simple PID" (qui n'est pas si simple à maitriser ...) à un modèle de la mort qui tue, qui s'adapte tout seul avec de l'IA, etc. On préfère un modèle imparfait qu'on peut corriger, qu'un modèle presque parfait qu'on ne peut pas corriger. CQFD.

Pour Kalman plus spécifiquement, ça fait 15 ans que je fais des asservissements (et des filtrages, c'est inséparable), et je n'ai jamais utilisé de filtre de Kalman en pratique (ni aucune de ses variantes). Sur le papier Kalman est le filtre optimal, dans la réalité c'est très lourd en calcul (calcul matriciel en fonction des degrés de liberté, sur un stabilisateur de vol ça peut aboutir à des matrices carrées de dimensions > 20, ingérable ...) pour des résultats plus ou moins bons. Des filtres complémentaires (pour le cas de la fusion de capteurs) avec des heuristiques bien choisies sera souvent au moins aussi performant et BEAUCOUP moins lourd en calcul.

Pour les CNC plus spécifiquement, le besoin en filtrage est assez limité, on a des capteurs qui sont très précis et surtout avec un niveau de bruit très faible, et peu de phénomènes parasites (surtout si on utilise des règles linéaires). Il y a des mécanismes qui évitent les oscillations dans certains cas, mais je pense qu'au pire un basse bas (biquad par exemple) fait parfaitement l'affaire (un slope filter pour la dérivée peut-être ?). Hors si on a pas besoin de filtrer, on ne filtre pas pour le plaisir, parce qu'un filtre oblige toujours à faire des compromis (latence avec un passe bas par exemple, comme Kalman).

Par contre typiquement ce qui fait la différence entre un mach3 et un sinumerik, c'est la capacité du contrôleur à prendre en compte dans l'asservissement non seulement la position, mais aussi la vitesse, l'accélération et le jerk (puisque c'est lui qui les calcul à un instant donné). Toutes ces données passent par un modèle (qui modélise les caractéristiques du moteur, les frottements, etc.) et alimentent l'entrée du PID, ce qui permet de corriger les erreurs avant qu'elles n'apparaissent (un PID ne doit corriger que les erreurs qui ne peuvent pas être pris en compte dans la boucle ouverte, c'est comme ça qu'il travaille le mieux et de très très loin).

Dans le papier ce qu'ils proposent (j'ai lu en diagonale en 5 min), c'est de modifier les gains du PID en fonction du niveau de bruit (relevé par le Kalman). En pratique qui voudrait d'une CNC qui ralentirait parce que des vibrations sont apparues (pour info sur beaucoup de CNC indus, il y a un capteur de vibrations intégré) ? Quand il y a un problème de vibrations ou autre, ce qu'on veut c'est être informé pour corriger, pas que la machine s'adapte ! D'autre part ils ne se basent que sur une simulation dont ils génèrent eux-mêmes l'entrée (bruitée comme ça les arrange avec un beau bruit blanc bien maitrisé), il n'y a aucune mise en pratique, et aucun parallèle avec un problème effectivement identifié sur des machines CNC.

Thomas.
 
J
Jmr06
Compagnon
Bonsoir @Otatiaro et merci pour cette réponse détaillée.
Tu indiques qu'un Kalman, c'est un filtre, pas un asservissement. Certe. Mais en rebouclant sur la consigne, on a un asservissement. C'est aussi beaucoup utilisé comme cela. Dans un asservissement il y a bien les filtres de boucle. Avec un Kalman, le filtre est prédictif et un peu plus complexe, (et même nettement plus complexe).

capacité du contrôleur à prendre en compte dans l'asservissement non seulement la position, mais aussi la vitesse, l'accélération et le jerk (puisque c'est lui qui les calcul à un instant donné). Toutes ces données passent par un modèle (qui modélise les caractéristiques du moteur, les frottements, etc.) et alimentent l'entrée du PID, ce qui permet de corriger les erreurs avant qu'elles n'apparaissent (un PID ne doit corriger que les erreurs qui ne peuvent pas être pris en compte dans la boucle ouverte, c'est comme ça qu'il travaille le mieux et de très très loin)
Bon, ce que tu dis, c'est que la partie prédictive est bien présente dans les asservissements performants. En gros, pour bien piloter, il faut un bon modèle prédictif.
Je pensais à un asservissement avec un Kalman principalement pour cela, pour l'aspect prédictif. Mais effectivement, il y a d'autre manière de faire du pilotage prédictif que la tripatouille Kalman.

Tu dis aussi que le niveau de bruit des capteurs est faible sur une CNC. C'est vrai je pense. Il y a aussi le bruit de processus qui est pris en compte dans un Kalman : je n'ai aucune idée de son importance dans une CNC. Mais globalement, je pense que tu as raison. Le calcul du "gain optimal" de Kalman est de peu d'intérêt sur une CNC parceque les données de mesure sont peu bruitées. Donc, ce qui fait la force du Kalman n'est pas vraiment utile sur une machine outils.
J'imagine que c'est là, la raison pour laquelle on ne parle pas de Kalman en CNC. A creuser.
 
J
Jmr06
Compagnon
il y a aussi la régulation RST.
Bonsoir.
Je connais mal ce type de commande. Les dernières régulations que j'ai du étudier, c'étaient des cas à plusieurs variables de consignes et dans cette situation le formalisme RST m'a rebuté.
Je vais me rafraîchir la mémoire sur cette régulation.
A ta connaissance, c'est utilisé pour des commandes de CNC ?
 
J
Jmr06
Compagnon
Bon, j'ai lu le papier indiqué par @gaston48 .
Ce n'est pas du tout comme ça que je voyais l'asservissement avec un Kalman.
Ils considèrent un asservissement PID et ils rajoutent juste un filtre sur les mesures, puis ils mettent plein de bruit sur les mesures et il montrent que c'est mieux avec que sans filtre.
Ce n'est que de la simu, pas de mesure sur un système.
Bref, pas grand chose à conclure.
 
V
vres
Compagnon
A ta connaissance, c'est utilisé pour des commandes de CNC ?

Peut-être mais pas a ma connaissance, le PID + FF est quand même assez universel et simple à régler.

Je connais mal ce type de commande. Les dernières régulations que j'ai du étudier, c'étaient des cas à plusieurs variables de consignes et dans cette situation le formalisme RST m'a rebuté.
J'ai lu quelques ligne et j'ai vite compris que ce n'était pas de mon niveau :lol:
 
O
Otatiaro
Compagnon
Je viens de regarder un peu le RST ... idem ça parait bien sur le papier, mais sur tous les asservissements que j'ai fait on n'aurait pas pu s'en servir parce que dans la pratique, va dissocier les différentes sources de bruits et de perturbations.
Un bon PID avec un modèle au plus proche et des feed forward, ce n'est pas pour rien si c'est toujours ce qui est utilisé quasiment partout ... comme le dit @CNCSERV c'est connu, facile à appréhender, à régler, et ça marche quasiment dans tous les cas (tous si le modèle est bon, presque tous même avec un modèle pourri).

Thomas.
 
G
gaston48
Compagnon
un autre papier ici, concernant la correction de l'erreur à l'inversion dû au stick slip



( https://www.usinages.com/threads/projet-micro-cnc-de-precision.114107/page-8#post-1747305 )
 
Dernière édition:
O
Otatiaro
Compagnon
Là je dis oui ... c'est du PID classique, mais c'est une amélioration du modèle basé sur l'expérience et mis en pratique.
Que du bon, je garde ça dans un coin (un contrôleur CNC fait partie de mes projets ... pour quand je serais à la retraite probablement ...).

Thomas.
 

Sujets similaires

S
Réponses
10
Affichages
431
sweex59
S
Haut