Chapitre 07
Calibration robotique
Objectifs du chapitre
- Distinguer répétabilité et exactitude absolue, et comprendre pourquoi un robot précise n'est pas forcément exact.
- Comprendre pourquoi les paramètres nominaux (table DH du constructeur) diffèrent du robot réel.
- Classer la calibration en trois niveaux : articulaire, cinématique, non géométrique.
- Poser le modèle d'erreur δp = Jid · δφ et l'identification par moindres carrés / Levenberg-Marquardt.
- Comparer les méthodes de mesure (open-loop, closed-loop, screw axis, vision) — coût, précision, faisabilité.
- Maîtriser la procédure de bout en bout et le partage des rôles PC / automate : identification hors ligne, FK corrigée en ligne.
1. Répétabilité n'est pas exactitude
Un robot industriel est nativement très répétable : envoyez-le cent fois à la même consigne articulaire, il revient à la même pose physique à ≈ 0,02–0,1 mm près. C'est ce que garantit sa mécanique de qualité et ses codeurs. Mais lui demander d'atteindre une pose cartésienne calculée sur le papier — via la cinématique inverse à partir de la table DH du constructeur — révèle une tout autre réalité : l'exactitude absolue est souvent médiocre, de l'ordre de ≈ 0,5–2 mm, parfois pire.
| Notion | Définition | Ordre de grandeur typique | Améliorée par |
|---|---|---|---|
| Répétabilité | dispersion des poses atteintes pour une même consigne, répétée | 0,02 – 0,1 mm | la mécanique (native, rien à faire) |
| Exactitude absolue | écart entre la pose commandée (calculée) et la pose réelle | 0,5 – 2 mm | la calibration |
La cause est simple : le modèle géométrique embarqué utilise les paramètres nominaux (les cotes du plan), alors que le robot posé devant vous a des paramètres réels légèrement différents. Les sources d'écart s'accumulent : tolérances de fabrication (un segment long de 400,00 mm au plan mesure 400,12 mm), assemblage (axes pas exactement parallèles ou perpendiculaires), usure, flexion sous la gravité, et dilatation thermique. Chaque écart, propagé le long de la chaîne cinématique, se traduit à l'effecteur par une erreur de pose amplifiée par les bras de levier.
La calibration consiste à identifier les paramètres réels du robot à partir de mesures, puis à corriger le modèle. On rehausse ainsi l'exactitude absolue jusqu'au niveau de la répétabilité (typiquement < 0,2 mm après calibration cinématique). C'est indispensable dès qu'on veut :
- de la programmation hors-ligne (offline programming) : générer les trajectoires depuis un modèle CAO et les jouer sans retouche manuelle ;
- l'interchangeabilité : remplacer un robot par un autre du même modèle sans reprogrammer les points ;
- des tâches exigeantes en position absolue : perçage, mesure, collage, assemblage guidé CAO.
Ne confondez jamais les deux. Une fiche technique qui annonce « répétabilité ±0,03 mm » ne dit rien de l'exactitude absolue, qui peut être 30 fois pire. Un robot « précis » au sens répétable peut viser systématiquement 1 mm à côté de la cible calculée. La calibration ne touche pas la répétabilité (déjà excellente) : elle attaque uniquement l'exactitude.
2. Trois niveaux de calibration
La littérature classe la calibration en trois niveaux emboîtés, du plus simple au plus complet. Chaque niveau supérieur englobe et raffine le précédent.
| Niveau | Nom | Ce qu'on identifie | Nb. de paramètres (bras 6 axes) | Fréquence / effort |
|---|---|---|---|---|
| 1 | Calibration articulaire (« mastering ») |
les offsets de zéro des codeurs : un Δθ par axe | 6 (un par axe) | très fréquent, simple, souvent guidé par le constructeur |
| 2 | Calibration cinématique (géométrique) |
tout le modèle géométrique réel : Δa, Δα, Δd, Δθ de chaque liaison | ≈ 24–30 (≈ 4 par liaison) | occasionnel, cœur de ce chapitre, métrologie requise |
| 3 | Calibration non géométrique | raideurs articulaires, jeu (backlash) des réducteurs, flexibilité des segments, effets thermiques, effet de la charge | variable, modèle enrichi (souvent +10 à +40) | rare, haut de gamme, modèle complexe |
Le niveau 1 est de loin le plus courant : après un choc, un changement de moteur ou une perte de référence codeur, on « remaître » le robot en amenant chaque axe sur un repère mécanique et en ré-inscrivant l'offset de zéro. C'est indispensable mais insuffisant pour l'exactitude absolue, car il ne corrige pas la géométrie des segments.
Le niveau 2 est le cœur du présent chapitre : il identifie l'ensemble de la table DH réelle (ou MDH / Hayati, cf. chapitre 4). Bien mené, il ramène l'exactitude au niveau de la répétabilité. Le niveau 3 va plus loin en modélisant les déformations dépendant de la charge et de la configuration — utile pour les très hautes exigences (mesure, usinage robotisé), mais avec un modèle nettement plus lourd à identifier et à embarquer.
Un modèle vaut ce que vaut son identification. Ajouter des paramètres au modèle (niveau 3) n'améliore l'exactitude que si ces paramètres sont réellement observables dans vos mesures (section 4). Un modèle plus riche mal identifié est souvent moins bon qu'un modèle simple bien identifié.
3. Modèle d'erreur et identification
3.1 Linéarisation : le jacobien d'identification
Notons φ le vecteur de tous les paramètres géométriques (les a, α, d, θ de chaque liaison, empilés). La cinématique directe donne la pose de l'effecteur p = FK(q, φ) pour une configuration articulaire q. Le robot réel a des paramètres φ = φnom + δφ légèrement décalés du nominal. Au premier ordre, l'erreur de pose s'écrit comme une combinaison linéaire des erreurs de paramètres :
La matrice Jid est le jacobien d'identification : sa colonne k est la sensibilité de la pose au paramètre φk. À ne pas confondre avec le Jacobien géométrique du chapitre 6 (qui dérive par rapport aux variables articulaires q) : ici on dérive par rapport aux paramètres du modèle φ. En pratique, on obtient chaque colonne très commodément par différences finies sur la FK (exercice 1).
3.2 Empiler les mesures et résoudre au sens des moindres carrés
On place le robot dans N configurations q(1), …, q(N) et on mesure la pose réelle (ou au moins la position) de l'effecteur avec une métrologie externe (section 5). Pour chaque configuration on forme le résidu entre pose mesurée et pose prédite : δp(i) = pmesurée(i) − FK(q(i), φ). En empilant les N équations δp(i) ≈ Jid(q(i)) · δφ, on obtient un grand système linéaire (fortement surdéterminé : bien plus d'équations que de paramètres). On le résout au sens des moindres carrés — les fameuses équations normales :
où Jid et δp sont empilés sur toutes les mesures. Comme le modèle n'est linéaire qu'au premier ordre, on itère : on met à jour φ ← φ + δφ, on recalcule les résidus et le jacobien, et on recommence jusqu'à ce que ‖δp‖ cesse de décroître (Σ des carrés des résidus stabilisée). En pratique on préfère Levenberg-Marquardt, qui interpole entre la descente de gradient (robuste, loin de la solution) et Gauss-Newton (rapide, près de la solution) via un terme d'amortissement λ :
Levenberg-Marquardt est plus robuste : il converge même quand les équations normales sont mal conditionnées (le terme λ régularise), ce qui arrive fréquemment en calibration à cause des paramètres peu observables (section 4).
C'est un calcul lourd, pas cyclique. Inverser une matrice ≈ 30×30, sur des dizaines à des centaines de poses, en itérant Levenberg-Marquardt : cela prend des millisecondes à des secondes sur un PC. Ce n'est pas destiné à la tâche temps réel 1 kHz de l'automate. On le fait hors ligne (section 7). Ce qui tourne en ligne, c'est seulement la FK avec les paramètres déjà corrigés — quelques microsecondes.
4. Identifiabilité des paramètres
Toute la difficulté théorique de la calibration cinématique tient en un mot : identifiabilité. Certains paramètres sont redondants ou non observables — les mesures ne contiennent tout simplement pas l'information pour les distinguer. Le cas d'école est le couplage d / θ sur axes parallèles : quand deux axes consécutifs sont (presque) parallèles, la convention DH classique devient discontinue — une petite variation réelle produit un saut du paramètre d vers l'infini. C'est précisément pour cela qu'on introduit la convention de Hayati (le paramètre β, cf. chapitre 4) pour ces liaisons : elle rend le modèle continu et identifiable.
Un bon modèle d'identification doit être :
- complet : capable de représenter toute erreur géométrique possible ;
- minimal : pas de paramètre redondant (sinon JidTJid est singulière) ;
- continu : pas de saut du modèle pour une variation infime du robot (d'où Hayati sur les axes parallèles).
Le conditionnement de la matrice d'identification renseigne sur l'observabilité : un jacobien mal conditionné (grande valeur de cond(Jid), c.-à-d. rapport valeur singulière max / min très élevé) signale des paramètres mal observés — leur estimation sera bruitée ou instable. On choisit alors les configurations de mesure pour améliorer l'observabilité : c'est l'optimisation d'observabilité. On la quantifie par des indices O1–O5 construits sur les valeurs singulières σi de Jid (produit, minimum, minimum/maximum, etc.) et on sélectionne le jeu de poses qui les maximise. Intuitivement : des poses bien réparties dans tout l'espace de travail, sollicitant chaque axe sur une large plage, valent beaucoup mieux qu'une grappe de poses voisines.
Le sur-paramétrage fait « exploser » les paramètres. Si vous mettez dans le modèle un paramètre non identifiable (redondant, ou non observable dans vos poses), les moindres carrés vont lui affecter une valeur énorme et absurde pour absorber le bruit — souvent compensée par une valeur énorme et opposée sur un autre paramètre. Le modèle « colle » alors aux mesures d'apprentissage mais généralise mal. Symptômes : un δφ gigantesque, un conditionnement catastrophique. Remèdes : modèle minimal (Hayati sur axes parallèles), régularisation (Levenberg-Marquardt), et validation indépendante (section 6).
5. Les méthodes de mesure
Identifier δφ suppose de comparer la pose prédite à une pose réelle — donc de mesurer quelque chose sur le robot physique. Les méthodes se classent selon ce qu'elles mesurent et avec quel équipement. C'est le choix le plus structurant d'un projet de calibration : il conditionne le coût, la précision et la faisabilité sur site.
5.1 Open-loop — métrologie externe de la pose
On mesure directement la pose (ou au moins la position) de l'effecteur dans un repère externe, avec un instrument de métrologie : laser tracker (le plus répandu, très précis), bras de mesure / CMM, photogrammétrie / vision stéréo, théodolites, capteurs laser. On dispose alors de la mesure complète et on identifie tout le modèle.
- Avantages : mesure directe et précise de la pose absolue ; identifie l'ensemble des paramètres ; grande précision (laser tracker : quelques µm à quelques dizaines de µm).
- Inconvénients : équipement cher (un laser tracker coûte le prix d'un robot) ; mise en œuvre lourde (installation, repère, ligne de visée dégagée) ; généralement hors production.
5.2 Closed-loop — auto-calibration basée contraintes
Plutôt que de mesurer une pose absolue, on impose au robot des contraintes physiques connues et on exploite le fait qu'elles doivent être satisfaites : pointer la TCP sur un point fixe depuis plusieurs orientations, la contraindre sur un plan, maintenir une distance fixe (barre étalon ball-bar ou double-ball-bar télescopique), ou utiliser des capteurs redondants embarqués. Les résidus sur la contrainte (le point n'est pas exactement fixe selon le modèle) nourrissent l'identification.
- Avantages : peu ou pas de métrologie externe ; faible coût ; réalisable en atelier / sur site, voire en production ponctuelle.
- Inconvénients : moins de paramètres observables (une contrainte de point ne fixe pas l'orientation, une contrainte de plan encore moins) ; procédure parfois délicate ; précision généralement moindre que l'open-loop.
5.3 Screw axis measurement — analyse cercle-point
On bouge un seul axe à la fois. Un point de l'effecteur décrit alors un cercle dans l'espace. En ajustant (fit) ce cercle (et son plan), on identifie directement la position et la direction de l'axe articulaire correspondant — c'est-à-dire sa vis (screw axis). En répétant pour chaque axe, on reconstruit géométriquement toute la chaîne.
- Avantages : intuitif et robuste ; identifie géométriquement les axes réels ; interprétation physique claire.
- Inconvénients : nécessite de bouger axe par axe (procédure séquentielle) ; sensible au bruit quand les mouvements sont petits (le fit de cercle sur un arc court est mal conditionné).
5.4 Vision / méthodes autonomes et bas coût
Enfin, des méthodes vision (caméra embarquée observant une mire fixe, ou fixe observant une mire sur l'effecteur), la contrainte planaire, ou la self-calibration par caméra embarquée offrent un compromis bas coût et automatisable : pas d'instrument dédié coûteux, procédure programmable. La contrepartie est une précision variable, dépendante de la résolution caméra, de la calibration de la caméra elle-même et des conditions d'éclairage.
5.5 Tableau comparatif
| Méthode | Coût | Précision | Paramètres identifiables | Sur site / en production |
|---|---|---|---|---|
| Open-loop (laser tracker, CMM, photogrammétrie) | Élevé à très élevé | Excellente (µm – dizaines de µm) | Tout le modèle (pose complète) | Difficile (métrologie lourde, hors prod.) |
| Closed-loop (point fixe, plan, ball-bar) | Faible | Moyenne | Sous-ensemble (contraintes partielles) | Oui (peu de métrologie externe) |
| Screw axis / circle point | Faible à modéré | Bonne (sensible au bruit sur petits arcs) | Géométrie des axes (position + direction) | Oui, mais axe par axe |
| Vision / autonome / planaire | Faible | Variable (dépend de la caméra) | Variable selon le montage | Oui, automatisable |
6. Procédure type de bout en bout
Une campagne de calibration cinématique suit toujours la même trame ordonnée :
- Choisir le modèle. Sélectionner la paramétrisation : MDH, Hayati pour les axes parallèles, ou POE (produit d'exponentielles). Objectif : complet, minimal, continu (section 4).
- Choisir la métrologie. Selon budget et exigence : open-loop (laser tracker) pour la précision maximale, closed-loop pour un coût minimal sur site (section 5).
- Collecter N poses bien distribuées. Générer des configurations qui maximisent l'observabilité (indices O1–O5), réparties dans tout l'espace de travail. Positionner le robot, laisser stabiliser, mesurer, horodater.
- Identifier par LS / Levenberg-Marquardt. Empiler résidus et jacobien d'identification, résoudre, itérer jusqu'à convergence (section 3).
- Valider sur un jeu indépendant. Réserver un ensemble de poses non utilisées pour l'identification et y mesurer l'erreur résiduelle. C'est le seul juge honnête de la qualité : cela détecte le sur-apprentissage (exercice 3).
- Mettre à jour le modèle du contrôleur. Inscrire les paramètres corrigés dans le robot / l'automate, en mémoire persistante, pour que la FK (et l'IK) les utilisent (section 7).
Séparez toujours apprentissage et validation. Réservez p. ex. 70 % des poses à l'identification et 30 % à la validation. Une erreur résiduelle faible en apprentissage mais élevée en validation = sur-apprentissage : votre modèle a « appris le bruit ». Réduisez alors le nombre de paramètres ou améliorez la distribution des poses.
7. Mise en œuvre sur automate
Le partage des rôles entre le PC/outil d'identification et l'automate est le point de conception clé de ce chapitre.
L'identification ne va PAS dans la boucle temps réel. Levenberg-Marquardt,
l'inversion de grands systèmes, l'itération sur des dizaines de poses : c'est un calcul hors
ligne, sur PC ou dans un outil dédié — ou, à la rigueur, dans une tâche de fond
basse priorité de l'automate. Jamais dans la tâche cyclique 1 kHz. L'automate, lui,
(a) pilote la collecte (positionnement aux poses de mesure, horodatage,
acquisition des mesures) ; (b) stocke les paramètres calibrés en mémoire
rémanente / persistante (VAR RETAIN ou recette) ; (c) exécute la
FK (chapitre 5) avec ces paramètres corrigés à chaque cycle ; (d) peut appliquer
en ligne une simple correction d'offset articulaire (niveau 1).
Concrètement, on stocke les corrections dans une structure persistante, une par liaison, puis on les ajoute à la table DH nominale juste avant d'appeler la FK. La géométrie nominale reste intacte (traçabilité), la correction est isolée et rechargeable comme une recette.
// ---- Correction géométrique calibrée, par liaison ----
// Δa, Δα, Δd, Δθ sont les écarts identifiés hors ligne
// (paramètres RÉELS − paramètres NOMINAUX). Voir chapitre 4 (MDH/Hayati).
TYPE T_CALIB_LINK :
STRUCT
d_theta : LREAL; // rad — offset de zéro (niveau 1) + correction géométrique
d_d : LREAL; // m
d_a : LREAL; // m
d_alpha : LREAL; // rad
END_STRUCT
END_TYPE
// Table de correction complète d'un bras 6 axes, en mémoire persistante.
TYPE T_CALIB : ARRAY[0..5] OF T_CALIB_LINK; END_TYPE
// Déclaration côté programme : RETAIN => survit à l'arrêt/redémarrage.
// On la charge une fois (recette) après identification hors ligne.
VAR RETAIN
gCalib : T_CALIB; // corrections calibrées, chargées après identification
END_VAR
La fonction ci-dessous fabrique la table DH corrigée à partir de la table
nominale et des corrections calibrées. On l'appelle une fois (les corrections sont
constantes), et le résultat alimente FB_ForwardKinematics (chapitre 5) à chaque cycle.
// Applique la correction calibrée à la table DH nominale.
// dhNom : table du constructeur (nominale, inchangée).
// calib : corrections identifiées hors ligne (gCalib).
// dhCal : table corrigée, à passer ensuite à la FK.
FUNCTION ApplyCalibration : BOOL
VAR_IN_OUT
dhNom : ARRAY[0..5] OF T_DH; // nominale (lecture)
calib : T_CALIB; // corrections (lecture)
dhCal : ARRAY[0..5] OF T_DH; // corrigée (écriture)
END_VAR
VAR
i : INT;
END_VAR
FOR i := 0 TO 5 DO
// On recopie la liaison nominale puis on ajoute la correction.
dhCal[i].isPrismatic := dhNom[i].isPrismatic;
dhCal[i].theta := dhNom[i].theta + calib[i].d_theta; // rad
dhCal[i].d := dhNom[i].d + calib[i].d_d; // m
dhCal[i].a := dhNom[i].a + calib[i].d_a; // m
dhCal[i].alpha := dhNom[i].alpha + calib[i].d_alpha; // rad
END_FOR
ApplyCalibration := TRUE;
END_FUNCTION
Le flux global tient en une phrase : hors ligne on identifie
δφ et on l'inscrit dans gCalib ; en ligne,
ApplyCalibration produit dhCal, et la FK tourne sur dhCal —
exacte, en quelques microsecondes, dans le cycle.
Persistance et unités. Oublier le RETAIN (ou son équivalent
recette) et vos corrections s'évaporent au prochain redémarrage : le robot repart en nominal,
exactitude dégradée, sans alarme. Autre piège classique : mélanger degrés et radians dans
d_theta/d_alpha — comme partout dans le cours, ces corrections
angulaires sont en radians, les corrections de longueur en mètres.
8. Les pièges de la calibration
Les cinq pièges à connaître. (1) Sur-apprentissage — trop de paramètres : le modèle colle au bruit, excellent en apprentissage, médiocre en validation. (2) Paramètres non identifiables — redondants ou non observables : leur estimation « explose » (valeurs absurdes, souvent compensées entre elles), conditionnement catastrophique. (3) Température — le robot se dilate pendant la campagne ; mesurer sur plusieurs heures avec un robot qui chauffe pollue l'identification. Laisser stabiliser thermiquement, mesurer dans des conditions constantes. (4) Diversité insuffisante des poses — une grappe de poses voisines n'excite pas tous les paramètres : mauvaise observabilité, identification bruitée. (5) Confondre répétabilité et exactitude — croire qu'un robot répétable est exact, ou valider la calibration sur la répétabilité au lieu de l'exactitude absolue.
Exercices
Exercice 1 — Une colonne du jacobien d'identification par différences finies
On veut la colonne de Jid correspondant au paramètre
a de la liaison k. Écrivez une
fonction qui, pour une configuration q donnée, calcule la
sensibilité de la position de l'effecteur à ce paramètre par
( FK(ak + δ) − FK(ak) ) / δ. On suppose
disponibles FB_ForwardKinematics (chapitre 5), qui remplit une pose
T_POSE à partir d'un T_ROBOT6.
Voir la solution
// Colonne de J_id pour le paramètre a de la liaison k : sensibilité de
// la position (x,y,z) de l'effecteur, par différence finie avant.
FUNCTION IdColumn_a : BOOL
VAR_IN_OUT
robot : T_ROBOT6; // table DH + q (lecture)
k : INT; // indice de liaison
col : T_VEC3; // résultat : d(pos)/d(a_k) (écriture)
END_VAR
VAR
fk : FB_ForwardKinematics;
p0, p1 : T_POSE;
aSave : LREAL;
delta : LREAL := 1.0E-6; // m — petit pas
robotPert : T_ROBOT6; // copie perturbée
i : INT;
END_VAR
// 1) Pose nominale.
fk(robot := robot, pose => p0);
// 2) Copie du robot, puis perturbation du seul paramètre a_k.
robotPert := robot; // copie de la structure entière
aSave := robotPert.dh[k].a;
robotPert.dh[k].a := aSave + delta;
// 3) Pose perturbée.
fk(robot := robotPert, pose => p1);
// 4) Différence finie composante par composante.
col[0] := (p1.x - p0.x) / delta;
col[1] := (p1.y - p0.y) / delta;
col[2] := (p1.z - p0.z) / delta;
IdColumn_a := TRUE;
END_FUNCTION
On répète pour Δα, Δd, Δθ de chaque liaison pour obtenir
toutes les colonnes ; la partie orientation de Jid
se traite de même sur la matrice de rotation. Le pas δ doit être
petit (linéarisation) mais pas au point de noyer la différence dans les erreurs d'arrondi
LREAL : 10−6 est un bon compromis. La
différence centrée ( FK(a+δ) − FK(a−δ) ) / (2δ) est plus
précise si le budget de calcul le permet.
Exercice 2 — Appliquer un offset calibré avant la FK
On a identifié pour la liaison 2 un écart de longueur
Δa2 = +0,15 mm et un offset de zéro
Δθ2 = −0,002 rad. Montrez comment charger ces
valeurs dans gCalib puis obtenir la table DH corrigée à passer à la FK.
Voir la solution
PROGRAM P_ChargeCalib
VAR
robot : T_ROBOT6; // contient dh nominale + q
dhCal : ARRAY[0..5] OF T_DH; // table corrigée pour la FK
fk : FB_ForwardKinematics;
pose : T_POSE;
END_VAR
// --- 1) Charger les corrections identifiées (une seule fois, ex. recette) ---
// ATTENTION unités : mètres et radians, pas de mm ni de degrés.
gCalib[2].d_a := 0.15 / 1000.0; // 0,15 mm -> 0,00015 m
gCalib[2].d_theta := -0.002; // rad
// (les autres liaisons restent à 0 si non calibrées)
// --- 2) Fabriquer la table corrigée à partir de la nominale ---
ApplyCalibration(dhNom := robot.dh, calib := gCalib, dhCal := dhCal);
// --- 3) FK sur la table CORRIGEE ---
// On substitue dhCal à la table nominale du robot avant l'appel.
robot.dh := dhCal;
fk(robot := robot, pose => pose);
// 'pose' est maintenant l'estimation EXACTE (modèle calibré).
Point clé : la conversion aux frontières (0,15 mm → 0,00015 m).
La table nominale reste stockée telle quelle ; seule la copie dhCal porte la
correction, ce qui garde la traçabilité et permet de revenir au nominal à tout moment.
Exercice 3 — Pourquoi valider sur un jeu indépendant ?
Après identification, l'erreur moyenne résiduelle sur les 50 poses d'apprentissage vaut 0,05 mm. Sur 20 poses de validation non utilisées, elle vaut 0,9 mm. Qu'en concluez-vous ? Qu'auriez-vous mesuré si vous n'aviez validé que sur l'apprentissage ?
Voir la solution
L'écart énorme entre apprentissage (0,05 mm) et validation (0,9 mm) est la signature d'un sur-apprentissage : le modèle a « appris le bruit » des 50 poses au lieu de la vraie géométrie. Typiquement, trop de paramètres (dont des non identifiables) ont pris des valeurs absurdes qui minimisent le résidu d'apprentissage sans améliorer la physique.
Si l'on n'avait regardé que l'apprentissage, on aurait cru la calibration excellente (0,05 mm) et déployé un robot en réalité exact à seulement 0,9 mm — pire, peut-être, que certaines zones non couvertes. Seule la validation indépendante mesure la capacité de généralisation, c'est-à-dire l'exactitude réelle sur des poses nouvelles. Remèdes : réduire le nombre de paramètres (modèle minimal, Hayati sur axes parallèles), régulariser (Levenberg-Marquardt), et améliorer la distribution des poses d'apprentissage (observabilité).
Exercice 4 — Répétabilité vs exactitude, chiffré
On envoie dix fois le robot à la même consigne et on mesure les positions atteintes ; elles sont toutes dans une sphère de rayon 0,03 mm, centrée en un point P situé à 1,2 mm de la cible théorique. Donnez la répétabilité et l'exactitude absolue. Laquelle la calibration améliore-t-elle ?
Voir la solution
Répétabilité ≈ 0,03 mm : c'est la dispersion des poses atteintes pour une même consigne (le rayon de la sphère). Elle est excellente et native — la mécanique.
Exactitude absolue ≈ 1,2 mm : c'est l'écart entre la position réellement atteinte (le centre P du nuage) et la cible commandée. C'est un biais systématique dû à l'écart entre paramètres nominaux et réels.
La calibration améliore l'exactitude (elle corrige le biais de 1,2 mm en ramenant P vers la cible), pas la répétabilité (les 0,03 mm de dispersion restent : ils viennent de la mécanique, pas du modèle). Après une bonne calibration cinématique, on peut espérer une exactitude du même ordre que la répétabilité, soit < 0,2 mm ici.
Récapitulatif
- La répétabilité (native, 0,02–0,1 mm) n'est pas l'exactitude absolue (0,5–2 mm) ; la calibration corrige la seconde en identifiant les paramètres réels du robot.
- Trois niveaux : 1 articulaire (offsets de zéro Δθ), 2 cinématique (tout le modèle Δa, Δα, Δd, Δθ — le cœur), 3 non géométrique (raideurs, jeu, thermique, charge).
- Modèle d'erreur linéarisé δp = Jid · δφ ; on résout δφ par moindres carrés (équations normales) ou Levenberg-Marquardt, en itérant.
- Identifiabilité : modèle complet, minimal, continu (Hayati/β sur axes parallèles) ; le conditionnement guide l'observabilité et le choix des poses (O1–O5).
- Méthodes de mesure : open-loop (précis, cher), closed-loop (bas coût, moins observable), screw axis (intuitif, axe par axe), vision (bas coût, précision variable).
- Sur automate : identification hors ligne ; le PLC pilote la collecte, stocke les corrections en
VAR RETAIN, et exécute la FK corrigée chaque cycle. - Pièges : sur-apprentissage, paramètres non identifiables, température, poses trop peu diverses, confondre répétabilité et exactitude. Toujours valider sur un jeu indépendant.