Poppy in a musical setup, please share your ideas

Sinon tu peux peut être récupérer le .deb de also-oss sur le Poppy de Flowers puisque je l’ai installé. Ça doit être quelque part dans le cache /var/cache/apt/archives/
Ou le récupérer sur le net, peut être là?
http://ports.ubuntu.com/pool/universe/a/alsa-oss/alsa-oss_1.0.25-1_armhf.deb
J’ai cherché comme ça à l’aveugle donc pas sur que ce soit celui-là (ni les dépendances).
Le serveur python c’est ctrl_server.py dans le répertoire du soft de démo.
cf. mon post sur l’Odroid :smile:

Le serveur python c’est ctrl_server.py dans le répertoire du soft de démo.
cf. mon post sur l’Odroid

tout à fait, je viens de le relire l’instant :slight_smile:

Super l’idée pour le .deb ,je vais tenter…

  • sur le depot de ubuntu, j’ai un armel.deb et un armhf.deb
    tu connais les différences ? sur le net ya pas grand chose…
    A+

J’sais pas trop, je crois que pour l’Odroid c’est armhf…

Je tente de faire jouer poppy avec la voix de mateo depuis l’interface web (http://…:9999/say/BONJOUR"

@route('/say/<text>')
def say(text):
    import sys
    #text ="je m'appelle poppy"
    file = open("/home/odroid/Downloads/vocal/voxygen/txt/mateo_text_from_web.txt", "w")
    file.write(text)
    file.close()
    import subprocess
    cmd_line = "python /home/odroid/Downloads/vocal/voxygen/play_text.py /home/odroid/Downloads/vocal/voxygen/txt/mateo_text_from_web.txt" 
    subprocess.call(cmd_line, shell=True)
        return text

La voix produite est étrange ! on dirait toujours l’ancienne voix et non celle de voxygen…

est ce que mon script est bon?
merci!

Tu as bien relancé le serveur?
Il faut killer tous les trucs ctrl_server.py et le relancer.

ah zut ! j’ai pas fait cela!
J’ai relancer et la cela prend en compte mon nouveau script (bon j’ai d’autres erreurs à present)… je crois qu’il est temps d’aller ce coucher.

Demain, j’attaque l’autre poppy (ajour voix, ajout code de la musique).

j’aimerai bien faire parler poppy et qu’il bouge les bras en m^me temps :smile:

au fait , j’ai modifier ton /sbin/eth0_say_ip :wink:
Je mets 700ms de fichiers silence avant de lancer la voix! ainsi pas d’apparition de bruit type noise…
En effet, au demarrage de la voix voxygen, on entend tjs un drole de bruit/bug, le systeme audio cherche a demarrer X11…
bref, pour allez vite, j’ai juste mis un fichier silence de 700 ms avant de demarrer les phrases de poppy !

Et bien les deux poppy ont a present la voix de Mateo (voxygen) qui marche !!!

merci steve pour l’idee de prendre le .deb :smile:

  • j’ai d’abord fait un sudo dpkg -i alsa-oss_1.0.25-1_armhf.deb
  • puis un apt-get install blibli.deb

voici l’erreur lorsque je lance le code de Clement et pieer pour la demo du pied (kick) qui bouge selon la musique:

import osimport timeimport poppytools from pypot.robot import from_json config_path = os.path.join(os.path.dirname(poppytools.__file__), 'configuration', 'poppy_config.json') poppy = from_json(config_path)poppy.start_sync()---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
<ipython-input-1-f8566052cd37> in <module>()
      7 config_path = os.path.join(os.path.dirname(poppytools.__file__), 'configuration', 'poppy_config.json')
      8 
----> 9 poppy = from_json(config_path)
     10 poppy.start_sync()

/home/odroid/dev/pypot/pypot/robot/config.pyc in from_json(json_file)
    189         config = json.load(f)
    190 
--> 191     return from_config(config)
    192 
    193 

/home/odroid/dev/pypot/pypot/robot/config.pyc in from_config(config, strict)
    141             angle_limit = m_params['angle_limit']
    142 
--> 143             old_limits = dxl_io.get_angle_limit((m.id, ))[0]
    144             d = numpy.linalg.norm(numpy.asarray(angle_limit) - numpy.asarray(old_limits))
    145 

/home/odroid/dev/pypot/pypot/dynamixel/io.pyc in my_getter(self, ids, **kwargs)
    390         if control.access in (_DxlAccess.readonly, _DxlAccess.readwrite):
    391             def my_getter(self, ids, **kwargs):
--> 392                 return self._get_control_value(control, ids, **kwargs)
    393 
    394             func_name = control.getter_name if control.getter_name else 'get_{}'.format(control.name.replace(' ', '_'))

/home/odroid/dev/pypot/pypot/dynamixel/io.pyc in _get_control_value(self, control, ids, **kwargs)
    428             for motor_id in ids:
    429                 rp = DxlReadDataPacket(motor_id, control.address, control.length * control.nb_elem)
--> 430                 sp = self._send_packet(rp, error_handler=error_handler)
    431 
    432                 if not sp:

/home/odroid/dev/pypot/pypot/dynamixel/io.pyc in _send_packet(self, instruction_packet, wait_for_status_packet, error_handler, _force_lock)
    545                     handler_name = 'handle_{}'.format(e.lower().replace(' ', '_'))
    546                     f = operator.methodcaller(handler_name, instruction_packet)
--> 547                     f(error_handler)
    548 
    549             return sp

/home/odroid/dev/pypot/pypot/dynamixel/error.pyc in handle_overload_error(self, instruction_packet)
     42 
     43     def handle_overload_error(self, instruction_packet):
---> 44         raise NotImplementedError
     45 
     46     def handle_instruction_error(self, instruction_packet):

NotImplementedError: 

des idées?
A+

autre erreur un peu plus loin, je n’ai pas la lib ‘PYO’

from pyo import * s = Server().boot()s.start()---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-3-cad6a46280a6> in <module>()
----> 1 from pyo import *
      2 
      3 s = Server().boot()
      4 s.start()

ImportError: No module named pyo

A++

Celle-ci elle ressemble à une erreur d’Overload moteur.
T’as un moteur qui force trop?
Faut débrancher et rebrancher…

Oui celle-là c’est juste qu’il te manque une lib, pyo.
pip instal pyo?

Je vais essayer… ya til un moyen de l’installer sans passé par le reseau ? comme pour le asl-oss.deb ?
cimer !

je suis sur : https://pypi.python.org/simple/
ya plein de PYO :wink:
lesquel dois je prendre ?

En fait c’est même pas dit qu’il soit dans pip, j’ai proposé ça comme ça…
En plus dans mes souvenirs pour cette manip on était avec le vieux Poppy, connecté directement en USB donc c’est un PC qui faisait tout ça. Là tu veux tout faire tourner sur l’Odroid? Tu risques d’avoir pas mal de problèmes à mon avis.
Je pense que tu ferais mieux de gérer tout ça sur une machine déportée.
L’idée serait d’utiliser le mécanisme ‘poppy-remote’ de pypot. En gros tu lances un serveur sur l’Odroid et ensuite tu contrôles tout par le réseau comme si tu étais connecté directement sur le robot. Ce qui veut dire que tu n’as qu’une ligne de code à modifier dans le truc ‘poppy-on-tracks’.

Pour lancer le serveur sur le robot regardes dans le répertoire pypot/samples il y a un remoterobot-server.py c’est ça que tu dois lancer (je crois qu’il faut lui donner en argument au moins le fichier de conf .json, mais donne lui aussi l’adresse IP que tu utilises, 10.0.0.1 pour le wifi). Évidemment il faut qu’il n’y ait aucun ipython ni webdemo de lancé sur le robot.
Pour voir comment te connecter dessus depuis ton PC regarde le notebook pypot/samples/notebooks/robot-client.ipynb
En gros pour se connecter il faut faire un:

from pypot.robot import from_remote
poppy = from_remote('10.0.0.1')

Je crois qu’il n’y a pas besoin de faire un start_sync() ( @Pierre?)
Ensuite c’est tout pareil :smile:
Donc tu as juste besoin d’installer ces histoires de trucs pyo (et tout les autres trucs qui vont avec) sur ton PC et le son sortira de ton PC.

Et puis franchement, tu galères là sans connexion internet sur le robot. Dis moi pas que t’as pas du réseau sur ethernet de dispo?

J’ai pas de reseau internet via le cable ethernet. j’ai arrêté les manip réseau pour avancer sur le reste…

je vais regarder ce que tu proposes… je reviens vers vous si blocage.
A++

par le même occasion, je confirme que l’on ne peut pas installer pyo sur le odroid :slight_smile: (pip ne trouve rien depuis mon mac, il fautinstaller via les .dmg, windows file, source file).

je dois donc aller sur un poppy en remote… ou alors installer à la main la lib pyo…

Au fait, la lib PYO c’est pour jouer la zic. La demo du pied, etc doit se faire sans que poppy produise de la zic!
je suis bete ! mais ce point a son importance :wink:
je vire PYO du code et autres instructions relatives aux son …
je cours tester de ce pas !

Effectivement je te conseille de faire ça ! D’autant plus que PYO prend la main sur la carte son et tu ne pourras pas jouer d’autres sons dès que PYO est chargé : donc clairement pas adapté pour ta démo !

J’ai transformer le notebook en python.
je me retrouve avec deux fichiers :

je me demande si je dois integrer une partie du code de server.py dans mon poppy on track?
en effet, dans server.py je vois des instructions sur la position de poppy et mouvement:

from poppytools.primitive.basic import StandPosition, SitPosition

stand = StandPosition(poppy)
sit = SitPosition(poppy)


# In[ ]:

from poppytools.primitive.interaction import SmartCompliance

smart_compliance = SmartCompliance(poppy, poppy.motors)
smart_compliance.start()


# In[ ]:

from pypot.primitive.move import MoveRecorder, MovePlayer

recorder = MoveRecorder(poppy, 50, ...)

Non je pense pas que ça soit nécessaire.

Il me semble que le code auquel tu fais référence sert simplement à s’assurer que les transitions entre les mouvements se passe bien (e.g. toujours repasser par la position de base entre les mouvements…).

Si ta chorégraphie est pensé pour cela doit passer directement.

Courage ! :slight_smile: