Aller à l’article

Fonctionnement de la commande de mouvement

Vérifié 2026-11-01

Une commande de destination ne définit pas directement une sortie moteur fixe. En mode Extension, l’hôte fournit des cibles et des limites ; chaque servo planifie une trajectoire, mesure le mouvement et calcule le résultat. Cette page explique ces relations. Utilisez le guide de réglage pour la séquence pratique.

Comment fonctionne le mode extension

Cibles hôtes, planification des mouvements des servos et retour de position

L’hôte est l’ordinateur ou le contrôleur connecté aux servos. Il envoie une cible : une destination et une limite de vitesse. Les paramètres d’accélération et de compensation sont configurés avant d’activer la puissance du moteur. Chaque servo alors :

  1. Planifie un mouvement fluide vers la destination.
  2. Mesure sa position et estime sa vitesse.
  3. Ajuste la puissance du moteur pour suivre le mouvement prévu.
  4. Contient la destination à la fin du mouvement.

La position et la vitesse prévues à tout instant sont appelées la référence . Le contrôleur les compare au mouvement mesuré, de sorte qu’une position de référence et une position réelle peuvent différer.

Quelques termes utilisés tout au long de ce document :

Durée Signification
Pas du codeur Une unité de mesure de position ; nominalement, 4096 compte par tour
Commande de sortie du moteur La commande de sortie moteur signée : son signe définit la direction et sa taille définit la force de sortie
Gain de commande Un paramètre qui détermine la force avec laquelle le contrôleur répond
Anticipation Puissance moteur supplémentaire calculée à partir de la demande attendue, plutôt que d’attendre une erreur de position ou de vitesse
Retour d’information Mesures et état renvoyés par le servo
Registre Un réglage ou une lecture identifié par un numéro
Session Une période de contrôle de prolongation, identifiée par un numéro fourni par l’hébergeur

L’effort est exprimé en unités PWM, les unités utilisées pour contrôler la puissance électrique du moteur. L’extension permet une limite de sortie jusqu’à 1000 dans les deux sens. Ces valeurs ne sont pas des mesures directes du couple ou du courant.

Mouvement en courbe en S

Illustration conceptuelle du mouvement de la courbe en S

Regarder sur YouTube · MP4

Rend l’accélération et le freinage plus progressifs. La courbe illustre l’accélération dans le temps. Illustration conceptuelle, données matérielles non mesurées.

Une courbe en S fait augmenter et diminuer progressivement l’accélération. Au lieu d’appliquer soudainement une accélération ou un freinage complet, le servo entre et sort facilement de chaque partie du mouvement. Cela peut réduire les secousses mécaniques et les vibrations.

Un mouvement complet de repos en repos comporte ces étapes :

Étape Que se passe-t-il
1 L’accélération augmente progressivement
2 Le servo accélère à un rythme constant
3 L’accélération diminue progressivement jusqu’à zéro
4 Le servo se déplace à une vitesse constante
5 Le freinage augmente progressivement
6 Le servo freine à un rythme constant
7 Le freinage diminue progressivement à mesure que le servo s’arrête

Les mouvements courts sautent des étapes lorsqu’il n’y a pas assez de distance pour atteindre la vitesse ou l’accélération demandée. La même limite d’accélération s’applique lors de l’accélération et du ralentissement.

Le paramètre ramp_time_ms contrôle le temps nécessaire à l’accélération pour passer de zéro à sa limite. Une rampe plus longue donne un changement plus doux, mais nécessite généralement plus de temps et de distance pour accélérer ou s’arrêter.

Jerk désigne la vitesse à laquelle l’accélération change. Ce planificateur limite les à-coups, donc l’accélération change en douceur. Le Jerk lui-même peut encore changer brusquement entre les étapes. Sa grandeur approximative est :

jerk = 1000 × acceleration / ramp_time_ms    [counts/s³]

Changer de destination pendant le déplacement

Une nouvelle cible continue le mouvement actuellement prévu, en préservant sa position, sa vitesse et son accélération. Renvoyer la même destination ne relance pas le déplacement. Conservez la même limite de vitesse demandée lors de vos déplacements ; il peut changer pour le prochain coup une fois que le mouvement prévu s’est arrêté. Les temps d’accélération et de rampe appartiennent à la configuration et nécessitent une mise hors tension du moteur et une session désarmée pour changer.

Une destination en dehors des limites de position héritées enregistrées est ajustée à la limite la plus proche . La vitesse demandée est également plafonnée à sa limite configurée. Le servo utilise l’accélération configurée pour chaque mouvement. La vitesse nulle ou l’accélération configurée n’est pas valide.

L’ensemble du mouvement planifié doit rester à l’intérieur des limites de position. Une nouvelle cible peut donc être rejetée si le servo s’approche déjà trop rapidement d’une limite pour s’arrêter à l’intérieur de celle-ci, même lorsque la destination elle-même est autorisée.

À l’arrivée, le servo maintient automatiquement la destination avec le moteur sous tension. La position mesurée peut encore comporter des erreurs dues au frottement, à la charge, aux limites de sortie ou au réglage. Le maintien continue de corriger l’erreur de position ; il ne gèle pas la puissance du moteur à une valeur fixe.

Chaque servo planifie son propre mouvement. Envoyer plusieurs cibles ensemble ne garantit pas que tous les servos arriveront en même temps.

Limites de position partagée

Le contrôle existant et le contrôle d’extension utilisent les mêmes registres de limite de position : 9 – 10 contiennent le minimum et 11 – 12 le maximum. Chacune est une valeur de bit 16 non signée dans le nombre d’encodeurs corrigés, y compris la correction de direction et de position configurée du servo. Il n’existe pas de paramètres distincts de limite de position d’extension.

L’étalonnage attribue des comptes d’encodeur à des positions physiques. L’outil d’étalonnage fait lire la pose de référence capturée 2048 , puis mesure les limites de déplacement. Ce décompte ne correspond pas automatiquement à un angle d’articulation de zéro degré et le point médian du déplacement mesuré ne remplace pas la référence capturée. Les modèles gravitationnels et les visualisations nécessitent une cartographie correspondante du nombre à l’angle.

Le firmware lit ces registres au démarrage du contrôle. Lorsque les limites sont activées, le minimum doit être inférieur au maximum, le maximum doit être au maximum 32767 et la position mesurée doit être à l’intérieur de la plage. Sinon, le démarrage échoue sans déplacer le moteur. Le planificateur maintient le mouvement complet, y compris le freinage, dans la plage qu’il lit.

Des valeurs minimales et maximales égales désactivent les limites de déplacement , correspondant au comportement existant. Les commandes Extension restent toujours dans leur plage de positions prise en charge de − 32767 à 32767.

Une écriture acceptée dans l’une ou l’autre limite met fin à une session d’extension active et coupe l’alimentation du moteur, y compris les écritures appliquées uniquement dans la RAM. Armez une nouvelle session pour utiliser les valeurs modifiées. La persistance normale des paramètres hérités s’applique toujours.

Contrôleur PID

Illustration conceptuelle du contrôle pid

Regarder sur YouTube · MP4

Ajuste la façon dont le servo corrige l’erreur de position. La courbe grise illustre l’oscillation ; la courbe blanche illustre une réponse plus amortie. La ligne pointillée est la cible. Illustration conceptuelle, données matérielles non mesurées.

Le contrôleur PID ajuste la puissance du moteur pour suivre le mouvement planifié. Ses trois réglages ont des missions différentes :

Paramètre Ce que ça fait Principal compromis
P — correction de position Tire le moteur vers la position prévue ; des erreurs plus importantes produisent plus de corrections Un P plus élevé peut réduire les erreurs mais peut également provoquer une oscillation
I — correction accumulée Crée une correction supplémentaire lorsqu’une erreur persiste Peut réduire une erreur durable, mais peut augmenter le temps de dépassement ou de stabilisation
D — correction de vitesse Répond à la différence entre la vitesse planifiée et mesurée ; résiste au mouvement tout en tenant Peut améliorer l’amortissement, mais une réponse excessive aux lectures de vitesse bruyantes peut rendre la sortie inégale

Le calcul est :

position error = planned position − measured position
speed error = planned speed − filtered measured speed

motor output = Kp × position error
             + Kd × speed error
             + accumulated I correction
             + gravity compensation
             + velocity feedforward

Le résultat est limité à la puissance maximale configurée. La protection du moteur peut la réduire davantage. Les commentaires signalent à la fois la sortie demandée et appliquée afin que l’hôte puisse voir quand le moteur est limité.

La vitesse mesurée est lissée à l’aide de lectures de position récentes et d’un filtre réglable. Un paramètre velocity_filter_q8 plus grand répond plus rapidement aux changements mais supprime moins de bruit de mesure.

Prévenir une correction accumulée excessive

La contribution I a sa propre limite. Le contrôleur l’empêche également de continuer à construire dans une direction où la puissance du moteur est déjà limitée ; c’est ce qu’on appelle communément anti-windup . Elle peut encore diminuer pour aider le moteur à récupérer de cette limite. La définition de Ki sur zéro désactive et efface la correction I.

Lorsque le servo est resté presque stationnaire pendant au moins 50 ms et que l’erreur de position est inférieure à un compte d’encodeur, j’arrête d’accumuler. P, D et les deux formes de rétroaction restent actifs. La désactivation de la sortie du moteur efface la correction I.

Anticipation de vitesse

Illustration conceptuelle de la rétroaction de vitesse

Regarder sur YouTube · MP4

Ajoute la puissance du moteur en fonction de la vitesse prévue, calculée à l’intérieur du servo. Les deux courbes progressent de gauche à droite au fil du temps. Illustration conceptuelle, données matérielles non mesurées.

L’anticipation de vitesse fournit une partie des résultats attendus pour le mouvement avant qu’une erreur de suivi ne se développe. Il est calculé à l’intérieur du servo à partir de la vitesse prévue :

velocity feedforward = velocity gain × planned speed

Il y a un gain pour chaque direction et une limite sur la sortie résultante. Les deux gains sont non négatifs ; la direction du mouvement détermine le signe de sortie. Sa limite de puissance ne doit pas être supérieure à la limite de puissance du moteur principal.

Étant donné que le servo connaît sa propre vitesse planifiée, la compensation suit automatiquement l’accélération et le freinage et devient nulle lorsque le mouvement planifié s’arrête. L’hébergeur fournit uniquement ses paramètres ; il n’a pas besoin d’envoyer des valeurs continues de vitesse-feedforward.

Configurez cette fonctionnalité avec les autres paramètres dans 0xA0 , lorsque l’alimentation du moteur est coupée et que la session est désarmée. Réglez les deux gains et sa limite de sortie à zéro pour le désactiver.

Compensation de gravité

Illustration conceptuelle de la compensation gravitationnelle

Regarder sur YouTube · MP4

L’hôte calcule la contribution et le servo l’applique. La flèche vers le bas représente le poids ; la flèche vers le haut représente le support. Illustration conceptuelle, données matérielles non mesurées.

La compensation gravitationnelle fournit la puissance nécessaire pour supporter le poids d’un bras et sa charge. C’est utile même lorsque le moteur reste immobile, où la vitesse d’anticipation est nulle.

L’hôte calcule la compensation de gravité et envoie une valeur de sortie signée à chaque servo. Le calcul peut utiliser les angles des articulations, les dimensions des bras, le poids des maillons et la charge utile. L’hôte doit convertir la charge estimée en unités de sortie du servo. Le firmware ne contient pas de modèle du bras.

La direction compte : la sortie d’extension positive suit l’augmentation du nombre d’encodeurs. La convention d’angle d’articulation d’un bras peut s’exécuter dans la direction opposée, la conversion de l’hôte doit donc en tenir compte.

Chaque mise à jour gravitationnelle contient la valeur de sortie souhaitée. La vitesse de montée du (la rapidité avec laquelle la compensation peut changer, en unités de sortie par seconde) fait partie de la configuration principale et reste fixe tout au long de la session.

Le servo modifie progressivement sa compensation vers la valeur demandée et l’ajoute à la sortie du contrôleur. Toutes les contributions restent soumises à la limite de puissance configurée et à la protection du moteur.

Si les mises à jour de gravité cessent d’arriver, le servo continue vers la dernière compensation demandée à sa vitesse de balayage configurée, puis conserve cette valeur. Il n’y a pas de délai d’expiration. L’hôte doit mettre à jour la compensation lorsque la pose du bras ou la charge change. Le réglage du registre d’activation du couple 40 sur zéro efface la compensation et désactive la sortie du moteur.

Appliquer l’explication au réglage

Si un mouvement court n’atteint jamais la vitesse demandée, augmenter la limite de vitesse ne le rendra peut-être pas plus rapide. Une saturation de sortie prolongée nécessite de vérifier la charge, la trajectoire et l’effort autorisé, et pas seulement des gains plus élevés. Si l’encodeur suit sa référence mais que l’outil manque un point physique, vérifier l’étalonnage, la géométrie et la mécanique.

Distinguer le mouvement planifié et mesuré et la précision et la répétabilité de positionnement . Les quatre diagrammes de contrôle et animations ci-dessus sont des tracés d’asservissement conceptuels plutôt que mesurés.


Accueil de la documentation · Révision source : a995f77 . Extension 9.0 .