🧪 De nouveaux tutoriels arrivent — du bras robotique au capteur
Aller au contenu

Phase 3 : Téléopération (Linux) ​

Cette phase met en route la boucle de téléopération : le bras maître commande les mouvements du bras esclave, et la pince commande l'ouverture/fermeture de l'AmazingHand. C'est une phase clé pour vérifier si l'ensemble du système fonctionne correctement.


Prérequis ​

  • Phase 1 : Configuration de l'environnement et Phase 2 : Calibration terminées

  • Permissions du port série configurées

  • Les trois équipements sont sous tension et leurs ports série sont relevés


Lancer la téléopération ​

Bash
lerobot-teleoperate \
  --robot.type=so101_amazing_hand \
  --robot.port=<follower_arm_port> \
  --robot.hand_port=<hand_port> \
  --robot.id=amazing_hand_follower \
  --teleop.type=so101_leader \
  --teleop.port=<leader_arm_port> \
  --teleop.id=amazing_hand_leader

Remplacez <follower_arm_port> / <hand_port> / <leader_arm_port> par les chemins réels de votre machine (exemple /dev/ttyACM0 / /dev/ttyACM2 / /dev/ttyACM1).

Effet attendu :

  • Les 5 articulations du bras maître → le bras esclave suit

  • La pince du bras maître → ouverture/fermeture de l'AmazingHand (suivi proportionnel : à moitié pincée = à moitié fermée)

💡 Description des paramètres :

  • --robot.type=so101_amazing_hand : robot combiné bras esclave + main

  • --robot.port : port série du bras esclave

  • --robot.hand_port : port série de la main

  • --teleop.type=so101_leader : téléopérateur du bras maître

  • --teleop.port : port série du bras maître


À faire impérativement au premier lancement : vérification des directions ​

Après le démarrage, effectuez d'abord un test de direction pour confirmer que les deux points suivants sont corrects :

TestOpérationPhénomène correct
Suivi du brasFaire tourner chaque articulation du bras maîtreLe bras esclave suit dans le même sens
Ouverture/fermeture de la mainOuvrir/pincer la pince du bras maîtrePince ouverte → main ouverte ; pince pincée → main fermée

⚠️ Remarque (que faire si la direction est inversée) :

  • Direction d'ouverture/fermeture de la main inversée (la main se ferme alors que la pince s'ouvre) : cela signifie que les angles de la main sont mal calibrés ; réexécutez l'outil de calibration (y compris la calibration de la direction de la pince), l'effet sera automatique après l'enregistrement, sans modification manuelle des fichiers. Voir Phase 2 : Calibration.

  • Direction du mappage de la pince inversée (la main se ferme alors que la pince s'ouvre) : idem ; lors de la calibration, cliquez sur [Capture Open] quand la pince du bras maître est ouverte et sur [Capture Close] quand elle est pincée ; l'outil enregistre automatiquement gripper_open_pos/gripper_close_pos et les charge au démarrage.

Après modification, relancez la téléopération pour vérifier.


Vérification du suivi proportionnel ​

Une fois les directions correctes, vérifiez la finesse du suivi proportionnel :

  1. Ouvrez lentement la pince → la main doit s'ouvrir de façon fluide (sans saut)

  2. Arrêtez la pince à mi-course → la main doit également s'arrêter à mi-course

  3. Ouvrez/fermez rapidement → la main réagit rapidement, sans à-coup

⚠️ Remarque (problème historique d'ouverture/fermeture excessive de la main) : si la main se ferme alors que la pince est à moitié ouverte, c'est le plus souvent que les positions « ouverte/poing fermé » sont imprécises lors de la calibration des angles de la main. Réexécutez l'étape 3 de calibration (GUI des angles de la main) pour calibrer des positions d'ouverture/fermeture plus précises.


Facultatif : visualisation avec caméra ​

Ajoutez --robot.cameras pour connecter une caméra et --display_data=true pour ouvrir la fenêtre de visualisation Rerun (affichage en temps réel des images de la caméra + de l'état des articulations) :

Bash
lerobot-teleoperate \
  --robot.type=so101_amazing_hand \
  --robot.port=<follower_arm_port> \
  --robot.hand_port=<hand_port> \
  --robot.id=amazing_hand_follower \
  --teleop.type=so101_leader \
  --teleop.port=<leader_arm_port> \
  --teleop.id=amazing_hand_leader \
  --robot.cameras='{
    wrist: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30, fourcc: "MJPG"},
    top: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30, fourcc: "MJPG"}
  }' \
  --display_data=true

💡 Explication :

  • index_or_path est l'indice de la caméra ; confirmez-le d'abord avec lerobot-find-cameras (les numéros diffèrent d'une machine à l'autre).

  • fourcc: "MJPG" est facultatif ; il réduit nettement la bande passante occupée par la caméra USB (passage à la compression MJPEG) et peut être ajouté en cas de saccades.

  • Si une seule caméra est nécessaire, supprimez la ligne correspondante (par exemple top).

⚠️ Remarque (dépendance rerun et affichage) : --display_data=true nécessite le paquet de visualisation rerun ; s'il n'est pas installé, exécutez :

Bash
pip install "rerun-sdk>=0.24.0,<0.34.0"

De plus, la fenêtre rerun nécessite un serveur d'affichage (session graphique locale ou ssh -X). En l'absence d'environnement graphique, cela n'affecte pas la téléopération : supprimez simplement --display_data=true.


Quitter ​

Appuyez sur Ctrl+C pour arrêter. Le programme effectue automatiquement :

  1. Relâche le couple des 8 servomoteurs de la main

  2. Déconnecte les ports série du bras esclave/du bras maître

  3. Déconnecte la caméra (le cas échéant)

⚠️ Remarque : avant une sortie normale, ne fermez pas directement le terminal (par exemple avec kill -9), sinon une occupation résiduelle du port série peut subsister. Si le port série est occupé après une sortie anormale, fermez le processus résiduel ou rebranchez l'USB.


Dépannage ​

SymptômeCauseSolution
Port série Permission deniedPermissions non configuréessudo chmod 666 /dev/ttyACM*
Direction de la main inverséeAngles de la main ou mappage de la pince inversésVoir « Vérification des directions » ci-dessus
Ouverture/fermeture de la main excessive/insuffisanteAngles de la main mal calibrésRecalibrer la GUI des angles de la main
Le bras ne suit pasCalibration manquante / port série incorrectVérifiez que le bras esclave est calibré et que --robot.port est correct
Erreur rerunDépendance de visualisation / affichage manquantSupprimez --display_data=true
Port série occupéSortie anormale précédenteFermez le processus résiduel ou rebranchez l'USB