Bon OK, ça m’apprendra à pas avoir la dernière version de pypot, j’ai vu que le port de la pixl était rajouté.
Par contre en cas d’install avec pip, ça marche pas.
Etape suivante :
dxl_io = pypot.dynamixel.Dxl320IO('/dev/ttyAMA0', use_sync_read=False) motors = (dxl_io.scan(range(60))) print(motors)
pypot ne trouve pas le moteur :
out : []
pas l’air bien bon ça…
Je suis descendu à 9600 bauds pour la transmission et là miracle, ça marche
dxl_io = pypot.dynamixel.Dxl320IO('/dev/ttyAMA0', baudrate=9600, timeout=0.5, use_sync_read=False)
Je vais essayer de voir à d’autres vitesse mais à 1000000 de bauds ça passe pas.
A 9600 bauds, il faut 35ms pour retourner la present.position, je m’attendais à pire :
> %timeit dxl_io.get_present_position(motors)
out : 10 loops, best of 3: 35 ms per loop
@Nicolas is this : “We change a pull up resistor to boost the signal current and decrease the switch time (we change the default 500homs output pull-up to a 200homs)” could be part of the problem at 1000000 bauds ?
A 115200 bauds, ça passe mal, le ping fonctionne mais j’ai des erreurs :
DxlCommunicationError: could not parse received data bytearray(b'\xff\xff\xfd\x00"\x06\x00U\x00\xfd\x01\xfc\xfa') after sending DxlReadDataPacket(id=34, address=9472, length=512)
Alors le problème vient de l’envoi de commande très proche (le %timeit) car si je fais ça :
for i in range(100): dxl_io.get_present_position(motors) time.sleep(0.02)
Ca marche, mais quand je réduit le time.sleep je tombe sur l’erreur parse data. Une sorte de conflit entre les donneés qui partent et celles qui reviennent ?