Viewing 9 reply threads
  • Author
    Posts
    • #7441
      lecagnois
      Participant

      Leçon SIX pour débutant

      Correction de l’exercice de la leçon numéro 5

      Dans le programme principal (inmoov.py) , il fallait ajouter

      ear.addCommand(“action “, “python”, “action”)

      Et voici un exemple de sous programme à créer un peu plus pas

      def action():
        	tetedroite()
        	sleep(2)
       	 tetegauche()
        	sleep(2)
        	biceps()
        	sleep(2)
        	compte123()
        	sleep(2)
       	 bras()
        	sleep(2)
        	fermelamain()
        	yeux()

      Effectivement une procédure peut appeler d’autres procédures, ici tetedroite , tetegauche , etc……

      Evidement le nom des procédures dépends de se que vous avez crée

      MAINTENANT On se dit si je continue comme cela mon programme va faire 50000 lignes et il va devenir une usine à gaz.

      On va donc simplifier tout cela.
      Notre ami Anthony a prévu un répertoire de travail.
      ……/InmoovScript/inmoovGestures/

      Créer un fichier geste.py et un autre ordre.py

      Vous avez compris que dans le premier nous aurons les scénarios des gestes et dans l’autre les ordres vocales

      Exemple du contenu du fichier ordre.py

      # commande vocales 
      ear.addCommand("ouvre", "python", "fingeropen")
      ear.addCommand("ferme", "python", "fingerclose")
      ear.addCommand("milieu", "python", "fingermiddle")
      ear.addCommand("compte", "python", "compte123")
      ear.addCommand("droite", "python", "tetedroite")
      ear.addCommand("gauche", "python", "tetegauche")
      ear.addCommand("regarde", "python", "yeux")
      ear.addCommand("bras", "python", "bras")
      ear.addCommand("biceps", "python", "biceps")
      ear.addCommand("action", "python", "action")
      ear.addCommand("regarde le ciel", "python", "ciel")
      ear.addCommand("bonjour", "python", "bonjour")

      Exemple du contenu du fichier ordre.py

      def ciel():
       	i01.head.attach()
       	 i01.setHeadSpeed(0.6, 0.6)
        i01.head.neck.moveTo(180)
       	 sleep(3)
       	 talkBlocking("whaaaaaaa.. toutes ses aitoiles")
       	 i01.head.detach()
      
        
      def bras():
        	i01.leftArm.attach()
        i01.setArmSpeed("left", 0.80, 0.80, 0.80, 0.85)
       	 # parametres biceps , rotate, bras ,omoplate
       	 talkBlocking("je tourne mon bras")
       	 sleep(5)
       	 i01.moveArm("left",30,100,180,0)
       	 sleep(5)
        talkBlocking("je leve mon bras")
       	 sleep(5)
        	i01.moveArm("left",60,90,160,0)
        	sleep(5)
       	 # position initiale
        	talkBlocking("je decend mon bras et le tourne")
       	 sleep(3)
        	i01.moveArm("left",0,75,180,0)
        	sleep(2)
        	i01.leftArm.detach()
        
      def biceps():
       	 i01.leftArm.attach()
       	 talkBlocking("je leve mon biceps")
       	 sleep(5)
       	 i01.moveArm("left",85,75,180,0)
       	 sleep(2)
       	 i01.leftArm.detach()
      
        
      def action():
        	tetedroite()
        	sleep(2)
       	 tetegauche()
       	 sleep(2)
       	 biceps()
        	sleep(2)
        	compte123()
        	sleep(2)
       	 bras()
        sleep(2)
       	 fingerclose()
       	 yeux()

      ETC………………je liste pas tous les sous programmes

      MAINTENANT comment MRL va faire pour chainer tout cela

      Bien dans le fichier inmoov.py nous aurons seulement les commandes principale de lancement plus l’execution de nos programme grâce a la commande execfile

      Exemple :

      version='0.2.2'
      mrlCompatible='1930'
      
      webgui = Runtime.create("WebGui","WebGui")
      webgui.autoStartBrowser(False)
      webgui.startService()
      
      # Then start the browsers and show the WebkitSpeechRecognition service named i01.ear
      webgui.startBrowser("http://localhost:8888/#/service/i01.ear")
      # Main inmoov service declaration
      i01 = Runtime.createAndStart("i01", "InMoov")
      
      ##############
      # robot checkup and initialisation ( skeleton & services)
      RuningFolder="InmoovScript"
      execfile(RuningFolder+'/system/InitCheckup.py')
      
      #Allez plus loin! Et codez votre propre script dans un fichier séparé
      execfile(RuningFolder+'inmoovCustom/ordre.py')
      execfile(RuningFolder+'inmoovCustom/gestes.py')

      Relancer votre Inmoov normalement tout doit marcher comme avant.

      Au prochain tuto nous apprendrons a nous servir des instructions conditionnelles.

      Attachments:
      You must be logged in to view attached files.
    • #7451
      anthony
      Moderator

      hello, quelques précisions pour simplifier
      Tu n’a pas besoin de faire un execfile ( tous les fichiers dans le repertoire gesture et inmoovvocal/ear.addcommands sont chargés automatiquement, même ceux que l’on ajoute par la suite )

      je conseil l’utilisation du fichier inmoovCustom.py plutôt que inmoov.py pour ajouter du code perso de façon pérenne ( quand tu fais une mise à jour du script, inmoovCustom.py n’est pas écrasé contrairement a inmoov.py )

      biens sure on peut faire d’autres execfile dans inmoovCustom pour ranger son code.

      qu’en pense tu

      • This reply was modified 7 years, 9 months ago by anthony.
    • #7453
      lecagnois
      Participant

      @Anthony
      Voila une précisions importante sur le fonctionnement de l’architecture .
      Vu que c’était en exemple dans le fichier de démarrage , je me disais que c’était logique.
      Je vais d’ailleurs la tester de suite .
      Merci Anthony

    • #7454
      lecagnois
      Participant

      Pour simplifier encore vu que la structure existe :
      mettre vos commandes vocales dans
      …/InmoovScript/inmoovVocal/ear.addCommand/

      et le code
      …/InmoovScript/inmoovCustom/inmoov_custom.py

      Il faudra enlever le #
      a cette ligne execfile(RuningFolder+’inmoovCustom/inmoov_custom.py’)
      dans inmoov.py

      Merci à Anthony

      • This reply was modified 7 years, 9 months ago by lecagnois.
    • #7456
      jacque
      Participant

      merci a toi lecagnois et anthony grâce à vos bons conseils et leçon mon inmoov fonctionne par contre quand celui dis ferme la main droite ou ouvre la main droite il ferme et ouvre les deux main gauche et la droite une idée

    • #7457
      lecagnois
      Participant

      @jacques

      Pour la main gauche
      i01.moveHand(“left”,0,0,0,0,0)
      Pour la main droite
      i01.moveHand(“right”,0,0,0,0,0)

      Il faut avoir déclaré le port com de ta deuxième carte Arduino.

      Normalement cela doit marcher , je peut pas tester car moi, je n’ai motorisé que le bras gauche pour le moment .

      • This reply was modified 7 years, 9 months ago by lecagnois.
    • #7461
      jacque
      Participant

      merci lecagnois pour ta réponse les deux Arduino son bien declare puisque les deux main fonctionne mais quand je dis ferme la main droite il ferme la main gauche aussi il devrait fermer que la main droite

    • #7466
      lecagnois
      Participant

      si tu peux mettre ton code pour voir

    • #7475
      jacque
      Participant

      ca fonctionne il la plus deux main gauche encore merci pour ta patience lecagnois

    • #7476
      lecagnois
      Participant

      WHAAAA super si ça fonctionne .

Viewing 9 reply threads
  • You must be logged in to reply to this topic.