Probleme avec la programmation en python

Bonjour, je souhaite programmer mon poppy ergo jr en python. En me referant au differents docs j’ai pu faire un programme de base de sort a qu’il se déplace simplement mais je n’arrive pas a le faire marcher. voici mon programme

from poppy.creatures import PoppyErgoJr
poppy = PoppyErgoJr(camera= ‘dummy’)
poppy.m1.stiff = True
poppy.m2.stiff = True
poppy.m3.stiff = True
poppy.m4.stiff = True
poppy.m5.stiff = True
poppy.m6.stiff = True
poppy.m1.goal_position = 20
poppy.m1.moving_speed = 50
poppy.m1.led = ‘green’

mais un message d’erreur s’affiche je ne sais pas quoi faire, merci pour votre aide

message d’erreur

DxlError Traceback (most recent call last)
in ()
1 from poppy.creatures import PoppyErgoJr
----> 2 poppy = PoppyErgoJr(camera = ‘dummy’)
3 poppy.m1.stiff = True
4 poppy.m2.stiff = True
5 poppy.m3.stiff = True

/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)
283 config = json.load(f, object_pairs_hook=OrderedDict)
284
→ 285 return from_config(config, sync=sync, strict=strict, use_dummy_io=use_dummy_io, **extra)
286
287

/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)
179 dxl_io = DxlIOCls(port=port,
180 use_sync_read=sync_read,
→ 181 error_handler_cls=handler)
182
183 try:

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/dynamixel/io/abstract_io.pyc in init(self, port, baudrate, timeout, use_sync_read, error_handler_cls, convert)
73 self._serial_lock = threading.Lock()
74
—> 75 self.open(port, baudrate, timeout)
76
77 def enter(self):

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/dynamixel/io/abstract_io.pyc in open(self, port, baudrate, timeout)
96
97 “”"
—> 98 self._open(port, baudrate, timeout)
99 logger.info(“Opening port ‘%s’”, self.port,
100 extra={‘port’: port,

/home/poppy/miniconda/lib/python2.7/site-packages/pypot/dynamixel/io/abstract_io.pyc in _open(self, port, baudrate, timeout, max_recursion)
118
119 if port in self.__used_ports:
→ 120 raise DxlError(‘Another instance of pypot use the port {}. You should restart your Python kernel to pass through this issue.’.format(port))
121
122 # Dirty walkaround to fix a strange bug.

DxlError: Another instance of pypot use the port /dev/ttyAMA0. You should restart your Python kernel to pass through this issue.

un programme tourne toujours et verrouille le port utilisé par PyPot
(désolé, je passe rarement par ici et je n’ai vu que ça au premier abord)

Oui, probablement une instance lancée depuis Snap qui n’a pas été tuée par poppy monitor. La méthode magique, tu reboot et tu vas directement dans python sans rien faire d’autre avant.

Lorsqu’on clique sur Jupyter notebook depuis l’interface web, ça tue le processus qui fait tourner l’API de Snap et de Poppy Monitor. Cependant, si tu reclique sur Poppy Monitor ou Snap alors que tu as un onglet de Jupyter ouvert, il va les relancer et tu n’auras alors plus accès au port série.

Si le problème apparait, tu peux directement tuer tous les processus qui utilisent le port série depuis l’interface de Jupyter. Pour cela tu exécutes cette commande dans une cellule d’un notebook:

# Pour l'Ergo Jr
!fuser -k /dev/ttyACM*

# Pour l'Humandoid/Torso
!fuser -k /dev/ttyUSB*