Ceci n’est pas un problème d’asservissement.

6 mars 2023

Sur la vidéo suivante, le robot ne se comporte pas comme demandé. Nous verrons pourquoi nous considérons que ceci n’est pas un problème d’asservissement.


Avance et tourne ! (480p - 5 Mo | 720p - 10 Mo).

Ce que l’on voit sur la vidéo, c’est que la rotation du robot sur lui-même n’est pas fluide. Elle devrait progresser en même temps que le mouvement.
Pour comprendre ce qui se passe, notre premier réflexe est de comparer la rotation du robot avec sa consigne de rotation.


Orientation du robot et sa consigne

En zoomant sur la courbe, ça ressemble vraiment à un asservissement mal réglé (à un ou deux détails près).


Détail de l’orientation

Dans la première partie, l’orientation suit bien sa consigne puis elle décroche et dépasse sa consigne lorsqu’elle est proche de sa valeur finale. C’est assez semblable au comportement d’un correcteur intégrale mal réglé.

Notre premier réflexe a été d’ouvrir le code de notre asservissement en rotation pour aller modifier le gain de notre correcteur intégral sur notre orientation. Et là, nous réalisons que nous n’avons jamais mis de gain intégral sur notre correcteur en orientation. Le seul gain intégral que nous ayons est sur l’asservissement des moteurs. Nous observons alors le comportement des moteurs


Vitesse moteur A et sa consigne

Vitesse moteur B et sa consigne

Vitesse moteur C et sa consigne

Sur le dernier graphique, celui du moteur C, le moteur n’atteint pas sa consigne à plusieurs reprises dans le cycle. Plus en détail, il semble décrocher quand la consigne dépasse les 500 mm/s alors que la consigne va grimper jusqu’à 1 500 mm/s (probablement sous l’influence du terme intégral).

Ceci arrive lorsque le robot atteint 60° d’orientation. À ce moment-là, tandis que toutes les roues assurent la rotation du robot, la roue C commence à être la seule à faire avancer le robot (selon le vecteur vert sur le schéma) alors que les deux autres roues, dans leur rôle de faire tourner le robot, participent à diminuer sa vitesse.

Projetez les vitesses sur l’axe Y, vous verrez !


Robot ayant tourné de 60°

Nous demandons au robot une consigne qu’il ne peut pas atteindre, car ses moteurs ne sont pas assez puissants.

Si cette théorie est bonne, alors le robot devrait pouvoir réaliser la même trajectoire, mais moins vite.

Ce qui se voit sur la vidéo et les graphiques ci-dessous, où la vitesse maximale a été diminuée de 1 000 mm/s à 300 mm/s.


Avance et tourne ! (3 Mo).

Tant pour l’orientation qui suit sa consigne :


Orientation du robot et sa consigne (lent)

Que pour les moteurs :

Ceci n’est donc pas un problème d’asservissement.

C’est un problème de consigne ! La consigne doit être atteignable. C’est une notion qui est importante, car nous aurions pu perdre beaucoup de temps à corriger nos gains sans obtenir de résultats. De là à considérer que si la consigne (ou l’erreur) sort de certaines valeurs il faut couper l’asservissement et sortir en erreur, il n’y a qu’un pas. Ce n’est pas notre priorité pour l’instant, car il faut ensuite gérer le cas où l’asservissement se "bloque", mais c’est une piste pour améliorer la fiabilité du robot.

Bien sûr, le doute peut persister, est-ce qu’un asservissement un peu plus violent nous permettrait de réaliser le même mouvement plus vite ? Probablement, mais nous pensons que l’effet serait plutôt marginal.

Note du 8/3/2023 : Si l’article s’attarde sur le problème de vitesse des moteurs, c’est parce que la vitesse est la donnée la plus facilement observable. En réalité, le problème se situe au niveau du couple moteur disponible à une certaine vitesse, donc à un problème de puissance des moteurs !

Commentaires

Il n'y a pas de commentaires

Ajouter un commentaire

Pseudo :
Mail :

Texte :

Copyright "POIVRON" 2011-2023, tous droits réservés
Administration du site