alexylem / jarvis

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

Jarvis mode téléprésence #547

Open RobyBioloid opened 7 years ago

RobyBioloid commented 7 years ago

Description

J'utilise 'Jarvis' sur un Robot. Il m'est donc ainsi possible de lui donner des commandes à exécuter via la "voix"

Grace au plugin 'Jarvis UI', je peux même prendre le contrôle du robot à distance et lui faire faire le tour de l'appart pour voir "via la camera installée" si tout va bien par exemple.

J'aimerai à présent pouvoir communiquer avec une personne présente dans l'appartement.

Ce cas de figure est un cas particulier mais l'option peut être intéressante pour le contrôle d'une habitation d'une personne agées par exemple. Avec la possibilité de communiquer avec cette même personne.

Je pense qu'il y a un grand marché concernant la télé-présence chez les personne agées et cela donnerait un plus pour 'Jarvis'

Quelques site qui en parle: https://humanoides.fr/giraff-le-robot-europeen-qui-prend-soin-des-personnes-agees/ https://www.presenceverte.fr/nos-solutions-de-teleassistance/ http://www.silvereco.fr/bien-vieillir-a-domicile-avec-presencehome-le-robot-de-telepresence-sam-est-un-compagnon-discret-qui-rassure/3174577 etc ...

alexylem commented 7 years ago

Donc si je comprends bien tu voudrais pouvoir parler à une personne via Jarvis interposé.

Faire poser une question par Jarvis:

$> ./jarvis.sh -s "est-ce que tout va bien?"

De ton côté tu utiliserais quoi? Jarvis-UI ou ta propre interface? Sous quelle forme aimerais-tu voir la réponse, audio ou texte? Dans le cas des personnes vraiment âgées ou souffrantes, peut-être que l'audio serait plus adéquat...

Sinon pourquoi ne pas simplement utiliser/intégrer un logiciel tiers open source pour faire de la vidéo conf, activable depuis Jarvis-UI ?

RobyBioloid commented 7 years ago

Le plus simple et moins couteux en ressource je pense serait juste d'activer le micros et de le diffuser en streaming

Est il possible de faire cela avec l'interface Jarvis-Ui ?

Un genre de mode écoute qui serait activé à la demande de l'utilisateur via l'interface 'Jarvis-UI'et qui ne prendrait plus en compte se que dit la personne dans le logement via le micro. Seul ce qui est écrit dans l'interface serait pris en compte Deux avantages:

alexylem commented 7 years ago

Bon tu m'as bien vendu le truc. J'y vois aussi un intérêt de vidéo surveillance. Je pense que l'idéal serait de pouvoir accéder à un stream video+audio depuis Jarvis-UI.

Après quelques recherches, on dirait que la solution la plus aboutie est UV4L: http://www.linux-projects.org/uv4l/ Il y a pas mal de tutos pour les différents usages: http://www.linux-projects.org/uv4l/tutorials/ Notamment l'utilisation du plugin webrtc pour pouvoir accéder au stream depuis un browser.

Ce n'est peut-être pas la plus simple à mettre en oeuvre, mais je pense qu'on est loin d'être les premiers à utiliser un raspberry comme une caméra de surveillance avec audio.

Il faudrait tester tout ca et en faire potentiellement un plugin. Côté Jarvis-UI, il suffirait d'un bouton pour ouvrir le stream dans un popup/tab.

Oliv4945 commented 7 years ago

J'utilise MJPG-streamer pour faire du streaming vidéo à partir d'un rPi et ça fonctionne très bien, par contre je n'ai jamais essayé le son. Il y a une API web pour le piloter et il est possible d'afficher la vidéo dans un navigateur.

RobyBioloid commented 7 years ago

J’utilise également MJPG-streamer pour faire du streaming video. UV4L à l'air bien mais je ne connais pas du tout

Le tout est de l'intégrer à Jarvis-Ui

wikijm commented 7 years ago

S'il "suffit" de l'intégrer à jarvis-ui, il serait préférable de créer un ticket sur son repo une fois le plugin jarvis-mjpgstreamer crée.

RobyBioloid commented 7 years ago

Le problème avec MJPG-streamer est qu'il ne prend que la vidéo

wikijm commented 7 years ago

Bon ben UV4L alors :bowtie: HD Video & Audio RealTime Streaming from RaspberryPi to the browser with UV4L

RobyBioloid commented 7 years ago

oui, UV4L à l'air pas mal mais c'est pas dans mes cordes ;)

alexylem commented 7 years ago

Je suis en train de développer le plugin. J'arrive à afficher le stream video dans un browser. C'est en bonne voie.

alexylem commented 7 years ago

Bon ca fonctionne avec l'audio, par contre quand Jarvis est démarré (écoute du mot clé) l'audio n'est pas reçu surement parce que le micro est occupé. Il faudra donc temporairement stopper Jarvis pour avoir l'audio sur le stream. Il y a aussi une option pour parler à distance pour faire de la vidéo conf, pas encore testé. J'essaye d'intégrer tout ca proprement dans le plugin pour que vous puissiez tester rapidement.

alexylem commented 7 years ago

Voici le plugin en version alpha: https://github.com/alexylem/jarvis-telepresence

./jarvis.sh -p https://github.com/alexylem/jarvis-telepresence

Il est fonctionnel mais n'est pas encore publié sur le store car il me reste à:

alexylem commented 7 years ago

J'entrevoie un challenge pour l'audio... je ne vois pas encore comment je vais pouvoir mettre Jarvis en pause et le reprendre ensuite. J'ai peur de devoir passer par un kill, mais impossible de relancer Jarvis depuis Jarvis-UI si jarvis ne tourne pas... bref c'est tendu. Aucun problème pour le stream vidéo par contre.

alexylem commented 7 years ago

Bon j'ai une piste. J'ai réussi grâce aux signaux bash de mettre Jarvis en pause jusqu'à ce qu'on lui demande de reprendre. J'ai encore quelques problèmes mais je pense y arriver. Je me rends compte que ce système de signal va m'ouvrir de nouvelles portes comme par exemple la possibilité de mettre Jarvis en mode écoute d'une commande depuis le terminal et l'API même s'il est déjà lancé (ce qui est aujourd'hui impossible).

alexylem commented 7 years ago

pause fonctionnelle sur branch beta

$> ./jarvis.sh -vn
...
Starting UV4L server on http://192.168.1.24:9000/stream/webrtc
...
Jarvis: Waiting to hear 'Jarvis'
Alex: (listening...)
DEBUG: models=jarvis
INFO:snowboy:Ticks: [-1, -1, -1, -1]
# ./jarvis.sh > Pause
pausing...
paused
to resume, run: ./jarvis.sh and select Resume
# open video/audio stream using http://192.168.1.24:9000/stream/webrtc
# audio works
# ./jarvis.sh > Resume
resuming...
Jarvis: Waiting to hear 'Jarvis'
Alex: (listening...)
DEBUG: models=jarvis
INFO:snowboy:Ticks: [-1, -1, -1, -1]

Je fais l'intégration à Jarvis-UI

RobyBioloid commented 7 years ago

Tu as l'air de bien progresser ca fait plaisir :)

Je teste ça des que possible :)

alexylem commented 7 years ago

J'ai de gros soucis avec mon raspberry pi en ce moment qui m'empêchent d'avancer. Grosso modo je ne peux plus accéder en SSH (ca freeze) et crontab ne marche plus (les tâches s'empilent et remplissent la mémoire). Je ne sais pas encore d'ou ca vient donc pour le moment je pousse mes développements en beta et je ne fais pas de merge sur master.

oeildefeu commented 7 years ago

arf, pour la prochaine fois, si ça t'intéresse j'ai un script qui dépote pas mal pour faire des backups de la carte SD (base rsync pour aller vite et sauvegarder que les fichiers puis truncate pour diminuer la taille du .img à la taille des partitions)

alexylem commented 7 years ago

J'ai désinstallé le plugin telepresence et on dirait que je n'ai plus mes problèmes de stabilité. Je fais le merge sur master histoire de me laisser demain pour corriger avant la reprise du boulot lundi. Je vous laisse tester le plugin telepresence voir si vous avez les mêmes problèmes que moi, avant que je le publie sur le store.

Oliv4945 commented 7 years ago

Super développement ! Ton code bash est bien construit et lisible facilement mais je me demande si il ne faudrait pas intégrer le core dans le le code Python de jarvis-api, ça aiderait à

C'est un avis perso qui est sûrement biaisé car je suis plus à l'aise en python qu'en bash mais j'ai l'impression que beaucoup de plugin font aussi appel à du Python, du coup je me demandais ton avis :-)

alexylem commented 7 years ago

Plugin déployé sur le store pour les plus courageux d'entre vous qui aimeraient le tester: http://domotiquefacile.fr/jarvis/plugins/telepresence

Il reste malgré tout quelques ajustements à faire:

RobyBioloid commented 7 years ago

Je pourrais tester cela ce week end :)