Gestion des données de test en robotique avec TofuPilot
Les robots passent par plus d'étapes de test que presque toute autre catégorie de produit. Tests de cartes, caractérisation des moteurs, calibration des capteurs, validation du firmware, intégration système, screening environnemental et simulation terrain. TofuPilot suit tout cela sous un seul numéro de série.
Le défi des tests en robotique
Un robot autonome typique possède :
- 3 à 5 PCBA, chacun avec son propre test fonctionnel
- 6 à 12 moteurs ou actionneurs, chacun nécessitant une caractérisation
- Plusieurs ensembles de capteurs (LiDAR, caméras, IMU) nécessitant une calibration
- Un firmware à valider à chaque révision
- Des tests d'intégration système
- Des tests environnementaux (thermique, vibration, indice IP)
- Des tests de simulation terrain ou HIL
Chaque étape de test génère des données. Sans système centralisé, ces données se retrouvent dans différents outils, différents formats, sur différentes machines. Quand un robot tombe en panne sur le terrain, remonter jusqu'à l'étape de test qui a manqué le problème est quasiment impossible.
Mise en place du suivi multi-étapes
Définir vos procédures de test
Créez une procédure dans TofuPilot pour chaque étape de test de votre processus de fabrication.
| Identifiant procédure | Étape | Ce qui est testé |
|---|---|---|
PCBA-MOTOR-CTRL | Test de carte | Test fonctionnel du PCBA contrôleur moteur |
MOTOR-CHAR | Sous-assemblage | Caractérisation couple/vitesse du moteur |
IMU-CAL | Calibration capteur | Calibration offset et sensibilité de l'IMU |
SYS-INTEGRATION | Système | Vérifications d'intégration du robot complet |
THERMAL-CYCLE | Environnemental | Qualification en cyclage thermique |
HIL-NAV | HIL | Validation de l'algorithme de navigation |
Lier les tests à la même unité
Chaque exécution de test référence le numéro de série du robot. TofuPilot lie automatiquement toutes les exécutions pour un numéro de série donné, créant un historique de test complet.
from tofupilot import TofuPilotClient
client = TofuPilotClient()
# Test de carte pour le contrôleur moteur
client.create_run(
procedure_id="PCBA-MOTOR-CTRL",
unit_under_test={
"serial_number": "ROBO-2025-0142",
"part_number": "MC-BOARD-R3",
},
run_passed=True,
steps=[{
"name": "H-Bridge Driver",
"step_type": "measurement",
"status": True,
"measurements": [{
"name": "gate_drive_voltage",
"value": 12.1,
"unit": "V",
"limit_low": 11.5,
"limit_high": 12.5,
}],
}, {
"name": "Current Sense",
"step_type": "measurement",
"status": True,
"measurements": [{
"name": "current_sense_gain",
"value": 50.2,
"unit": "mV/A",
"limit_low": 48.0,
"limit_high": 52.0,
}],
}],
)# Caractérisation moteur pour le même robot
client.create_run(
procedure_id="MOTOR-CHAR",
unit_under_test={
"serial_number": "ROBO-2025-0142",
"part_number": "DRIVE-ASSEMBLY-R2",
},
run_passed=True,
steps=[{
"name": "Stall Torque",
"step_type": "measurement",
"status": True,
"measurements": [{
"name": "stall_torque_nm",
"value": 2.45,
"unit": "Nm",
"limit_low": 2.2,
"limit_high": 2.8,
}],
}, {
"name": "No-Load Speed",
"step_type": "measurement",
"status": True,
"measurements": [{
"name": "no_load_rpm",
"value": 5820,
"unit": "RPM",
"limit_low": 5500,
"limit_high": 6100,
}],
}],
)Suivre les données de calibration des capteurs
La calibration des capteurs produit des tableaux de données. TofuPilot gère nativement les mesures multidimensionnelles.
import numpy as np
# Calibration IMU avec données multi-axes
client.create_run(
procedure_id="IMU-CAL",
unit_under_test={"serial_number": "ROBO-2025-0142"},
run_passed=True,
steps=[{
"name": "Accelerometer Offset",
"step_type": "measurement",
"status": True,
"measurements": [
{"name": "accel_offset_x", "value": 0.012, "unit": "g", "limit_low": -0.05, "limit_high": 0.05},
{"name": "accel_offset_y", "value": -0.008, "unit": "g", "limit_low": -0.05, "limit_high": 0.05},
{"name": "accel_offset_z", "value": 0.003, "unit": "g", "limit_low": -0.05, "limit_high": 0.05},
],
}, {
"name": "Gyro Bias",
"step_type": "measurement",
"status": True,
"measurements": [
{"name": "gyro_bias_x", "value": 0.15, "unit": "deg/s", "limit_low": -0.5, "limit_high": 0.5},
{"name": "gyro_bias_y", "value": -0.22, "unit": "deg/s", "limit_low": -0.5, "limit_high": 0.5},
{"name": "gyro_bias_z", "value": 0.08, "unit": "deg/s", "limit_low": -0.5, "limit_high": 0.5},
],
}],
)Tracer les pannes terrain jusqu'à la production
Quand un robot tombe en panne sur le terrain, recherchez par numéro de série dans TofuPilot. Vous verrez chaque test qu'il a subi :
- La carte contrôleur moteur a-t-elle passé son test fonctionnel ? Quelles étaient les mesures exactes ?
- La caractérisation moteur était-elle nominale, ou marginale ?
- Les offsets de calibration de l'IMU étaient-ils dans les spécifications ?
- Le test d'intégration système est-il passé du premier coup, ou y a-t-il eu des retests ?
Cette traçabilité révèle souvent la cause racine. Un moteur qui a passé la caractérisation à la limite de sa spécification de couple a plus de chances de défaillir sous des charges réelles.
Analytique au niveau de la flotte
Pour les entreprises de robotique déployant des flottes, les analyses de TofuPilot fonctionnent sur l'ensemble de votre production.
- Comparer les distributions de calibration entre les lots de production
- Suivre les tendances de caractérisation des moteurs dans le temps
- Identifier quelle étape de test détecte le plus de défauts
- Corréler les taux de défaillance terrain avec les marges des tests de production
Si les robots du lot 47 ont un taux de défaillance terrain plus élevé, extrayez leurs données de test de production et comparez les distributions de mesures avec le lot 46. La différence dans les données pointe vers la cause racine.