Problème avec la fonction change_id

Bonjour,

Je n’arrive pas à changer l’id de mon servomoteur XL-320

voici mon code

import pypot.dynamixel
import time

dxl320_io = pypot.dynamixel.Dxl320IO('/dev/ttyAMA0')
dxl320_io.change_id({1:4})
time.sleep(0.001)
dxl320_io.close()

L’id du servomoteur reste sur le 1

Problème résolue après redémarrage du système.

Je pense donc qu’il est nécessaire de redémarrer les servomoteurs pour que le changement d’id soit effectif

1 Like

I also have been facing the same problem while changing the function ID. You may sometimes face chrome keeps crashing windows 10 which can be easily fixed.

Bonjour,
Je découvre le python, pypot et poppy …
Mon objectif est d’imprimer les robots et d’embarquer une RPi3 dans le robot directement programmable en python via Wi-Fi.
J’ai commencé la lecture de la doc de pypot (pas évidente).
J’en suis à ce point: je pilote la position et la LED de mon servo (XL-320), je lis pas mal de paramètres (position, temperature etc.)
J’en suis à vouloir utiliser plusieurs servo simultanément et donc à changer l’ID d’un d’entre eux et je tombe sur le problème évoqué ci-dessus.
J’effectue un " change_id({1:2}) " , à l’exécution tout se passe bien (pas d’erreur) mais l’id ne change pas. Quand je scan je retrouve mon servo avec un id=1 et je peux toujours le piloter avec cet id.
Y-a-t-il une fonction de validation ou autre que je n’ai pas trouvée ? Quelquechose que je n’ai pas compris ?

Je précise que je travaille directement sur une RPi3 en Wifi via VNC, avec Thonny comme IDE (aucun autre outil plus évolué ou complexe).

Merci d’avance de l’aide qu’on m’apportera.
Franck

bonjour @Franck

je pense qu’il faut commencer par effectuer un reset:

import pypot.dynamixel
import time

dxl320_io = pypot.dynamixel.Dxl320IO('/dev/ttyAMA0', baudrate=1000000, timeout=0.01)
dxl320_io.factory_reset(ids=range(253))
dxl320_io.change_id({1:4})
time.sleep(0.001)
dxl320_io.close()

comme lorsque vous utilisez la commande poppy-service <robot_name> <motor_name>

(qui exécute ce fichier :https://github.com/poppy-project/pypot/blob/master/pypot/tools/dxlconfig.py en allant chercher votre configuration dans un fichier .json)

Bonjour,

D’abord merci pour cette réponse. J’essaie cela dès que possible.
Je n’ai pas trouvé de documentation sur “change_id()” sur cette page http://poppy-project.github.io/pypot/controlling_robot.html
Pour l’instant je ne cherche à exploiter que les fonctions “bas niveau” (lecture et écriture des registres du XL-230), et j’avoue que j’ai de temps en temps quelques difficultés avec cette doc.

Merci encore.

je te conseil de jeter un oeil à la doc des créatures Poppy qui utilise la lib pypot
https://docs.poppy-project.org/fr/
tu pourras y trouver “des exemples appliqué” de l’utilisation de pypot

Je viens de tester sur trois XL-320 … nickel ! J’ai maintenant trois servomoteurs avec un “id” différent.
Merci encore de l’info.
Mais je me pose la question: où cette fonction change_id() est-elle documentée ?

@bientôt surement :slight_smile:

il me semble qu’elle se trouve dans la doc robotis
http://support.robotis.com/en/product/actuator/dynamixel_x/xl_series/xl-320.htm

a check …