Aller à l’article

Fichiers du contrôleur et profils des moteurs

Vérifié 2026-11-01

Résultat : prépare une configuration complète pour votre bras. Le fichier du contrôleur sélectionne les ports, les moteurs et le flux de travail ; un profil définit les paramètres de contrôle d’un moteur. Ces fichiers ne remplacent pas l’étalonnage du codeur ni les limites de déplacement enregistrées.

Créer des fichiers locaux

Pour la relecture avec pose nommée, commencez par l’exemple :

macOS / Linux
cp tools/poses/replay.example.json tools/poses/controller.local.json
cp host/arm-control/profile.example.json tools/poses/motor-1.local.json
Windows PowerShell
Copy-Item tools/poses/replay.example.json tools/poses/controller.local.json
Copy-Item host/arm-control/profile.example.json tools/poses/motor-1.local.json

Modifiez les copies locales. L’exemple controller.local.json contient uniquement le moteur 1 . Ajoutez tous les identifiants enregistrés pour un bras. Créez des profils motor-2.local.json, motor-3.local.json et autres distincts, chacun examiné pour son joint.

La structure à six moteurs ci-dessous illustre le format et non les paramètres universellement sûrs. Remplacez /dev/ttyUSB0 par le port réel, tel que COM3 sous Windows. La variable SERVO_PORT d’un terminal n’est pas automatiquement remplacée par JSON .

{
  "followerPort": "/dev/ttyUSB0",
  "baudRate": 1000000,
  "maxAgeMs": 100,
  "acceleration": 1000,
  "rampTimeMs": 50,
  "profiles": {
    "1": "motor-1.local.json",
    "2": "motor-2.local.json",
    "3": "motor-3.local.json",
    "4": "motor-4.local.json",
    "5": "motor-5.local.json",
    "6": "motor-6.local.json"
  },
  "replay": {
    "speed": 500,
    "holdMs": 1000,
    "repeat": 1,
    "moveTimeoutMs": 30000,
    "toleranceCounts": 10
  }
}

Enregistrez ce JSON sous le nom tools/poses/controller.local.json , avec motor-1.local.json à motor-6.local.json à côté. Pour différents identifiants, mettez à jour les clés de profil, posez les enregistrements et les appareils connectés de manière cohérente.

Paramètres du profil

L’exemple de source complet est :

{
  "kpQ8": 256,
  "kdQ8": 32,
  "kiQ8": 0,
  "integralLimit": 0,
  "effortLimit": 100,
  "velocityLimit": 500,
  "velocityFilterQ8": 64,
  "gravitySlewEffortPerS": 1000,
  "velocityFeedforward": {
    "positiveGainQ8": 0,
    "negativeGainQ8": 0,
    "effortLimit": 0
  }
}
Paramètre Interprétation
kpQ8 , kdQ8 , kiQ8 Gain multiplié par 256 : 256 signifie 1.0 et 32 signifie 0.125
integralLimit Plafond de la cotisation intégrale uniquement
effortLimit Limite de production totale, unités d’effort 1 – 1000 PWM ; ni couple ni ampères
velocityLimit La vitesse maximale de ce moteur en comptes/s
velocityFilterQ8 1 – 255 ; une valeur plus élevée répond plus rapidement mais filtre moins de bruit
gravitySlewEffortPerS Limite de taux pour les changements d’effort de gravité ; il ne permet pas un modèle en soi
velocityFeedforward Deux gains directionnels non négatifs et un plafond de sortie ; zéro les trois pour désactiver

Les acceleration et rampTimeMs partagés appartiennent au fichier du contrôleur. Un profil de moteur peut les remplacer avec accelerationLimit et rampTimeMs . Consultez le registre de configuration pour connaître les plages et les relations.

Chemins et identifiants

  • Les chemins de profil et gravityModel sont relatifs au fichier du contrôleur , et non au répertoire de travail.
  • Le chemin config d’un plan de réglage est relatif au fichier de plan .
  • Les poses nommées fournissent des identifiants de moteur ; cette relecture ne nécessite pas joints .
  • Le réglage et l’application de profil nécessitent que le joints: [{"followerId": 1}, …] couvre chaque moteur contrôlé.
  • La téléopération en direct et la relecture de session nécessitent leaderId , followerId et mapping .

Vérifiez les chemins lorsque vous déplacez un exemple entre des répertoires. Un tableau joints omis est intentionnel dans l’exemple de relecture de pose nommée.

Application des paramètres

Les profils sont écrits dans la RAM Extension et doivent être réappliqués après la réinitialisation. L’étalonnage de l’EEPROM et les limites de déplacement sont distincts. Replay applique automatiquement sa configuration. Un profil modifié désactive brièvement ce moteur ; un nouveau démarrage peut libérer tous les moteurs configurés.

Les réglages host/arm-control/profiles/so101/ et so102/ fournis proviennent de bras verticaux particuliers avec des pinces vides. Le profil SO-101 conserve l’oscillation M1 non résolue et les excursions M2 plus lentes ; le profil rapide SO-102 nécessite encore une validation matérielle. Il ne s’agit pas de valeurs par défaut universelles de première exécution.

Vérifier : valide JSON , fichiers relatifs existants, un profil par moteur et réglages revus pour le mécanisme. Exécutez ensuite l’aperçu de relecture de . Un fichier valide n’établit pas un comportement matériel sûr.


Accueil de la documentation · Révision source : a995f77 . Extension 9.0 .