Darwinoppy : Comment apprendre à créer une nouvelle Creature?

Une série de comparaison avec d’autres Creatures m’a permis de voir que les nombre devait comporter une partie décimale, même .0
Je suppose que c’est pour du float ou ce genre de type.

Je suis donc passé maintenant à une autre erreur, preuve que ça avance :

my_robot = from_json(‘darwinoppy.json’)
Traceback (most recent call last):
File “”, line 1, in
File “/usr/local/lib/python3.4/dist-packages/pypot/robot/config.py”, line 272, in from_json
return from_config(config, sync=sync, strict=strict, use_dummy_io=use_dummy_io, **extra)
File “/usr/local/lib/python3.4/dist-packages/pypot/robot/config.py”, line 62, in from_config
dxl_io = dxl_io_from_confignode(config, c_params, attached_ids, strict)
File “/usr/local/lib/python3.4/dist-packages/pypot/robot/config.py”, line 153, in dxl_io_from_confignode
port = pypot.dynamixel.find_port(ids, strict)
File “/usr/local/lib/python3.4/dist-packages/pypot/dynamixel/init.py”, line 106, in find_port
ids, list(set(ids) - set(ids_founds))))
IndexError: No suitable port found for ids [7, 9, 11, 13, 15, 8, 10, 12, 14, 16, 1, 3, 5, 1, 3, 5]. These ids are missing [1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] !

EUREKA !
Avec une carte PIXL, il faut mettre le paramètre de controller sync_read à false !

Salut,

Alors avec une Pixel il est possible de mettre sync_read = True mais avec False on peut limiter certaines erreurs. Notamment celles liées à des problèmes de vitesse de communication avec un grand nombre de moteurs. Ceci dit, ton erreur n’a pas l’air liée à une erreur de communication mais plutôt un problème d’initialisation.

Il y a ici : https://github.com/jjehl/poppy_education/blob/master/poppy-4dof-arm-mini/xl-320_communication_and_speed_tests_12motors.ipynb une batterie de tests pour voir si le problème peut venir d’un soucis de configuration ou de vitesse.
Est-ce que tu peux faire les tests et poster le résultat quelque part ?

Je fais les tests dès que possible bien sûr.
En attendant, je suis content d’avoir enfin une première configuration qui fonctionne :wink:

Voilà M’ssieur @juju

Bon je vois pas de problème avec sync_read = True tant que tu dépasses pas 70 Hz. Le temps de réponse est tout de même bien meilleur en sync_read=True (9 ms pour les 16 moteurs).

J’ai pas vu de résultats pour :
dxl_io.get_return_delay_time((11,12,13,21,22,23,31,32,33,41,42,43)) en remplaçant avec les id de tes moteurs ?

Darwinoppy a un sac à dos pour le Pi

1 Like

Mais le problème c’est que quand je positionne use_sync_read=True comme en [9] je me retrouve avec des erreurs en [10]

Oui. C’est normal, le %timeit est trop rapide. Mais en [11], cela devrait marcher ?

oui, oui, je ne m’étais pas arrêté là et j’ai d’autres cellules exécutés du ipynb dont la [11]

par contre, il faut que je regarde cette histoire de %timeit trop rapide, je redécouvre lentement python moi :wink:

Pas de problèmes. Il serait intéressant d’avoir le résultat du code suivant :

dxl_io = pypot.dynamixel.Dxl320IO(‘/dev/ttyAMA0’, use_sync_read=False)
motors = (dxl_io.scan(range(60)))
dxl_io.get_return_delay_time(motors)

Si le return_delay_time n’est pas à zéro, c’est peut-être la cause de l’erreur en sync_read