Communauté Damiao AGV et FAQ
Questions fréquemment posées sur le protocole DBUS, la navigation, le dépannage et la manipulation mobile avec OpenArm. Liens vers le forum et l'assistance.
Foire aux questions
Quels sont les paramètres exacts du port série du Damiao AGV ?
Le firmware AGV écoute sur UART5 (broche PD2, RX) à 100 000 bauds avec 8 bits de données, parité paire et 2 bits d'arrêt (8E2). En pyserial, ouvrez le port avec :
serial.Serial(
port='/dev/ttyUSB0',
baudrate=100000,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_EVEN,
stopbits=serial.STOPBITS_TWO
)
Une erreur très courante consiste à utiliser 8N1 (pas de parité, 1 bit d'arrêt). L'AGV semblera se connecter mais ignorera silencieusement ou analysera mal toutes les images. Utilisez toujours PARITY_EVEN et STOPBITS_TWO.
Comment la trame DBUS de 18 octets code-t-elle la vitesse ?
La trame DBUS regroupe quatre valeurs de canal de 11 bits (ch0 à ch3) dans les octets 0 à 5 à l'aide d'un compactage de bits little-endian. Chaque canal va de 0 à 2047 avec 1024 comme centre (neutre/arrêt). La cartographie de vitesse est la suivante : ch3 = 1024 + vx × amp (avant), ch2 = 1024 + vy × amp (latérale), ch0 = 1024 + (−vw) × amp (rotation). Les octets 6 à 15 sont des champs de souris/clavier mis à zéro. Les octets 16 à 17 contiennent ch4, fixé à 1024. Voir Spécifications pour le tableau complet de la carte des chaînes.
L’AGV bouge brièvement puis s’arrête – que se passe-t-il ?
Il s’agit du déclenchement de la fonction de sécurité du délai d’attente des commandes. Si aucune commande de mouvement ou d'arrêt n'est reçue dans les --cmd-timeout-ms (300 ms par défaut), l'agent met automatiquement à zéro tous les canaux de vitesse et l'AGV s'arrête. Cela signifie généralement que la plate-forme n'envoie pas les commandes assez rapidement ou qu'une latence du réseau provoque des interruptions. Solutions : (1) augmenter --cmd-timeout-ms 500 pour les connexions à haute latence, (2) assurez-vous que le panneau téléop du navigateur envoie activement des messages répétés move commandes à ~ 10 Hz pendant qu'un bouton de direction est enfoncé, (3) vérifiez le RTT de votre réseau sur la plate-forme.
L'AGV se déplace dans la mauvaise direction : comment puis-je y remédier ?
Utilisez les indicateurs d'inversion d'axe sur l'agent — aucune modification du micrologiciel n'est nécessaire :
# Flip forward/backward python3 dami_agent.py --session RC-XXXX --serial-port /dev/ttyUSB0 --invert-x # Flip lateral (left/right) python3 dami_agent.py ... --invert-y # Flip rotation direction python3 dami_agent.py ... --invert-z
Testez chaque axe individuellement (par exemple, envoyez uniquement une commande X, observez le mouvement) pour déterminer quels indicateurs sont nécessaires pour l'orientation de votre installation physique.
Puis-je tester sans l'AGV physique ?
Oui. Passer --mock lors du lancement dami_agent.py. En mode simulé, le port série n'est jamais ouvert. La boucle de contrôle code toujours les trames DBUS (stockées en mémoire), la télémétrie est transmise à la plateforme WebSocket et toutes les analyses de commandes fonctionnent de manière identique. Cela vous permet de vérifier le pipeline WebSocket complet, de tester l'interface utilisateur de la plate-forme et de l'intégrer dans CI sans matériel :
python3 dami_agent.py --session RC-XXXX-XXXX --mock
J'obtiens pyserial.SerialException lors du lancement — que dois-je vérifier ?
D'abord: ls /dev/ttyUSB* pour confirmer que l'adaptateur apparaît. Si ce n'est pas le cas, le pilote de l'adaptateur USB vers TTL n'est peut-être pas chargé (essayez un autre port USB). Si le port apparaît mais que vous obtenez une erreur d'autorisation, ajoutez votre utilisateur au groupe de numérotation :
sudo usermod -aG dialout $USER
# Log out and back in, then retry
Si le port apparaît dans la liste des périphériques mais que l'agent ne peut toujours pas l'ouvrir, un autre processus peut l'ouvrir (par exemple, une instance d'agent précédente ou un moniteur série). Fermez tous les autres processus utilisant le port.
L'agent se connecte mais la plateforme n'affiche aucune télémétrie. Qu'est-ce qui ne va pas ?
Confirmez l'ID de session transmis à --session est toujours actif dans l’interface utilisateur de la plateforme. Les sessions peuvent expirer si elles sont inactives. Vérifiez la sortie du terminal de l'agent pour la réponse de prise de contact d'enregistrement : si elle affiche « échec de la prise de contact » ou n'imprime pas « prêt », la session a peut-être expiré. Créez une nouvelle session sur la plateforme et transmettez le nouvel identifiant à l'agent. Vérifiez également que --backend pointe vers l’URL WebSocket correcte de la plate-forme.
Comment régler la vitesse de l'AGV ?
Ajustez le --amp paramètre. Ceci définit le décalage du canal par rapport au centre (1024) qui représente la commande de mouvement. La valeur par défaut est 660, ce qui donne environ 64 % de la vitesse maximale. Pour un fonctionnement plus lent et plus contrôlé lors des tâches de manipulation montées sur le bras, utilisez --amp 400. Pour une vitesse maximale sur un sol ouvert, utilisez jusqu'à --amp 900. Notez que les roues Mecanum perdent une certaine efficacité latérale à très haute vitesse - gardez --amp en dessous de 800 pour les manœuvres latérales.
Conseils pour l'intégration avec OpenArm
Planifiez le routage de vos câbles avant de monter le bras
Acheminez les câbles CAN/USB du bras à travers le canal de gestion des câbles interne de l'AGV avant de boulonner le bras. Une fois le bras monté, il est difficile de réacheminer les câbles sans le retirer. Laissez 20 à 30 cm de jeu supplémentaire au niveau du poignet : l'espace de travail du bras s'étend sur les côtés et à l'arrière, où la tension du câble peut créer une résistance inattendue sur les trajectoires des articulations.
Utilisez le --amp inférieur lorsque le bras est monté et en mouvement
Un bras robotique sur l'AGV élève le centre de masse. Une accélération latérale rapide peut faire basculer la plate-forme, ce qui crée des perturbations dans la trajectoire du bras, en particulier dans les positions à portée étendue. Commencez par --amp 400 pour le mouvement de la base pendant le fonctionnement du bras et augmentez-le uniquement si nécessaire. Pour la collecte de données en téléopération, un mouvement de base lent et cohérent produit des données d'entraînement plus propres que des mouvements rapides et saccadés.
Enregistrez les deux agents avec des valeurs --node-id distinctes
Lorsque vous exécutez simultanément l'agent AGV et l'agent arm dans la même session de plateforme, attribuez à chacun une fonction distincte. --node-id. Cela garantit que la plate-forme affiche des flux de télémétrie séparés et que l'archive JSONL de l'épisode étiquette les données de chaque nœud indépendamment. Convention de dénomination recommandée : damiao-base pour l'AGV et openarm-right / openarm-left pour les nœuds du bras.
Coordonner le mouvement de la base et le mouvement du bras en téléopération
Dans le panneau téléop de Fearless Platform, les deux nœuds apparaissent simultanément. Un modèle de téléopération utile est le suivant : arrêter la base, déplacer le bras pour saisir, déplacer la base pour repositionner, répéter. L'archive JSONL de l'épisode capture la télémétrie de tous les nœuds de manière synchrone par horodatage, afin que les politiques en aval puissent tirer des enseignements de la trajectoire complète de manipulation mobile. Pensez à utiliser les marqueurs d'enregistrement de la plateforme pour annoter l'endroit où le mouvement de base passe au mouvement du bras au sein de chaque épisode.
Ajoutez le capteur Paxini GEN3 pour des données de manipulation mobile riches en contacts
Monter Paxini PX-6AX GEN3 capteurs tactiles sur le bout des doigts OpenArm ou sur l'effecteur final. Enregistrez le pont de capteurs en tant que troisième nœud dans la même session. La plate-forme enregistre de manière synchrone les flux tactiles, les articulations du bras et la vitesse de base, créant ainsi de riches ensembles de données de manipulation mobile sensibles aux contacts pour le clonage de comportement et l'apprentissage par renforcement.
Documentation et matériel associé
Forum et assistance
Vous avez une question sans réponse ici ? Demandez à la communauté SVRC ou contactez le support matériel.
Aller sur le forum → Contacter l'assistance →