Fichiers du contrôleur et profils des moteurs
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
gravityModelsont relatifs au fichier du contrôleur , et non au répertoire de travail. - Le chemin
configd’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,followerIdetmapping.
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 .