alexylem / jarvis

Jarvis.sh is a simple configurable multi-lang assistant.
http://openjarvis.com
MIT License
800 stars 198 forks source link

Plugin Visage pour Jarvis #366

Closed tchoul closed 7 years ago

tchoul commented 7 years ago

Bonjour,

J'ai un écran 3.5 et je me demandais comment on pouvait créer une interface visuel pour Jarvis, un visage comme le robot buddy par exemple.

Quelqun l'aurait déjà fait?

alexylem commented 7 years ago

Bon par contre je n'est pas trouvé pour l'instant pour l'utiliser sur un tablette

Je peux pas t'aider la dessus pour le moment.

Pense tu que je puisse changer le visage de Jarvis à distance quand l'esclave passe en conversation etc... ?

Il faudrait que tu m'expliques un peu mieux comment sont configurés ton maitre et ton esclave... Les hooks sont exécutés sur le raspberry pi ou est déclenché l'évènement. Donc par exemple, mettons sur le plugin est installé sur les 2 instances:

Si tu veux vraiment que toutes les animations se fassent sur le raspberry pi esclave par exemple, c'est théoriquement possible. Il faut que dans les hooks du Maître tu fasses exécuter les hooks du plugin Face sur le Raspberry Pi esclave (ex: ssh) pour afficher les animations. Mais il te faudra préalablement charger les librairies Jarvis et fonctions du plugin Jarvis-Face (et donc "sourcer" les hooks du plugin). Pas évident pour qqun qui ne maîtrise pas le bash / code de Jarvis...

J'attends quand même tes retours sur l'utilisation "normale" du plugin 😄

alexylem commented 7 years ago

@Jean-Bernard-Hallez j'ai vu un mail de toi à propos d'un pb avec ton écran 3,5" mais tu as du le supprimer. Tu as sûrement du réalisé que tu pouvais changer la taille de la fenêtre dans la config du plugin, cela à-t-il résolu ton pb?

A tous, n'hésitez pas à joindre des photos 👍

Jean-Bernard-Hallez commented 7 years ago

Et coucou... oui j'ai quasiment solutionné mon problème, mais il n'est pas afficher à 100% sur mon écran, il reste une bordure, ce qui n'est pas esthétique et le Gif est décalé vers le bas... lol pg_face_theme="cortana" # folder name in plugins/jarvis-face/faces/ pg_face_size="480x320" # empty for gif size, 640x480 for fixed size (use for fullscreen) pg_face_x_offset="-5" # +X: Xpx from left, -X: Xpx from right pg_face_y_offset="-5" # +Y: Ypx from top, -Y: Ypx from bottom pg_face_hide_cursor=true # true to hide mouse pointer when not moved pg_face_display_num=":0" # sometimes is :1, find using w command, TTY column

Takanato commented 7 years ago

@alexylem Faudra que je regarde si j'arrive à le faire pour les hooks, je vais me renseigner, cela me permettrais aussi d'avoir le retour sonore sur le Jarvis maitre quand l'esclave passe en listening.

Pour le moment j'ai mon Jarvis maitre sur le même pi que ma Jeedom et l'esclave qui ne sert que de micro déportée (sans enceinte ni écran), d'ou ma volonté de faire déclencher les hooks du Jarvis maitre sur lequel serait l'écran pour avoir un retour visuel comme si ce n'était que un seul et unique Jarvis dans la pièce.

J'ai pas encore eu le temps de tester le plugin mais je te ferais un retour bien entendu, en tout cas tes vidéo donne super bien !

Il y a que un truc auquel je n'avais pas pensé (encore un décidément), c'est que vu que mon Jarvis maitre est sur le même pi que ma Jeedom, si je branche l'écran dessus je temps sur la console et les Gifs ne s'affichent donc pas... Faut que je réfléchisse à comment faire tout ça.

En tout cas merci pour ton travail, ton implication et tes réponses. Malgré tout ça mérite d'être souligné. Chapeau pour tout ça !

alexylem commented 7 years ago

@Jean-Bernard-Hallez

mais il n'est pas afficher à 100% sur mon écran

C'est à cause de la bordure? Ou du "menu démarrer" ? Une photo/capture d'écran?

il reste une bordure

Pour ça j'ai 2 solutions:

  1. Je pense remplacer gifview (de gifsicle) par animate (de imagemagick). La dépendance est un peu plus lourde mais elle permet d'afficher le gif en vrai plein écran, sans bordure (il y a toujours la barre de titre par contre).
  2. modifie le fichier de config de openbox:
    nano ~/.config/openbox/lxde-pi-rc.xml

    et insère ceci juste avant </applications>:

    <application name="gifview">
    <decor>no</decor>
    <shade>no</shade>
    </application>

    puis recharge openbox:

    openbox --reconfigure

    PS: il y a d'autres paramètres au sein de <application> avec lesquels tu peux jouer:

    <position>
    <x>center</x>
    <y>center</y>
    </position>
    <fullscreen>no</fullscreen>

    Comme il n'est pas à la portée de tous de faire ca... je réfléchis vraiment à la solution 1.

@alexylem J'ai fais la modif de openbox... ca fait exactement pareil voir photo en pièce jointe sur ce lien: https://github.com/Jean-Bernard-Hallez/jarvis-testjb/blob/master/jarvis-tete-bug.jpg Comme tu peux voir le gif est plus bas que l'écran et c'est la bordure de la fenêtre gif que l'on voit...

alexylem commented 7 years ago

@Takanato

si je branche l'écran dessus je temps sur la console et les Gifs ne s'affichent donc pas...

Tu veux dire tu "tombes" sur la console? Jeedom ne tourne pas sur un environment Desktop? Ca doit valoir le coup d'essayer quand même d'installer Pixel (regarde les instructions sur la page du plugin), si Jeedom est un serveur il doit pouvoir tourner aussi en environment graphique.

Takanato commented 7 years ago

Oui pardon erreur de frappe (ou de tête en l'air plutôt) je voulais bien dire "tombes".

Jeedom possède une interface Web joignable par l'adresse IP (comme ton plugin UI) mais ne tourne pas sur un environnement Desktop (sauf erreur de ma part).

Je vais essayer dés que j'ai le temps dans la semaine d'installer Pixel et je te fais un retour.

MulhollandDr commented 7 years ago

Ecran reçu aujourd'hui, installation nickel. J'ai tenté une petite modif rapide des animations pour voir si c'était simple à mettre en place. Il reste encore des choses à faire mais pour le moment ça donne ça :

lego2

Reste à encastrer l'écran dans la structure lego et à acheter un micro plus performant.

En tout cas merci pour le travail :+1:

Takanato commented 7 years ago

@alexylem Bon j'ai pu essayer, et après installation de Pixel sur mon raspberry Jeedom/Jarvis tout fonctionne nickel (après quelques déboire pour la sortie audio qui ne fonctionnait plus).

Plugin génial qui fonctionne parfaitement, à un détail prêt : J'utilise un grand écran sur lequel je voulais que le visage soit afficher en grand, ou au moins à la même taille mais centré dans la fenêtre qui prend tout l'écran. Sauf que si je change la taille de la fenêtre voici ce que j'ai :

capture d ecran 2017-03-15 a 19 04 26

Comment y remédier ?

Merci d'avance (malgré ce petit détail c'est super !)

alexylem commented 7 years ago

@MulhollandDr génial!! tu as réussi à modifier l'animation comme ca? t'as toujours les mouvements? Je cherche des gens doués en animation pour designer le futur visage de Jarvis officiel (pke la c'est quand même un plagiat....). Peut-être un raspberry pi à la clé, j'y pense 😄

@Takanato oui je suis au courant c'est le pb de gifsicle. Voir https://github.com/kohler/gifsicle/issues/59 3 solutions:

  1. "Quick & dirty" Ne mets pas la fenêtre en taille maximum, mais plutôt centrée sur l'écran avec fond noir

  2. Redimensionner Redimensionne toutes les images pour qu'elles fassent la taille de ton écran. Je peux automatiser ca dans Jarvis au lancement du plugin.

  3. comme je le disais plus haut:

    Je pense remplacer gifview (de gifsicle) par animate (de imagemagick). La dépendance est un peu plus lourde mais elle permet d'afficher le gif en vrai plein écran, sans bordure (il y a toujours la barre de titre par contre).

Takanato commented 7 years ago

Ok désolé j'avais pas vu l'information autant pour moi.

Bon je vais essayer les deux solutions et voir ce que ça donne, si la redimension donne bien ça peut être pas mal !

Je vais regarder aussi car ya pas d'animation pour l'état speaking, je vais voir pour mettre l'animation en forme de bulle quand il parle (à la dessin animé).

En tout cas c'est réactif et fluide !!!!!

MulhollandDr commented 7 years ago

@alexylem Alors oui l'animation est la même que l'originale (donc mêmes mouvements) j'ai juste appliqué différents filtres/traitements aux images et nettoyer un peu les parasites.

Sinon, entièrement d'accord, c'est du plagiat complet et ça ne me satisfait qu'à moitié aussi. En fait j'ai fait ça assez rapidement pour tester les possibilités (j'avais jamais fait de GIF avant). L'étape suivante c'est la personnalisation complète et autant je pense m'en sortir avec l'animation autant mon vrai problème c'est le dessin. Mais je planche dessus.

Pour ce qui est du visage officiel, je pense pas être au niveau mais je peux toujours essayer. Est ce que tu as une idée de ce que tu voudrais ?

alexylem commented 7 years ago

Pour ce qui est du visage officiel, je pense pas être au niveau mais je peux toujours essayer. Est ce que tu as une idée de ce que tu voudrais ?

Je pensais à un truc très simple pour commencer, peut-être juste 2 yeux un peu comme le robot Cozmo. J'ai lancé une nouvelle issue pour en discuter ici: https://github.com/alexylem/jarvis-face/issues/1

alexylem commented 7 years ago

@Takanato Tu peux me dire ce que ca donne pour les solutions proposées? On est toujours en phase bêta et j'attends vos retour pour l'améliorer. Pour l'état speaking il n'y a pas d'animation car je trouvais pas ca top. Mais je peux la remettre. Je pensais rajouter dans la config des options pour activer / désactiver chaque animation par état. Vous en pensez quoi?

Takanato commented 7 years ago

@alexylem justement j'etais entrain de tester tout ça.

Bon sur un grand écran la redimension est pas top, ça a assez du mal à afficher les gif et c'est pas fluide (en faisant une redimension en fois 2). Du coup j'ai opté pour mettre la fenêtre au centre et le fond d'écran en noir pour le moment. Mais si tu change pour pouvoir mettre en plein écran je suis preneur aussi ^^

Pour le star speaking je l'ai mis manuellement en enlevant le commentaire, moi j'aime bien mais je peut comprendre que tu ne soit pas fan. Une option pour activer/désactiver les animations par état dans la configuration me semble être une excellentte idée pour ma part!

Et malheureusement je suis beaucoup trop nul en dessin pour t'aider sur la création d'un visage officiel même si ça aurait été avec plaisir!

Me reste plus qu'à me pencher sur comment sourcer les hooks de mon maître dans l'esclave pour qu'il puisse déclencher le visage ^^

physicien commented 7 years ago

@alexylem Oui, tu as bien répondu à ma question. Je cherchais à savoir comment le choix des animations se fait, car je prévois avoir un agent émotionnel dans mon installation, donc je dois arriver à changer les visages selon un input qui va sélectionner l'émotion à afficher. Je prévoyais aussi changer les animations pour quelque chose exactement dans le genre de ce que tu proposes aujourd'hui, sois deux yeux un peu comme ceux de Cozmo. Pour ce qui est de faire l'animation, j'ai peut-être une amie à qui je voulais demander comment on fait une animation inspirée de ce que j'ai trouvé sur un vieux projet. Je mentionne que dans ce projet, les animations étaient en Python.

physicien commented 7 years ago

En cherchant sur Cozmo, j'ai trouvé un peu de code relatif aux animations et au CV sur le GitHub de la compagnie. Peut-être que ça peut inspirer quelqu'un.

alexylem commented 7 years ago

Pour la création du nouveau visage on continue la discussion ici: https://github.com/alexylem/jarvis-face/issues/1

On garde ce ticket pour la gestion des options, plein écran, etc...

alexylem commented 7 years ago

@Takanato

Une option pour activer/désactiver les animations par état dans la configuration me semble être une excellentte idée pour ma part!

Je fais ca de suite

alexylem commented 7 years ago

@Takanato Voilà c'est fait, mets à jour (il faudra refaire la config désolé)

Takanato commented 7 years ago

@alexylem Je viens juste de pouvoir tester, ça marche nikel !

Jean-Bernard-Hallez commented 7 years ago

@alexylem bonjour, j'ai pris du retard ces derniers temps... j'en profite donc d'avoir une petite pause pour envoyer en photo mon bug avec Face: https://github.com/Jean-Bernard-Hallez/jarvis-testjb/blob/master/Face_bug.zip

Il y a 3 photos:

voilà... Merci en tout ca pour tout...

alexylem commented 7 years ago

@Jean-Bernard-Hallez @Takanato oui je suis au courant c'est le pb de gifsicle. Voir https://github.com/kohler/gifsicle/issues/59 3 solutions:

  1. "Quick & dirty" Ne mets pas la fenêtre en taille maximum, mais plutôt centrée sur l'écran avec fond noir

  2. Redimensionner Redimensionne toutes les images pour qu'elles fassent la taille de ton écran. Je peux automatiser ca dans Jarvis au lancement du plugin.

  3. comme je le disais plus haut:

    Je pense remplacer gifview (de gifsicle) par animate (de imagemagick). La dépendance est un peu plus lourde mais elle permet d'afficher le gif en vrai plein écran, sans bordure (il y a toujours la barre de titre par contre).

Je peux essayer de mettre imagemagick sur la branche beta de Jarvis (Settings > General > Branch) comme ca vous pourriez tester, ca vous dit?

alexylem commented 7 years ago

Je peux essayer de mettre imagemagick sur la branche beta de Jarvis (Settings > General > Branch) comme ca vous pourriez tester, ca vous dit?

En fait non car c'est un plugin, la beta branch ne s'applique qu'à Jarvis core. Je vais faire des tests avec imagemagick avant de le changer pour tout le monde...

alexylem commented 7 years ago

@Jean-Bernard-Hallez @Takanato Voilà j'ai mis à jour le plugin pour utiliser imagemagick. Il vous faut réinstaller le plugin pour installer automatiquement imagemagick:

Voici ce que ca donne chez moi avec cette config:

pg_face_theme="fluorescent" # folder name in plugins/jarvis-face/faces/
pg_face_anim_start=true # enable animation when Jarvis is started
pg_face_anim_listening=true # enable animation when listening for command
pg_face_anim_speaking=true # enable animation when speaking
pg_face_anim_done=true # enable happy animation when conversation is over
pg_face_anim_exit=true # enable animation when Jarvis terminates
pg_face_size="800x450" # empty for gif size, 800x450 for fixed size (use for fullscreen)
pg_face_backdrop=false # true to display fullscreen black backdrop
pg_face_x_offset="+0" # +X: Xpx from left, -X: Xpx from right (only for empty gif size)
pg_face_y_offset="+0" # +Y: Ypx from top, -Y: Ypx from bottom (only for empty gif size)
pg_face_hide_cursor=true # true to hide mouse pointer when not moved
pg_face_display_num=":0" # sometimes is :1, find using `w` command, TTY column

img_0517

J'attends vos retours!

Jean-Bernard-Hallez commented 7 years ago

@alexylem suite à la mise à jour... l'imge est bien plus grande si je le resize sans dédoublement, mais il y a cette fois ci 2 barres visible au lieu d'une... voir photo https://github.com/Jean-Bernard-Hallez/jarvis-testjb/blob/master/20170322_112102-1_resized.jpg au lieu d'une barre de menu avec l'ancienne installation... lol https://github.com/Jean-Bernard-Hallez/jarvis-testjb/blob/master/Face_sans_resize.jpg

J'ai trouvé dans l'interface graphique que j'exploite a peine comment mettre un fond noir et mes barres sous fond noir c'est un peu mieux... hélas je ne peux pas les masquer... on voit les iconnes... https://github.com/Jean-Bernard-Hallez/jarvis-testjb/blob/master/Face_sur_fond_noir.jpg

alexylem commented 7 years ago

@Jean-Bernard-Hallez C'est parce que j'ai changé un paramètre de mon "menu démarrer" pour qu'il se masque automatiquement:

Au moins tu n'as plus le pb d'avant ou tu voyais une partie du bureau. Alors c'est mieux comme ca ou on revient comme avant? J'attends aussi le retour de @Takanato.

Takanato commented 7 years ago

De mon coté le plugin ne fonctionne plus après réinstall, désinstall et install...

J'ai des erreurs : /home/pi/jarvis/plugins/jarvis-face/functions_linux.sh: ligne 16: animate : commande introuvable

Lusitanos67 commented 7 years ago

idem mais avec une erreur de "commande unaire" ?!

/home/lusitanos/jarvis/plugins/jarvis-face/functions_linux.sh: ligne 11 : [: == : opérateur unaire attendu

Takanato commented 7 years ago

Bon cela venait pour moi d'un bug du rasp.

@Lusitanos67 j'avais aussi cette erreur mais cela venait du fait que je n'avais pas mis de taille dans le fichier de config.

@alexylem Pour l'instant le rendu est pas top. Sur un grand écran si on met la fenêtre en petit, les animations qui s’enchaîne se décale sur l'écran et ne remplace pas la précédente... Donc pour faire simple le visage se déplace. Une idée ?

Lusitanos67 commented 7 years ago

ok merci

alexylem commented 7 years ago

@Takanato c'est possible d'avoir une vidéo? Je n'ai pas ce symptôme chez moi. Tu as essayé avec les faces standard?

alexylem commented 7 years ago

@Lusitanos67 c'était un bug. Je viens de le corriger. Il faut pouvoir laisser la taille à vide soit pour garder l'image par défaut, soit pour jouer avec l'offset. @Takanato c'était peut-être aussi la source de ton pb. Essaye sans la taille maintenant.

Takanato commented 7 years ago

C'est bon pour moi après réinstallation et redémarrage du rasp.

Par contre un peu moins fluide car il y a comme un clignotement entre chaque Gif, on voit la coupure mais bon je suppose que tu n'y peut rien à cela ^^

alexylem commented 7 years ago

@Takanato oui c'est le pb avec imagemagick. Il n'y avait pas ce phénomène avec gifsicle. Pour le moment je n'ai que ces deux options car pas réussi à changer l'URL d'un navigateur dynamiquement depuis le terminal (sans tuer la mémoire/CPU du rasp avec selenium). Donc il faut choisir entre plein écran et fluidité. Je continue à chercher de nouvelles options régulièrement.

Takanato commented 7 years ago

Ce qui est dommage par contre c'est que cela ne fonctionnent pas bien avec les gifs qui ne bouclent pas (comme celui en écoute de cortana). Une fois le Gif fini la fenêtre se coupe, alors qu'avant cela restait sur la dernière image du Gif.

alexylem commented 7 years ago

@Takanato Mince il faut que je vérifie... la je ne suis pas chez moi mais je pense que ca va aussi poser un problème avec l'animation listening de la face cortana...

Takanato commented 7 years ago

@alexylem C'est justement comme cela que je m'en suis aperçu, si on met cortana et qu'elle passe en écoute, elle fait son animation puis la fenêtre se ferme aussitôt.

Takanato commented 7 years ago

Le pire c'est que même avec la taille par défaut du Gif les coupures entre chaque Gif sont assez importantes pour ma part (rasp 2 B+, c'est peut être pour ça).

Moi personnellement à choisir entre la possibilité du plein écran avec cette nouvelle méthode et la grande fluidité de l'ancienne méthode je préfère la fluidité.

Pas de possibilité de proposer l'une ou l'autre solution au choix simplement (je veut pas non plus faire mon chieur) ? Sinon tant pis c'est pas grave.

J'ai du coup éteint l'écran pour le moment, en attendant de voir si on arrive à trouver une solution.

alexylem commented 7 years ago

J'ai des nouvelles pistes à explorer avec les arguments -pause, -delay et -update de imagemagick/animate. Le problème est que je ne suis pas chez moi ce soir donc il faudra attendre demain soir. Si ca ne donne rien je suis d'accord avec @Takanato il faudra faire marche arrière en attendant de trouver mieux.

Takanato commented 7 years ago

@alexylem Pas de soucis t'inquiète pas c'est pas urgent loin de la ^^ Je trouve déjà que tu est bien assez dispo et bien assez réactif comme ça !

J'attend de tes news mais tranquille ^^

alexylem commented 7 years ago

Bon alors:

Vous en pensez quoi?

alexylem commented 7 years ago

Bon je pense de plus en plus que je vais revenir sur gifsicle avec potentiellement une redimensionnement des images au chargement de Jarvis pour matcher la résolution voulue... je teste ca voir ce que ca donne...

alexylem commented 7 years ago

Bon allez je pars sur le resize ca marche très bien, ca prend tout l'écran (après resize) 👍
Ca prends un peu de temps pour resizer (1-2 secondes par image) mais ca ne sera fait que lorsque la résolution voulue est changée. Je finis ca avant de rechanger imagemagick par gifsicle comme ca je fais d'une pierre 2 coups.

Takanato commented 7 years ago

J'approuve à 100% le retour à gifsicle ! Desolé pour toi qui a passé du temps pour intégrer imagemagick...

La solution du resize est je pense une bonne solution pour palier à la duplication et au plein ecran tout en gardant la réactivité d'avant.

alexylem commented 7 years ago

Bon voila c'est implémenté mettez à jour.

A savoir

Voici ce que ca donne chez moi:

pg_face_theme="fluorescent" # folder name in plugins/jarvis-face/faces/
pg_face_anim_start=true # enable animation when Jarvis is started
pg_face_anim_listening=true # enable animation when listening for command
pg_face_anim_speaking=true # enable animation when speaking
pg_face_anim_done=true # enable happy animation when conversation is over
pg_face_anim_exit=true # enable animation when Jarvis terminates
pg_face_size="800x480" # empty for gif size, 800x450 for fixed size (use for fullscreen)
pg_face_x_offset="+0" # +X: Xpx from left, -X: Xpx from right
pg_face_y_offset="-0" # +Y: Ypx from top, -Y: Ypx from bottom
pg_face_hide_cursor=true # true to hide mouse pointer when not moved
pg_face_display_num=":0" # sometimes is :1, find using `w` command, TTY column

img_0523

Sans aucun lag / clignotement / coupure 😉

Reste à faire:

Takanato commented 7 years ago

Super ! Bon je part en vacance tôt demain matin donc je pourrais tester que dans la semaine prochaine mais je te dirais ce que ça donne !

Lusitanos67 commented 7 years ago

J'ai désinstaller puis réinstall Face, cependant j'ai une erreur à l'installation: Failed building wheel for pillow

Puis plus loin dans l'install: Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-2Xecp5/pillow/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-bI5DQR-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-2Xecp5/pillow/

alexylem commented 7 years ago

@Lusitanos67 Mmmmh, tu peux coller le log complet? Il doit y avoir une dépendance manquante quelque-part... C'est quand même bizarre je n'ai rien changé dans l'installation à part avoir remis gifsicle...

Lusitanos67 commented 7 years ago

j'ai hésité à tout te mettre parce qu'il y en a des pages lol !