Tête robotique v1.5 — 3 DOF · dossier de fabrication

Pan-tilt-roll, architecture série · budget ≈ 387 € · ~29 h d'impression 3D · sources : DOC/14, DOC/15, DOC/16
Survoler une pièce pour l'identifier · cliquer pour ouvrir sa fiche · glisser pour tourner, molette pour zoomer
pièce sélectionnée, isolée
Ce que montre ce modèle. Des maquettes de principe à l'échelle réelle (1 unité = 1 mm, cotes de DOC/14 et DOC/16) : elles donnent l'architecture, les interfaces et l'encombrement — pas des pièces prêtes à imprimer. Les modèles CAO paramétriques restent à faire, une fois le paramètre FIT mesuré sur le gabarit P0.
Avant d'acheter et surtout avant d'imprimer. Les cotes de ce dossier sont des valeurs nominales de catalogue et les prix des ordres de grandeur 2026 (France, TTC, hors port). Toute cote d'interface doit être remesurée au pied à coulisse sur la pièce reçue avant l'impression définitive. Aucun chiffre ici ne remplace une mesure.
Dans quel ordre acheter. Tout n'est pas commandable en même temps — non pas pour une raison de budget, mais parce que certaines références dépendent d'une décision encore ouverte.

✔ Maintenant (~200 €) — groupes A, B, C, F, G, H : actionneurs, roulements, filament, énergie/sécurité, câblage, visserie. Rien n'en dépend.
◆ Après une décision — servos à bus série ou PWM (+30 €, mais HeadState devient une mesure au lieu d'une estimation) : ça change la référence des servos, du palonnier et de l'alimentation.
⏸ Après la spécification vidéo (~186 €) — groupes D et E : deux Camera Module 3 ne sont pas synchronisées matériellement. Si l'écart gauche/droite gêne en stéréo, la réponse est une caméra stéréo USB à capteurs synchronisés — et le Pi 5, justifié par ses deux connecteurs CSI, n'est plus forcément le bon choix. Commander avant, c'est parier 186 € sur un capteur non tranché.

Les cases à cocher sont enregistrées dans ce navigateur — utilisable comme liste d'achat.

A — Actionneurs ✔ commandable — après le choix bus série / PWM

Réf.DésignationQtéTotalNote
S1Servo yaw — Feetech STS3215 (bus série, 30 kg·cm, 12 V)116 €position mesurée en retour
S2Servo pitch — Feetech STS3215116 €ID à attribuer avant montage
S3Micro-servo roll — MG90S métal (2 kg·cm)15 €jamais le SG90 plastique
S4Palonnier métal 25T26 €métal obligatoire
S5Palonnier métal 21T (MG90S)13 €
Sous-total A46 €

B — Roulements et guidage

Règle 2 : chaque axe est tenu par deux points, jamais par le seul arbre du servo. Un axe en porte-à-faux est la cause n°1 du jeu ressenti dans le casque. Ces 11 € conditionnent la qualité perçue de tout le projet.
Réf.DésignationQtéTotalNote
R1Roulement 6810ZZ (Ø50 × 65 × 7) — couronne de yaw17 €reprend le porte-à-faux
R2Roulement 608ZZ (8 × 22 × 7) — contre-palier pitch11 €réf. de skateboard
R3Roulement 623ZZ (3 × 10 × 4) — contre-palier roll11 €
R4Vis M8 × 40 + écrou nylstop — axe de pitch11 €frein-filet
R5Vis M3 × 30 + écrou nylstop — axe de roll11 €
Sous-total B11 €

C — Structure imprimée 3D

Toute la structure est imprimable — aucun usinage, aucune pièce d'aluminium. Détail dans l'onglet Pièces 3D.

Réf.DésignationQtéTotalNote
C1Bobine PETG 1 kg (≈ 385 g utilisés)122 €PLA = fluage sous servos chauds
C2TPU 95A (pieds P9) — optionnel10-25 €ou 4 patins caoutchouc (2 €)
Sous-total C≈ 25 €

D — Vision ⏸ après la spec vidéo

Piège du Pi 5 : ses connecteurs caméra sont en 22 broches fines, la Camera Module 3 est livrée en 15 broches. Sans les câbles adaptateurs V2, rien ne se branche. À commander en même temps que les caméras.
Réf.DésignationQtéTotalNote
V1Raspberry Pi Camera Module 3 (IMX708)268 €version Wide utile pour le micro-roll
V2Nappe FPC 22 ↔ 15 broches, 300 mm210 €300 mm, pas plus court
Sous-total D78 €

E — Calcul et interface moteurs ⏸ partiellement : E1-E3 après la spec vidéo

Réf.DésignationQtéTotalNote
E1Raspberry Pi 5 (4 ou 8 Go)180 €2 connecteurs CSI = stéréo natif
E2Carte microSD A2 64 Go112 €
E3Refroidissement actif officiel Pi 516 €obligatoire (throttling = latence)
E4Interface bus servo TTL half-duplex110 €sert aussi à attribuer les ID
E5PCA9685 (PWM I²C) — pour le MG90S16 €évite le PWM logiciel (gigue)
Sous-total E≈ 108 €

F — Énergie et sécurité (F7)

Non négociable : les servos ne sont jamais alimentés par le 5 V du Pi. Un servo qui force fait chuter la tension et redémarre le Pi en pleine session.
Réf.DésignationQtéTotalNote
F1Alimentation 12 V / 5 A (bus série)115 €
F2UBEC 6 V / 5 A (MG90S)110 €
F3Alimentation officielle Pi 5, 27 W USB-C114 €rail séparé
F4Condensateur 1000 µF / 25 V11 €au plus près des servos
F5Porte-fusible + fusible 5 A13 €protection blocage mécanique
F6Bouton d'arrêt d'urgence coup-de-poing NC110 €coupure physique
F7Relais / MOSFET haut-côté piloté GPIO14 €coupure logicielle (watchdog)
Sous-total F57 €

G — Câblage et connectique

Réf.DésignationQtéTotalNote
G1Fil silicone 18 AWG rouge/noir2 × 2 m6 €silicone : reste souple sur un axe mobile
G2Fil silicone 24 AWG (signal)3 m3 €
G3Connecteurs XT60 (paires)23 €
G4Borniers WAGO 22154 €masses communes
G5Dupont F/F + JST-XH assortis1 lot6 €
G6Gaine tressée Ø6 + spiralée2 m5 €
G7Serre-câbles + adhésif Kapton1 lot5 €Kapton tient la chaleur
Sous-total G32 €

H — Visserie et inserts

Les inserts laiton ne sont pas une option. Une vis serrée dans un filet taraudé à même le plastique arrache son filet au 2ᵉ ou 3ᵉ démontage — or un prototype se démonte beaucoup. 8 € d'inserts évitent de réimprimer 5 h de pièces.
Réf.DésignationQtéTotalNote
H1Inserts laiton M3 à chaud (Ø4,6 × L5)248 €lot de 50
H2-H7Coffret visserie BTR inox M2/M3 (vis, écrous nylstop, rondelles)118 €M3×8/12/16, M2×6/10
H8Frein-filet moyen (bleu)16 €palonniers + axes ; jamais du fort
Sous-total H≈ 30 €

I — Outillage (achat unique)

Réf.OutilIndispensablePrix
I1Pied à coulisse numériqueoui — règle des cotes mesurées15-25 €
I2Fer à souder + panne à inserts laitonoui25-40 €
I3Jeu de clés Allen 1,5-6 mmoui8 €
I4Tournevis de précisionoui10 €
I5Multimètreoui — recette électrique20 €
I6Inclinomètre / rapporteur numériqueoui — calibration des butées15-25 €
I7Imprimante 3Dnon — impression en service possible
I8IMU 9 axes sur le plateau caméras (BNO085 / MPU6050)oui — seule mesure indépendante de la dynamique et des vibrations10-15 €

Ce qui s'imprime, ce qui ne s'imprime pas

Imprimable : toute la structure, et les 10 pièces sont modéliséeshardware/cad/ en OpenSCAD paramétrique, ./hardware/cad/render-all.sh pour régénérer les STL. ~385 g de filament, ~29 h, sur n'importe quelle FDM d'entrée de gamme (volume requis 190 × 150 × 110 mm).
Ne jamais imprimer : les roulements (précision hors de portée du FDM → jeu immédiat), les palonniers cannelés (les dents s'arrondissent en quelques dizaines de cycles), les axes (flambent et créent du jeu), les filetages porteurs (→ inserts laiton). Sur ces points, la pièce imprimée coûte moins cher à l'achat et beaucoup plus cher en jeu mécanique, c'est-à-dire en qualité perçue dans le casque.

Matériau

PETG recommandé. Les servos chauffent en maintien de position et le PLA flue — exactement le défaut qui ruinerait la stabilité de la calibration stéréo après quelques sessions. PLA acceptable pour un montage à blanc, ASA/ABS meilleur mais caisson requis, TPU uniquement pour les pieds.

Réglages communs

RéglageValeurPourquoi
Buse / couche0,4 mm / 0,2 mm (0,15 pour P5)P5 porte la géométrie stéréo
Parois4 minimumla rigidité FDM vient des parois, pas du remplissage
Remplissage40 % gyroïde (60 % pour P2 et P4)isotrope ; P2/P4 transmettent le couple
Haut / bas5 couches
Refroidissement30-50 % en PETGtrop de ventilation = pièce cassante entre couches
Orientationefforts dans le plan des couchesune pièce FDM casse d'abord entre ses couches

Les 10 pièces

Réf.PièceQtéMatièreMasseTempsSupportsInserts
P0Gabarit de test d'ajustement — à imprimer en premier1PETG36 g3 hnon2
P1Socle / base — loge S1, porte R11PETG166 g13 hminimes8
P2Plateau tournant de yaw — passage de câbles centré sur l'axe1PETG45 g3 hnon4
P3Fourche en U — servo à gauche, contre-palier à droite1PETG55 g4 houi4
P4Berceau de roll — porte S3 et R31PETG20 g2 hminimes4
P5Plateau caméras — entraxe 65 mm ± 1 mm1PETG18 g1 h 30non4
P6Bagues d'ajustement (0,5 / 1 / 1,5 / 2 mm)4PETG1 g20 minnon
P7Platine électronique (Pi, interface, alim, arrêt d'urgence)1PETG34 g3 hnon4
P8Guide-câbles (1 par axe)3PETG4 g30 minnon
P9Pieds antivibratoires4TPU4 g30 minnon
Total≈ 385 g≈ 29 h24 + 2

P0 — le gabarit, à imprimer avant tout le reste

Chaque imprimante sort les trous 0,1 à 0,4 mm trop petits. Le gabarit (une plaquette nervurée 118 × 55 × 8 mm et trois jauges séparées, 187 × 116 mm sur le plateau, ~3 h) porte les alésages des trois roulements aux écarts 0 / +0,10 / +0,20 mm, deux trous d'insert pour s'entraîner, une empreinte de palonnier, un gabarit de corps de servo et les perçages d'axe.

Critère : le bon logement est celui où le roulement entre à la main ferme, sans outil et sans jeu. On reporte l'écart dans le paramètre FIT et toute la CAO en hérite. Ne rien imprimer d'autre avant d'avoir ce chiffre — c'est 3 heures contre 26.

Paramètres à mesurer avant de modéliser

La CAO doit être paramétrée sur ces variables, jamais sur des cotes en dur. Tableau complet dans DOC/16 § 0.

ParamètreNominalUtilisé par
SERVO_L / W / H40 × 20 × 26,5 mmP1, P3
SERVO_LUG (entraxe pattes)49,5 mmP1, P3
HORN25_D / PCD~21 mm / à mesurerP2, P4
MG90_* / MG90_LUG23 × 12 × 22,5 mm / 32 mmP4
BRG_YAW_OD / ID65 / 50 mmP1, P2
BRG608_OD / BRG623_OD22 mm / 10 mmP3, P4
CAM_PCB / CAM_HOLES25 × 24 mm / à mesurerP5
INSERT_OD4,6 mmtoutes
FITdéterminé par P0toutes
Statut : les dix pièces sont modélisées en OpenSCAD paramétrique dans hardware/cad/ ; les STL se régénèrent avec render-all.sh et ne sont pas versionnés. Chaque pièce est vérifiée manifold et d'un seul tenant. Ce qui n'est pas validé : l'ajustement — aucun de ces modèles n'a encore rencontré un vrai roulement. C'est le rôle du gabarit P0.

Chaîne cinématique

   sol / bride androïde
        │
   [P1] SOCLE ─────────────── S1 servo yaw (axe vertical)
        │                     + R1 roulement de couronne
   [P2] PLATEAU TOURNANT
        │
   [P3] FOURCHE EN U ──────── S2 servo pitch (axe transversal)
        │                     + R2 contre-palier
   [P4] BERCEAU DE ROLL ───── S3 micro-servo roll (axe optique)
        │                     + R3 contre-palier arrière
   [P5] PLATEAU CAMÉRAS ───── 2 × caméra, entraxe 65 mm

Ordre yaw → pitch → roll = convention d'Euler du casque (YXZ). La chaîne série dans cet ordre donne un driver 1 angle du protocole = 1 moteur, sans matrice de mixage et avec une calibration axe par axe. Toute permutation coûte du code pour zéro gain mécanique.

Règle 1 — dimensionner par la charge réelle

Dans une chaîne série, un axe ne porte que ce qui vient après lui.

AxeCharge portéeCouple nécessaireServo retenu
Yawtoute la chaîne (~450 g)surtout dynamique (axe vertical)20-30 kg·cm
Pitchberceau + roll + tête (~300 g) à ~60 mm~2 kg·cm statique20-30 kg·cm
Rollplateau caméras seul (~130 g) à ~25 mm~0,35 kg·cm2 kg·cm (MG90S)
Le troisième servo coûte 5 € au lieu de 20 €, et surtout il ajoute 13 g au lieu de 60 g en bout de chaîne — là où l'inertie pénalise le plus la cinématique et où le bruit moteur est le plus proche des futurs micros.
Condition de validité : bloc caméras < 250 g. Au-delà (écran, carénage, micro), requalifier S3.

Actionneurs — pourquoi le bus série

Piège : attribuer les ID des servos avant montage — un servo enfermé dans la structure est pénible à ré-adresser. Et le couple annoncé suppose le rail 12 V (−35 % sous 7,4 V).

Vision — les deux points durs

Le roll logiciel ne remplace pas l'axe. En stéréo, faire tourner l'image ne fait pas tourner la ligne de base physique : la disparité acquiert une composante verticale, inconfortable au-delà de quelques degrés. Bon pour du micro-roll, pas pour supprimer S3.

Chaîne de puissance et sécurité

12 V (F1) ─ fusible F5 ─ bouton F6 (NC) ─ relais/MOSFET F7 ─┬─ servos bus (S1,S2)
                                                            └─ UBEC F2 ─ MG90S (S3)
                                            condensateur F4 ─┘  (au plus près des servos)

Les deux coupures sont complémentaires : F7 (GPIO) protège du bug logiciel, F6 (coup-de-poing) protège du logiciel entier — y compris d'un driver planté qui ne coupe plus rien. Le bouton doit être accessible sans se pencher sur la machine.

Les 10 points de vigilance

#Point
1Attribuer les ID des servos bus avant montage
2Vérifier la variante 180° / 270° si servo PWM (fausse toute la calibration)
3MG90S métal, jamais SG90 plastique
4Palonniers métal ; une cannelure ne s'imprime pas
5Ajustement des roulements validé sur le gabarit P0
6Inserts laiton partout où une vis se démonte
7Nappes 22 ↔ 15 broches obligatoires sur Pi 5
8Entraxe stéréo 65 mm ± 1 mm, capteurs coplanaires
9Servos jamais alimentés par le Pi ; masses communes
10Deux coupures : logicielle (F7) et physique (F6)

Ordre de montage

#Étape
1Imprimer P0, monter les roulements dessus, en déduire FIT, corriger la CAO
2Imprimer P1-P9 avec les cotes corrigées
3Poser les inserts laiton (fer + panne d'insertion) sur toutes les pièces
4Axe yaw : S1 dans P1, roulement R1, plateau P2 — valider T3 sur cet axe seul avant d'aller plus loin
5Fourche P3 : S2 à gauche, contre-palier R2 + axe R4 à droite (coaxialité !)
6Berceau P4 : S3, contre-palier R3 + axe R5
7Plateau P5 et caméras V1 — entraxe 65 mm (T4)
8Câblage : puissance (F1 → F5 → F6/F7 → servos, F4 au plus près), bus/PWM, nappes V2 avec boucle de service
9Recette T1 → T10 ci-dessous
10Calibration du modèle F3 (échelon 0 → 60° chronométré), puis casque

Recette mécanique — go / no-go

#ContrôleMéthodeCritère
T1Ajustements imprimésgabarit P0 + roulements réelsentrée à la main ferme, sans jeu
T2Amplitudesinclinomètre sur P5yaw ≥ ±90°, pitch ≥ ±45°, roll ≥ ±40° sans contact
T3Jeu angulaireservos en maintien, pousser la tête à la main< 0,5° par axe — sinon reprendre R2/R3
T4Entraxe stéréopied à coulisse entre centres optiques65 mm ± 1 mm, capteurs coplanaires
T5Résonancebalayage lent de chaque axeaucune oscillation entretenue en fin de mouvement
T6Échauffement10 min en position extrêmecorps de servo < 50 °C
T7Courantmultimètre en série sur le rail servopic < 4 A (marge sous le fusible)
T8Arrêt d'urgenceappui sur F6 en plein mouvementles 3 axes se figent, aucun mouvement résiduel
T9Coupure logicielleGPIO → F7 depuis le driveridem T8 + remontée d'état à la couche logicielle
T10Chaîne complètescripts/e2e-check.ts avec WS_URL=ws://<pi>:8791les 7 scénarios passent sur le matériel réel

Recette dynamique — la tête suit-elle ?

Le critère de confort n'est pas une vitesse de servo. Pendant un mouvement, la tête traîne de vitesse × latence. Ce retard est invisible tant qu'il reste sous la marge de champ disponible pour recadrer l'image dans le casque — (FOV_caméra − FOV_affiché) / 2 —, et devient un bord de capteur visible au-delà.

Conséquence d'achat : avec une caméra standard (~75° H) face à un casque de 90-100°, cette marge est nulle. La version Wide n'est pas un confort, c'est une condition.
#ContrôleMéthodeCritère
T11Retard et dépassementnpm run essai:echelonretard avant mouvement < 50 ms · dépassement < 2 %
T12Bande utilenpm run essai:frequencegain ≥ 0,7 à 2 Hz · aucun gain > 1 (résonance)
T13Poursuite d'un mouvement réelnpm run essai:trace sur ≥ 3 traces du vrai cas d'usage< 2 % du temps au-delà de la marge · erreur max < marge
T14PerceptionA/B en aveugle au casque (LATENCY_MS)la latence du système n'est pas distinguée de la latence nulle

T13 décide ; T11 et T12 expliquent pourquoi il passe ou échoue ; T14 confirme que le critère physique correspond au ressenti. Ces quatre essais tournent aussi en simulation, avant le matériel : même protocole WebSocket. Protocole complet et interprétation dans DOC/17.

Risques et pièges

RisqueConséquenceParade
Cotes imprimées trop justes / trop lâchesroulement qui tourne dans son logement → jeuP0 en premier, corriger avant les grosses pièces
Nappes caméra non adaptées au Pi 5rien ne se branchecommander V2 avec les caméras
Servos alimentés par le Piredémarrages en pleine sessionrails séparés, masses communes, condensateur F4
Filetages taraudés dans le plastiquevis arrachée au démontageinserts laiton partout
PLA sous des servos chaudsfluage, calibration stéréo perduePETG minimum
Couple de roll sous-estimétremblement du plateau caméraspeser le bloc stéréo avant de figer S3
Câbles dans le chemin du rollarrachement de nappeboucle de service + guide-câbles P8 dès le montage
Butées atteintes en forceengrenage cassébutées logicielles calibrées avant tout pilotage casque

Variante recommandée — bus série

GroupeTotal
A — Actionneurs46 €
B — Roulements et axes11 €
C — Impression 3D (filament)25 €
D — Vision78 €
E — Calcul et interface108 €
F — Énergie et sécurité57 €
G — Câblage32 €
H — Visserie et inserts30 €
Total matériel≈ 387 €
I — Outillage (achat unique)95-130 €

Variante économique — servos PWM

2 × DS3218 PWM au lieu des STS3215, PCA9685 au lieu de l'interface bus, UBEC seul : ≈ 355 €, soit ~30 € d'économie.

Ce qu'on perd pour 30 € : le retour de position. HeadState renvoie alors une estimation (consigne filtrée) et non une mesure, et F7 perd la détection d'erreur de suivi (servo bloqué, butée forcée). Recommandation : ne pas économiser ici.

Variante « sans imprimante 3D »

Faire imprimer P1-P9 en service (JLC3DP, Craftcloud, Fablab local, réseau d'impression entre particuliers) : 60-110 € le jeu complet en PETG au lieu de 25 € de filament. Total matériel ≈ 420-470 € sans achat d'imprimante — le chemin le plus rapide pour un exemplaire unique.

Variante « acheter au lieu de construire »

Une nacelle caméra brushless 3 axes d'occasion (carte SimpleBGC / Storm32, 80-150 €) remplace les groupes A, B et C : boucle fermée à encodeurs, sans jeu mécanique et silencieuse — or le jeu est le défaut n°1 des servos low-cost et il se voit directement dans le casque.

À vérifier avant achat : amplitude de yaw (souvent < ± 90°), charge utile compatible avec le bloc stéréo, API série à adapter dans src/driver/.

Ce que la v1.5 doit satisfaire

Réf.ExigenceCible
M1Rotation yaw± 90° min
M2Rotation pitch± 45° min
M3Rotation roll± 40°
M4Bloc stéréoentraxe 65 mm ± 1 mm
M5Rigidité inter-camérasla calibration survit à une session
M6Jeu angulaire en bout de chaîne< 0,5° par axe
M7Retour d'étatposition mesurée par axe
M8Coupure de puissancelogicielle + physique
M9Masse du bloc mobile< 300 g