Skip to content

Essai T1 du 5 novembre (16 h 06) : point de contact des mains, ligne par le centre de gravité, port surveillé - #29

Merged
OS-AXIS merged 3 commits into
mainfrom
port-stable-t1
Nov 5, 2026
Merged

OS-AXIS merged 3 commits into
mainfrom
port-stable-t1

Conversation

@OS-AXIS

@OS-AXIS OS-AXIS commented Nov 5, 2026

Copy link
Copy Markdown
Owner

Essai GPU T1 du 5 novembre 2026, 16 h 06 : le carton levé pivote et tombe

Le meilleur essai jusqu'ici : couples mesurés et jugés fiables (pente 1,00 / 0,99), contact vu par la force sur les deux mains (vrais contacts), serrage, levage, état LIVRER. Puis le carton pivote autour de la ligne qui joint les mains, bascule, glisse et tombe. Par ailleurs, la force estimée en fin de serrage (8 à 10 N) dépassait de ~35 % celle du juge (6,3 à 6,8 N).

La cause commune : les mains ne touchent pas là où l'OS le croyait

Rejouées sur les couples de l'essai (test_rejeu_prise_t1606.py, posture reconstruite par cinématique inverse ; elle redonne la force de l'OS, 8,4 contre 8,5 N), les mains caoutchouc touchent 11 cm au-delà du repère de la main, le long de la main :

  • Force (point 5) : la surestimation est un gain (estimée ≈ 1,38 × juge, décalage < 0,5 N, corrélation 0,94). Ce n'est ni le frottement, ni « normale contre totale » : le juge somme déjà les impulsions, frottement compris. C'est le bras de levier : au point de contact, la force rejouée rejoint celle du juge à 5 % près (6,5 contre 6,4 N ; 6,3 contre 6,3 N).
  • Ligne des mains (point 2) : les repères visaient le centre du carton, donc les mains le touchaient près de sa face arrière. La ligne des contacts passait à 11 cm derrière le centre de gravité (+0,5 cm en hauteur). Couple de basculement : 1,08 N·m, quand les mains caoutchouc en retiennent environ 0,2.

Ce qui change

  • Point de contact (ReglagesPrise.contact_main_m = 0,11 ; le robot peut le déclarer : MesuresBras.contact_main_m ; ChaineBras.bout_m, ModeleBras.au_contact). C'est la « main » de toute la géométrie de la prise et de l'estimation de la force.
    • Les repères ne servent plus qu'au contrôle « mains mesurées contre modèle ».
    • La règle « objet entre les mains » (exemption du gardien) se juge au point de contact, avec les mêmes marges. Si les angles sont illisibles, elle se juge aux repères, ce qui est plus strict.
    • Serrage visé inchangé (8 N, désormais réels) ; plafonds de couple par articulation inchangés.
  • Ligne par le centre de gravité.
    • La prise vise les points de contact au milieu des faces.
    • Avant de lever, la ligne des contacts mesurés doit passer à tolerances_cg près : 1,7 cm en profondeur, 10 cm en hauteur. Ces tolérances sont tirées de couple_retenu (frottement en rotation de deux contacts presque ponctuels : frottement_main, rayon_contact_main_m, masse_max_kg, securite_basculement), à confirmer sur GPU.
    • distance_ideale garde la posture des bras d'avant, l'objet contact_main_m plus loin.
  • Port (point 3).
    • Levage lent et progressif : 4 cm en 2 s, départ et arrivée en douceur.
    • Carton ramené vers le torse au plus près, sans saut de posture en chemin, avant-bras au-dessus du plateau, arrêt au toucher du torse. Le journal dit s'il le touche, sinon où il s'arrête.
  • Rotation (point 4).
    • Caméra de tête, quand elle voit le carton (MesuresBras.rotation, rotation_dessus) : au-delà de 10°, il est reposé doucement sur la table et la prise échoue avec la raison.
    • Les couples ne voient pas cette rotation : le couple qu'elle fait passer par les mains est plafonné à leur frottement (~0,2 N·m), sous le bruit des couples. Estimé quand même, il valait 0,5 à 2,7 N·m pour un carton centré ; il ne décide donc rien.
    • Les couples voient ses suites : au port, un carton qui ne pèse plus sur les mains arrête la base et c'est signalé. Cela corrige aussi le défaut de l'essai où l'OS restait « TENU » avec le carton au sol.
  • Banc T1 (point 1).
    • t1_prise.csv va de la fermeture au port (levage, ramené, tenu, reposé).
    • Il ajoute la tâche de l'app, les angles des bras, ce que l'OS estime (ligne des mains, poids, poussée, rotation vue) et la vérité : roulis, tangage et lacet du carton dans le repère du bassin, son centre par rapport aux mains, le point de contact réel (rapport PhysX).
    • Le juge note l'orientation du carton par phase, puis pendant le port jusqu'à la chute.

⚠️ Limite constatée : le torse n'est pas atteint avec les mains du G1

Avec le contact au bout des doigts et des poignets figés (cinématique inverse sur tangage, roulis et coude), les bras ne ramènent la face arrière du carton qu'à 22 cm du bassin, pour un buste attendu à 10 cm. Plus près, la solution change de branche en chemin : la consigne sauterait et le garde-fou la refuserait. Le troisième appui n'est donc pas obtenu ; le journal le dit à chaque prise. Piste : les poignets dans la cinématique inverse, à valider sur GPU.

À vérifier au prochain essai GPU (aussi dans docs/demo_tri_usine.md)

  • contact_rel_* près de zéro en profondeur et en hauteur, pour confirmer les 11 cm.
  • force_normale_n à ~10 % de force_juge_n.
  • Au journal, « ligne des mains au serrage » sous les tolérances.
  • Le tangage réel du carton sous 10° pendant le port.
  • Le relevé des points de contact suppose que le rapport de contact PhysX donne une position par point. Non vérifié ici ; sinon, ces colonnes resteront vides.

Ce qui ne change pas

JointSafetyGuard, GardienProximite, VLAService, le critère « rien entre les mains », les contrôles de levée et d'inclinaison existants (on ajoute, on ne retire rien). Les contrôles de placement en profondeur et en hauteur sont inchangés.

Tests

  • Nouveaux :
    • test_rejeu_prise_t1606.py : lignes réelles de l'essai ;
    • test_port_stable.py, sur le robot simulé avec les mains du G1 : ligne par le centre de gravité ; force estimée à 10 % de la vraie ; poids porté ; levage lent ; torse ; le défaut de l'essai reproduit (carton qui tourne, vu, reposé sur la table) ; caméra aveugle sans jamais marcher avec ; refus avant de lever ; poids perdu au port ; rien entre les mains toujours refusé ;
    • rotation_dessus dans test_perception_boite.py ;
    • nouveaux relevés du banc et orientation du juge dans test_banc_t1_verite.py.
  • Robot simulé : il garde par défaut ses mains idéales (contact au repère, comportement d'avant). Les mains du G1 sont une option (contact_main_m=0.11), avec poids du carton, bascule plafonnée au frottement, torse et rotation vue.
  • Tests modifiés, même intention, pas plus permissifs :
    • test_prise_mesuree.py §10 : la distance est calculée pour les mains du robot testé.
    • test_prise_scene_t1.py : le robot simulé de la scène T1 a les mains du G1, comme les distances qu'il calcule (prise complète tenue à la distance de la façade).
  • Suite complète : 136 passed. gitleaks : aucune fuite.

Generated by Claude Code

…ort surveillé

Essai GPU T1 du 5 novembre 2026, 16 h 06 : couples mesurés et fiables,
contact vu par la force, serrage, levage ; puis le carton pivote autour
de la ligne des mains, bascule et tombe ; force estimée 35 % au-dessus
de celle du juge.

- Point de contact : les mains caoutchouc touchent 11 cm au-delà du
  repère de la main, le long de la main (ReglagesPrise.contact_main_m,
  déclarable par le robot : MesuresBras.contact_main_m ; ChaineBras.bout_m,
  ModeleBras.au_contact). C'est la « main » de toute la géométrie de la
  prise et de l'estimation de la force. La surestimation était un bras de
  levier : gain 1,3 à 1,4, sans biais ; au point de contact, la force
  rejouée sur les couples de l'essai rejoint celle du juge à 5 % près.
  Les repères ne servent plus qu'au contrôle capteur contre modèle ; la
  règle « objet entre les mains » se juge au point de contact.
- Ligne des mains : visant le centre avec leur repère, les mains
  touchaient 11 cm derrière lui. La prise vise désormais les points de
  contact au milieu des faces, et avant de lever, la ligne des points de
  contact mesurés doit passer par le centre de gravité (tolerances_cg :
  1,7 cm en profondeur, 10 cm en hauteur, tirées du couple que les mains
  retiennent, couple_retenu). distance_ideale garde la posture d'avant.
- Port : levage lent et progressif (2 s), carton ramené vers le torse
  au plus près que les bras le permettent sans saut en chemin, avant-bras
  au-dessus du plateau, arrêt au toucher du torse ; le journal dit s'il
  le touche, sinon où il s'arrête.
- Rotation : la caméra de tête, quand elle voit le carton
  (MesuresBras.rotation) ; au-delà de 10°, il est reposé doucement sur la
  table, la prise échoue avec la raison. Les couples ne voient pas la
  rotation (couple plafonné au frottement des mains, sous leur bruit) ;
  ils voient le poids qui quitte les mains au port : la base s'arrête.
- Robot simulé : poids du carton, basculement plafonné au frottement des
  mains, torse, rotation vue ; mains du G1 en option (contact_main_m).

JointSafetyGuard, GardienProximite, VLAService, « rien entre les mains »,
contrôles de levée et d'inclinaison : inchangés. Tests :
test_rejeu_prise_t1606.py (lignes réelles), test_port_stable.py ;
test_prise_mesuree.py §10 : la distance calculée pour les mains de ce
robot (même intention).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kd65oQX59GQ8FeKBTHrWbn
…de tête

Essai GPU du 5 novembre 2026, 16 h 06 : t1_prise.csv s'arrêtait à la fin
du serrage, la chute au port n'y était pas, et le juge ne notait que le
lacet du carton.

- t1_prise.csv de la fermeture au port (levage, ramené, tenu, reposé ;
  au port, un relevé tous les 5 pas) : tâche de l'app, angles des bras,
  ce que l'OS estime (ligne des mains, poids, poussée, rotation vue) et
  la vérité : orientation du carton dans le repère du bassin (roulis,
  tangage autour de la ligne des mains, lacet), son centre par rapport
  aux mains réelles, point de contact réel (rapport PhysX, par main).
- Juge : orientation du carton à chaque phase, et pendant le port
  jusqu'à sa fin ou la chute.
- Caméra de tête : rotation_dessus (perception/boite.py), pente du dessus
  du carton autour de la ligne des mains ; le banc la donne à l'OS quand
  le carton, placé par la cinématique de l'OS, est entier dans l'image.
- Docs : CHANGELOG, ce qu'il faut vérifier au prochain essai.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kd65oQX59GQ8FeKBTHrWbn
Suite complète : trois échecs. examples/fetch et le SDK de haut niveau
posaient la boîte au sol : sur les prises sans serrage mesuré des mains
idéales, la bascule (frottement nul) la faisait tourner puis tomber. La
bascule est maintenant réservée aux mains du G1, comme la tenue loin du
milieu ; les mains idéales gardent l'objet à plat, comme avant.

test_prise_scene_t1.py calculait les distances pour les mains du G1
(réglage par défaut) et planifiait avec les mains idéales du robot
simulé : le robot simulé de ce test (la scène de l'essai GPU) a désormais
les mains du G1. Même intention, et plus près du banc : prise complète
tenue à la distance de prise de la façade.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kd65oQX59GQ8FeKBTHrWbn
@OS-AXIS
OS-AXIS merged commit adef3fd into main Nov 5, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants