jarvis icon indicating copy to clipboard operation
jarvis copied to clipboard

Jarvis avec Kinect - Possible but not recommended

Open HoLengZai opened this issue 8 years ago • 37 comments

Hi,

For testing purpose, i succeed in installing Kinect with Pi2 to be used with jarvis. The bad thing... we cannot set the mic volume So it only works within a short distance I think it's possible to improve it like PS EyeToy but in all the case, Kinect is not the best solution

HoLengZai avatar Aug 02 '16 19:08 HoLengZai

Fantastic! Kinect was marked so far as "not compatible with Raspberry pi". Would you share your sources on how did you proceed?

alexylem avatar Aug 02 '16 19:08 alexylem

Pre-requisite page updated: image

alexylem avatar Aug 02 '16 20:08 alexylem

Well, It was just for testing purpose through a Kinect from one of my friend and his Pi2. So I didn't mark down my installation process. But i made it possible through this tutorial: http://www.connectingstuff.net/blog/reconnaissance-vocale-sarah-raspberry-et-le-kinect/

But to sum up as not all are details on this website: sudo aptitude install wget p7zip-full git clone http://git.ao2.it/kinect-audio-setup.git/ cd kinect-audio-setup sudo make install sudo ./kinect_fetch_fw /lib/firmware/kinect sudo udevadm control --reload-rules

For checking: lsusb You should have something like this: Bus 002 Device 003: ID 045e:02b0 Microsoft Corp. Xbox NUI Motor Bus 002 Device 004: ID 045e:02ad Microsoft Corp. Xbox NUI Audio Bus 002 Device 005: ID 045e:02ae Microsoft Corp. Xbox NUI Camera

If you see Kinect as USB audio with this command cat /proc/asound/cards You will be able to see it with Jarvis menu (But as mentioned you won't be able to handle the mic volume (sensitivity) as alsamixer will tell you that it cannot)

I didn't try the ffmpeg part as it will be more complicated but the trick is quite smart but the result is not guarantee at all

I stopped my test here but for people who want to go further... (Don't want to read too many docs :P) https://me.m01.eu/blog/2014/07/an-asoundrc-alsa-config-for-the-ps3-eye/ I'm quite confident that by playing with this .asoundrc file, it will be possible to increase the gain..

HoLengZai avatar Aug 02 '16 20:08 HoLengZai

Bonjour, J'ai trouvé ceci, je pense que ça peux aider pour rendre jarvis compatible kinect : http://www.connectingstuff.net/blog/reconnaissance-vocale-sarah-raspberry-et-le-kinect/ N'ayant pas encore investit dans un Jarvis (attente de compatibilité avec le kinect) j'espère vraiment que vous arriverez à le faire fonctionner :) merci a vous

Choco7 avatar Feb 27 '17 13:02 Choco7

Oups je viens de voir que ca fait doublon avec le message précedent ... dsl j'ai mal lu

Choco7 avatar Feb 27 '17 13:02 Choco7

@Choco7 according to @LengZai input it should be working. On top of this, you no longer need to adjust the mic sensitivity as I have implemented an auto-adjust process of the microphone gain that I use in snowboy & sox rec.

alexylem avatar Feb 27 '17 19:02 alexylem

Bonjour, je vais essayer de relancer la proposition de compatibilité entre jarvis et kinect car sauf erreur de ma part, le probleme d'ajustement devrait etre régler.

Et kinet v1 pourait etre une bonne solution pour jarvis (micro et camera #56 ).

D'apres mes premiers tests, kinect v1 est pris en charge nativement par le noyau linux sous raspbian: $ lsusb Bus 002 Device 003: ID 045e:02b0 Microsoft Corp. Xbox NUI Motor Bus 002 Device 004: ID 045e:02ad Microsoft Corp. Xbox NUI Audio Bus 002 Device 005: ID 045e:02ae Microsoft Corp. Xbox NUI Camera

La caméra fonctionne et est détectée parfaitement.

Par contre Alsa ne detecte pas le micro avec cat /proc/asound/cards

Je peu eventuellement pousser les tests avec ffmpeg comme l'évoquait @LengZai mais est ce que JARVIS détecterait le micro ?

Si @alexylem ou n'importe qui a une idée pour rendre le micro détectable par jarvis je suis pret à tester. :)

Erim32 avatar Jun 05 '17 22:06 Erim32

Petit retour, le probleme de: cat /proc/asound/cards est résolu, et je confirme que la modification de gain du micro fonctionne a merveille :+1: Je préparerais un script pour corriger le problème précedent mais ce n'est pas très long.

Jarvis avec Kinect v1 fonctionne parfaitement sur mon rpi-3, le micro array marche très bien même à distance (reste a vraiment mesurer). Je pense qu'une fois le script en place, je pense que @alexylem ou @wikijm pourront supprimer la mention "non recommandé" du site.

Erim32 avatar Jun 06 '17 12:06 Erim32

@Erim32 N'hésites pas à me redemander une fois le script/l'adaptation faite 😜

wikijm avatar Jun 06 '17 19:06 wikijm

Le script est fait ;-) Kinect v1 détectable par Alsa

@wikijm voila :) Pour le coût, d'occasion un Kinect v1 et l'adaptateur (usb secteur pour Kinect v1) c'est trouvable pour ~ 50€

Erim32 avatar Jun 06 '17 21:06 Erim32

A voir avec @alexylem pour soit intégrer ton script dans OpenJarvis ou faire ça sous forme de plugin (du moins, même structure mais peut-être différemment ?).

Actuellement ce qui me dérange c'est que l'utilisation de ton script est dépendant de la disponibilité de 2 dépôts :

  • http://git.ao2.it/kinect-audio-setup.git/
  • https://gist.github.com/Erim32/54c6ae429c4c834e7e969161cdc5056c (le tien)

Dans ces conditions on peut difficilement donner le statut "validé" au matériel. Je sais que je suis exigent mais j'essaie à ce que les solutions apportées au projet le soient de façon pérenne.

wikijm avatar Jun 07 '17 08:06 wikijm

@wikijm Oui effectivement plus un module d'installation lors de la configuration de openJarvis (peut être bien une nouvelle catégorie de plugin "Drivers"). Je n'ai pas fait de plugin OpenJarvis depuis longtemps il va falloir que je regarde les changements. Concernant les deux dépendences, le kinect-audio-setup.git est un projet à l'arret de depuis 2014, je ne pense pas que ça pose un problème si on copie le dépot sur le serveur qui héberge le site de openJarvis. Pour mon script, vous avez carte blanche.

Sinon l'une des solutions les plus simple est dans les prérequis de laisser un lien toujours vers le post #89 pour comprendre comment configurer Kinect v1

De plus mon script n'a pour l'instant, par manque de mini sd jamais été lancé dans des conditions réelles. Un retour d'un autre utilisateur serrait utile avant d'envisager une incorporation interne ou plugin a OpenJarvis.

Tu as tout a fait raison d'être exigent, l'exigence est critère de qualité et c'est plus que requis sur un projet de l'envergure de OpenJarvis.

Erim32 avatar Jun 07 '17 09:06 Erim32

Je vois que l'on est sur la même longueur d'onde, j'avais peur que tu le prenne mal. Ce projet amène des gens impliqués et de bonne volonté, ça fait plaisir à voir :smiley:

wikijm avatar Jun 07 '17 09:06 wikijm

Bonjour je suis tout nouveau dans le monde de Jarvis et linux J'apprends au fur et à mesure :s Mon installation domotique est terminée et j'utilise Tasker pour contrôler chez moi j'aimerais tout migrer sur Jarvis pour éviter de déverrouiller mon téléphone à chaque commande vocale N'ayant pas de Raspberry Pi j'ai installer Jarvis sur une VM en attendant l'achat du Raspberry Pi J'ai installer la Kinect grâce à ton script ( ligne de commande par ligne de commande car je sais pas faire autrement lol )tout a l'air nickel mais à la fin la Kinect n'est pas détecté mais je pense que ça vient de ma VM ou erreur de ma part en tout cas super Boulot j'essayerai de te faire un retour viable ce weekend quand j'aurai un peu plus de connaissance =)

Slevink05 avatar Jun 08 '17 08:06 Slevink05

Bonjour, merci pour ton retour ça fait plaisir :+1: Normalement kinect est détecté nativement par la commande "lsusb", ci ce n'est pas le cas la machine virtuelle simule également les ports USB. Et sans rpi je ne sais pas. Tiens moi informé de l'avancement.

Pour éviter le double post, j'en profite pour signaler que la commande de l'étape 4 est a refaire après chaque reboot, en attendant d'avoir une solution stable implémentatable.

Erim32 avatar Jun 08 '17 17:06 Erim32

Voilà mon petit retour après avoir installé Debian 8. 8 sur une vieille tour

J'ai tout recommencer à zéro et la Kinect est détecté parfaitement merci beaucoup pour ton script

Par contre je sais pas si c'est moi qui suis nul ou on peut faire autrement mais l'étape 4 je suis obligé de faire ./kinect_upload_fw /lib/firmware/kinect/UACFirmware

Et non pas

kinect_upload_fw /lib/firmware/kinect/UACFirmware

pour que ça marche il me reste juste à tout recommencer demain soir avec un Ubuntu car Snowboy n'est pas disponible pour Debian d'après ce que j'ai compris en tout cas super boulot merci pour tout

Slevink05 avatar Jun 09 '17 01:06 Slevink05

oui effectivement pas besoin du "./" je pense avoir suffisament d'info sur le fonctionnement pour débuter la création d'un plugin pour automatiser la detection par Alsa.

@wikijm Petite question, (je ne trouve rien dans la doc) est il possible de gérer les hook depuis les plugins, ou dois-je modifier le fichier en charge dans jarvis? (l'ajout serrait simple, mais la désinstallation poserait problème ...).

Erim32 avatar Jun 09 '17 10:06 Erim32

@Erim32 Très bonne question, que je t'invite à poser à @alexylem. Même si je suis dans le domaine de l'informatique, je ne suis absolument pas un développeur sur ce projet :sweat_smile:

wikijm avatar Jun 09 '17 11:06 wikijm

@wikijm Ok :smile: , comme tu supervises les issues depuis un bail, je me disais que quelqu'un l'avait déja posée. Comme tu l'as tag, j'ai pas besoin de le faire plus qu'a attendre une réponse :sweat_smile::sweat_smile:

Erim32 avatar Jun 09 '17 11:06 Erim32

Désolé pour le double post, en attendant une réponse de @alexylem , j'ai fait un premier prototype ⚠️ en Beta ⚠️ qui devrait fonctionner mais je n'ai plus mon rpi sous la main 😅 @Slevink05 Il suffit d'installer le plugin depuis le store: ici n'hésitez pas à me faire un retour. 😄

Erim32 avatar Jun 10 '17 10:06 Erim32

Le plugin s'installe sans problème mais il faut quand même que je refasse l'étape 4 pour que la Kinect soit prise en compte mais je suis vraiment pas un bon exemple car je découvre tout juste Jarvis et Linux

Donc il se peut qu'il y a pleins d'erreurs de ma part et pour l'instant j'ai un souci avec la détection de commande dans Jarvis il détecte bien le mot clé mais quand je lance une commande il ne se passe rien Avec Jarivs -v J'obtiens : Jack servet is not running or cannot be started

J'ai essayé d'installer le paquet "jackd2" mais rien ne change impossible d'effectuer la commande "Jack_controle start" ça vient peut-être de ma version d'Ubuntu qui est pas fait pour Il me faut il me faudrait un Raspberry Pi pour te donner des retours viables je pense

Slevink05 avatar Jun 10 '17 14:06 Slevink05

Normalment ça devrait marcher même sous Ubuntu, peu tu me faire un petit comparatif de la commande cat /proc/asound/cards

  • Avant de lancer Jarvis.
  • Pendant que jarvis tourne, avec le plugin (tape la dans un second terminal)
  • Apres l'execution de Jarvis (avec le plugin installé bien évidement).

Merci pour tes retours @Slevink05 tu m'aide beaucoup. :smile:

Erim32 avatar Jun 10 '17 18:06 Erim32

Je viens de tester sur mon rpi, la capture du son a longue distance est excellente (à tel point qu'au début snowboy écoutait les réveils dans la pièce).

Mais la reconnaissance des commandes provoque un timeout mais je ne pense pas que ça vienne de kinect. Message d'erreur.

utils/timeout.sh 10 python recorders/snowboy/main.py 27 /dev/shm/jarvis-record.wav

Un idée ?

Erim32 avatar Jun 12 '17 13:06 Erim32

Désolé Erim j'ai pas arrêté du weekend et cette semaine est charger au travail Mais j'ai la même erreur que toi pour les commandes ça me provoque un timeout Lance un : Jarvis -v Je pense que tu auras la même erreur que moi expliquer au-dessus Pourrais-tu me donner ta configuration de la Kinect avec les gain ( sensibiliter , ect) Car je trouve qu'il faut que je sois un vraiment près de la Kinect pour qu'elle reconnaisse ma voix merci pour tout à partir de mercredi je reprends ma passion =)

Slevink05 avatar Jun 12 '17 14:06 Slevink05

salut , pour le plugin kinect, il semble y avoir des drivers plus récent : https://github.com/OpenKinect/libfreenect https://openkinect.org/wiki/Main_Page

doodz avatar Jun 13 '17 13:06 doodz

@Slevink05 Je te preparerais un zip complet de mon jarvis d'ici quelques jours pour la config. @doodz J'avais vu mais je ne suis pas arrivé a le faire fonctionner, si tu y arrive n'hésite pas a me partager l'explication pour voir comment l'automatiser dans le plugin.

Erim32 avatar Jun 15 '17 12:06 Erim32

Bonjour @Erim32

Une avancée concernant tes actions ?

wikijm avatar Jul 23 '17 07:07 wikijm

@wikijm Pas trop eu le temps avec mon job d'été, je reprend ça le premier week end d'Août normalement. Mais sans trop m'avancer, je pense que l'ajout de comande dans le fichier des commandes à executer au démarrage de Jarvis n'est pas une solution stable. Car soit le systeme audio est de Jarvis est deja initialiser avant d'executer les commandes du fichier donc le fix que j'avais imaginé ne devrait pas fonctionner. Donc je reprendrais les tests pour voir une intégration "stable" à jarvis mais ça demanderait l'ajout de commande de pré-initialisation pour des gestions hardware de jarvis par @alexylem. Sinon pour une utilisation plus classique il faut que je partage mes configs pour la detection par kinect .... Bientot 😃

Erim32 avatar Jul 26 '17 11:07 Erim32

De retour comme promis, voici mes paramétrés @Slevink05 (désolé pour l'attente). param1_kinect

Après avoir passé le week-end à chercher, je confirme pas possible d'automatiser l'initialisation hardware de kinect sans toucher au "core" de jarvis, l'initialisation de kinect doit etre faites avant celle de pulse audio pour qu'il puisse détecter le périphérique. Sans une modification de @alexylem dans JARVIS, je ne vois pas comment l'automatiser. :disappointed:

Erim32 avatar Aug 06 '17 19:08 Erim32

Bonjour j'ai un problème à l'installation du plugin ,je n'arrive tout simplement pas à l'installer et ensuite quand j'essaye de faire l'installation manuellement j'obtient 2erreurs je suis sur rpi modem 3B si quelqun a une solution je suis preneur

Jeyson2001 avatar Aug 30 '17 14:08 Jeyson2001