Erreur lors de connexion PIXL avec AX12 et XL320


#1

Bonjour,

Je n’arrive plus a me connecter avec mes servomoteurs AX-12 et XL320

Voici le code

Message d’erreur
Traceback (most recent call last):
File “/usr/local/lib/python3.4/dist-packages/pypot/dynamixel/io/abstract_io.py”, line 511, in __real_read
header = self._protocol.DxlPacketHeader.from_string(data)
File “/usr/local/lib/python3.4/dist-packages/pypot/dynamixel/protocol/v1.py”, line 40, in from_string
raise ValueError(‘try to parse corrupted data ({})’.format(header))
ValueError: try to parse corrupted data (bytearray(b’\x00\x00\xfb\xfd’))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/home/pi/Desktop/Test.py”, line 8, in
ax12_motors = (dxl_AX12_io.scan(range(60)))
File “/usr/local/lib/python3.4/dist-packages/pypot/dynamixel/io/abstract_io.py”, line 221, in scan
return [id for id in ids if self.ping(id)]
File “/usr/local/lib/python3.4/dist-packages/pypot/dynamixel/io/abstract_io.py”, line 221, in
return [id for id in ids if self.ping(id)]
File “/usr/local/lib/python3.4/dist-packages/pypot/dynamixel/io/abstract_io.py”, line 214, in ping
self._send_packet(pp, error_handler=None)
File “/usr/local/lib/python3.4/dist-packages/pypot/dynamixel/io/abstract_io.py”, line 527, in _send_packet
return self.__real_send(instruction_packet, wait_for_status_packet, _force_lock)
File “/usr/local/lib/python3.4/dist-packages/pypot/dynamixel/io/abstract_io.py”, line 495, in __real_send
status_packet = self.__real_read(instruction_packet, _force_lock=True)
File “/usr/local/lib/python3.4/dist-packages/pypot/dynamixel/io/abstract_io.py”, line 517, in __real_read
raise DxlCommunicationError(self, msg, instruction_packet)
pypot.dynamixel.io.abstract_io.DxlCommunicationError: could not parse received data bytearray(b’\x00\x00\xfb\xfd’) after sending DxlPingPacket(id=0)

Quelqu’un à t’il une solution à ce problème ?

Merci

PS : J’ai fait un test de voltage sur les pins VCC et Data du PIXL et j’ai 0v sur la sortie Data.


#2

Bonjour,

Dans le doute j’ai testé les pins TxD et RxD du RaspberryPi afin de m’assurer que le port ttyAMAO fonctionnait bien comme il fallait :slight_smile:

Pour ce, j’ai relié les pins TxD et RxD entre eux et lancé ce bout de code :

#!/usr/bin/env python
#. -- coding: uft-8 --

#Test du port série

try:
serialPort = serial.Serial(port, 9600, timeout = 2)
print ("Port Série “, port, " ouvert pour le test :”)
bytes_sent = serialPort.write(test_string.encode())
print ("Envoyé “, bytes_sent, " octets”)
loopback = serialPort.read(bytes_sent)
if loopback == test_string.encode():
print ("Reçu ", len(loopback), “octets identiques. Le port”, port, “fonctionne bien ! \n”)
else:
print ("Reçu des données incorrectes : ", loopback, " sur le port série “, port, " bouclé \n”)
serialPort.close()
except IOError:
print ("Erreur sur ", port, “\n”)

Résultat:
Port Série /dev/tty/AMA0 ouvert pour le test:
Envoyé 32 octets
Reçu 32 octets identiques. Le port /dev/ttuAMA0 fonctionne bien !

Du coup je sais que ça ne vient pas du Raspberry pi