Lancement du robot en Python

Lorsque je démarre

http://eremurus.local:8888/notebook/Discover%20your%20Poppy%20Ergo%2
0Jr.ipynb Discover your Poppy Ergo Jr.ipynb

La première commande

from pypot.creatures import PoppyErgoJr
poppy = PoppyErgoJr()

Génère un message d’erreur
Que faire ?

1 Like

bonjour @luc_vincent,

peux tu nous donner le message d’erreur qui t’es retourné?

merci

OUI il est long :slight_smile:

---------------------------------------------------------------------------
DxlCommunicationError                     Traceback (most recent call last)
<ipython-input-1-aad9218939b9> in <module>()
      1 from poppy.creatures import PoppyErgoJr
      2 
----> 3 poppy = PoppyErgoJr()

/home/poppy/miniconda/lib/python2.7/site-packages/poppy/creatures/abstractcreature.pyc in __new__(cls, base_path, config, simulator, scene, host, port, id, use_snap, snap_host, snap_port, snap_quiet, use_http, http_host, http_port, http_quiet, use_remote, remote_host, remote_port, start_background_services, sync, **extra)
    117         else:
    118             try:
--> 119                 poppy_creature = from_json(config, sync, **extra)
    120             except IndexError as e:
    121                 raise IOError('Connection to the robot failed! {}'.format(e.message))

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/robot/config.pyc in from_json(json_file, sync, strict, use_dummy_io, **extra)
    270         config = json.load(f, object_pairs_hook=OrderedDict)
    271 
--> 272     return from_config(config, sync=sync, strict=strict, use_dummy_io=use_dummy_io, **extra)
    273 
    274 

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/robot/config.pyc in from_config(config, strict, sync, use_dummy_io, **extra)
     60         attached_ids = [m.id for m in attached_motors]
     61         if not use_dummy_io:
---> 62             dxl_io = dxl_io_from_confignode(config, c_params, attached_ids, strict)
     63 
     64             check_motor_eprom_configuration(config, dxl_io, motor_names)

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/robot/config.pyc in dxl_io_from_confignode(config, c_params, ids, strict)
    174                       error_handler_cls=handler)
    175 
--> 176     found_ids = dxl_io.scan(ids)
    177     if ids != found_ids:
    178         missing_ids = tuple(set(ids) - set(found_ids))

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/dynamixel/io/abstract_io.pyc in scan(self, ids)
    218     def scan(self, ids=range(254)):
    219         """ Pings all ids within the specified list, by default it finds all the motors connected to the bus. """
--> 220         return [id for id in ids if self.ping(id)]
    221 
    222     # MARK: - Specific Getter / Setter

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/dynamixel/io/abstract_io.pyc in ping(self, id)
    211 
    212         try:
--> 213             self._send_packet(pp, error_handler=None)
    214             return True
    215         except DxlTimeoutError:

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/dynamixel/io/abstract_io.pyc in _send_packet(self, instruction_packet, wait_for_status_packet, error_handler, _force_lock)
    524 
    525         if not error_handler:
--> 526             return self.__real_send(instruction_packet, wait_for_status_packet, _force_lock)
    527 
    528         try:

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/dynamixel/io/abstract_io.pyc in __real_send(self, instruction_packet, wait_for_status_packet, _force_lock)
    492                 return
    493 
--> 494             status_packet = self.__real_read(instruction_packet, _force_lock=True)
    495 
    496             logger.debug('Receiving %s', status_packet,

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/dynamixel/io/abstract_io.pyc in __real_read(self, instruction_packet, _force_lock)
    514             except ValueError:
    515                 msg = 'could not parse received data {}'.format(bytearray(data))
--> 516                 raise DxlCommunicationError(self, msg, instruction_packet)
    517 
    518             return status_packet

DxlCommunicationError: could not parse received data ���aU�ea after sending DxlPingPacket(id=5)

la derniere phrase est la plus importantes :wink:

3 possibilités:

  • “un bug électronique fluctuant” … débrancher/rebrancher est souvent salutaire
  • et/ou le câble entre le moteur 4 et 5 est endommager (ca arrive de temps en temps)
  • et/ou le moteur 5 est endommager (c’est rare)

je note tes suggestions mais j’ai oublié de te préciser que le problème est présent sur TOUS mes robots !
J’ai fait le test en câble direct ou en câble réseau …même punition …

C’est très bizarre. Essaye d’accéder aux moteurs avec des commandes de bas niveau pour voir ce qu’il se passe :
notebook ici : https://github.com/Roboticia/notebook_tuto/blob/master/Configurer%20les%20moteurs%20XL-320.ipynb

Test réalisé en cable direct PC<-> robot
Je viens de passer toutes les commandes bas niveau indiquées sans problème.

Par contre cela bloque toujours
from pypot.creatures import PoppyErgoJr Cette commande passe

poppy = PoppyErgoJr()

Cette commande renvoie une erreur

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-2-1f3e71fcc8f5> in <module>()
----> 1 poppy = PoppyErgoJr()

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/creatures/abstractcreature.pyc in __new__(cls, base_path, config, simulator, scene, host, port, id, use_snap, snap_host, snap_port, snap_quiet, use_http, http_host, http_port, http_quiet, use_remote, remote_host, remote_port, use_ws, ws_host, ws_port, start_background_services, sync, **extra)
    117                     logger.warning('Init fail: {}'.format(str(e)))
    118             else:
--> 119                 raise OSError('Could not initalize robot!')
    120             poppy_creature.simulated = False
    121 

OSError: Could not initalize robot!

Et pour terminer
j’ai fait la mise à jour de la SD card …
du coup impossible de renommer le robot avec la nouvelle version…
quand à mon problème …même punition
To start using your robot in Python, you first need to instantiate it. You can do that by running the following code:In [1]:from pypot.creatures import PoppyErgoJr​poppy = PoppyErgoJr()---------------------------------------------------------------------------
OSError Traceback (most recent call last)
in ()
1 from pypot.creatures import PoppyErgoJr
2
----> 3 poppy = PoppyErgoJr()

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/creatures/abstractcreature.pyc in new(cls, base_path, config, simulator, scene, host, port, id, use_snap, snap_host, snap_port, snap_quiet, use_http, http_host, http_port, http_quiet, use_remote, remote_host, remote_port, use_ws, ws_host, ws_port, start_background_services, sync, **extra)
117 logger.warning(‘Init fail: {}’.format(str(e)))
118 else:
–> 119 raise OSError(‘Could not initalize robot!’)
120 poppy_creature.simulated = False
121

OSError: Could not initalize robot!

c’est extrêmement bizar[quote=“luc_vincent, post:8, topic:3179”]
j’ai fait la mise à jour de la SD card …
[/quote]

si tous fonctionné avant, et plus après la maj, effectivement il y sûrement un lien… mais le quel…

je demanderai bien à notre expert @Theo mais il est en congés!

je pense que la bonne méthode et de confirmer que le problème vient bien du soft.

  1. pourrais-tu nous indiquer quel log sont affiché au démarrage du robot (dans l’onglet “what happend”)
  2. pourrais-tu re-flasher l’une des SD de tes robot voir si le problème perciste

Salut @luc_vincent, j’ai eu une erreur similaire sur un robot utilisant la dernière image, mais c’est parce qu’aucune caméra n’était branchée. Est-ce que tes robots ont une caméra ?

Peux-tu aussi nous dire quelle version de l’image tu as utilisée (ou le lien de téléchargement) ?

Un dernier point :
-Situation initiale : 10 robots montés avec l’image
2016-09-30-poppy-ergo-jr.img.zip

Ces robots fonctionnent bien sous Snap,et je n’avais aucun problème

Problématique :
test en python du fichier present sur la carte du robot
Discover your Poppy Ergo Jr.ipynb

Cela plante …
Je tente les deux connexion : reseau ou par cable direct
Cela plante …
je change de robot, de pc cela plante …
Je tente une mise à jour
je vais chercher sur

le fichier 2017-04-06-poppy-ergo-jr.img.zip

Je programme la carte SD
Nouveauté …sur cette version on ne peut pas changer le nom du robot !

Coté python rien de ieux
Coté snap cela fonctionne

J’ai la chance de pas être trop loin de L’INRIA Talence je vais passer vous voir …on postera la solution …

Les commande de bas niveau sur les moteurs marchent. Tous les robots plantent, il semble que la dernière image Poppy a un bug. La piste de la caméra me semble bonne car il me semble que snap instancie sans caméra justement.
Je peux pas trop en dire plus, je n’utilise pas l’image officielle pour mes robots. Les logs en debug devraient donner plus d’info.[quote=“tibo, post:9, topic:3179”]
je pense que la bonne méthode et de confirmer que le problème vient bien du soft.
[/quote]

Si les commandes de bas niveau fonctionnent, c’est plus que probable que le problème vient du soft.

Tu as essayé d’instancier avec :

robot = PoppyErgoJr(camera=‘dummy’)

@luc_vincent pour le problème de changement de nom d’hôte, c’est lié à la fois à la gestion du cache du navigateur et à la manière dont la requête de mise à jour est faite.

Vider le cache du navigateur suffit, mais il faut le faire à chaque fois pour garantir que la requête est bien exécutée. C’est tout sauf pratique, mais ça peut dépanner ponctuellement.

Ça sera bien entendu corrigé dans la prochaine image que l’on publiera.

était la bonne réponse :wink: il manquait le paramètre camera='dummy' puis ce que la camera était débranché.

puis ce que tu veux appeler ton robot “poppy” le code est donc:

from pypot.creatures import PoppyErgoJr
poppy = PoppyErgoJr(camera='dummy')