1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

joystick sur emc2

Discussion dans 'EMC2 / LinuxCNC' créé par raboliot, 13 Août 2011.

  1. raboliot

    raboliot Nouveau

    Messages:
    5
    Inscrit:
    9 Août 2010
    joystick sur emc2
    salut à tous
    j'ai emc2 sur ma machine et je voudrais pouvoir la piloter avec un joystick.
    est-ce que quelqu’un aurait une documentation en français qui expliquerait comment faire ?
    car j'ai trouvé quelques infos en anglais mais cela n'a jamais marcher .
    merci d'avance pour les infos.
     
  2. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    joystick sur emc2
    Salut à tous,

    Je ne crois pas qu'il y ai une bonne âme qui l'ai fait.

    Dis nous en plus.

    Quelle version d'EMC2? Quelle documentation? Quel joystick? USB? Quel est ton fichier de configuration?

    Xavier
     
  3. Marc PELTIER

    Marc PELTIER Apprenti

    Messages:
    243
    Inscrit:
    1 Juin 2010
    Localité:
    89500
    joystick sur emc2
    Bonjour Rabiolot,

    Regarde mon post du 28 mai "Génialissime : télécommander sa CNC sans fil pour $20". Il s'agit d'interfacer sur EMC2 un accessoire de console PS3 SONY, sans fil.

    Attention, les manettes qui se vendent sur ebay sont très souvent des clones, qui ont un hardware "bluetooth" particulier. Il faut une sixaxis pour PS3 originale, de SONY.
     
  4. raboliot

    raboliot Nouveau

    Messages:
    5
    Inscrit:
    9 Août 2010
    joystick sur emc2
    salut marc.
    j'ai bien vu ton post et j'ai bien une sixaxis pour PS3 originale, et j'ai télécharger le programme qtsixa-1.5.0
    comment faire pour l'installer sur ubuntu 10.04 ?
    et je pense qu'il faut faire des paramétrages dans emc2 (2.4.6) ?
    merci d'avance pour les infos.
     
  5. ewidance

    ewidance Ouvrier

    Messages:
    256
    Inscrit:
    4 Octobre 2010
    Localité:
    Montpellier
    joystick sur emc2
    Bonjour,

    J'ai fait cette manipulation avec un joystick Saitek Gamepad P2500 USB.

    Pour l'installer sous EMC2 2.5, avec Ubuntu 10.04, j'ai utilisé la méthode décrite sur http://wiki.linuxcnc.org/emcinfo.pl?A_N ... _With_EMC2

    Voici mes notes, qui j'espère t'aideront :

    1- Brancher le Joystick et relever les id de vendor et de device avec la commande lsusb (dans un shell), ainsi que le nom exact du device qui nous servira plus tard
    exemple : Bus 002 Device 004: ID 06a3:ff0c Saitek PLC Cyborg Force Rumble Pad

    Ici, vendor = 06a3 et device = ff0c. Le nom exact du device est "Saitek PLC Cyborg Force Rumble Pad"

    2 - Débrancher le Joystick

    3 -Créer le fichier de config pour udev ( /etc/udev/rules.d/50-input-permissions.rules ), et y insérer les id de vendor et product relevés :

    SYSFS{idProduct}=="ff0c", SYSFS{idVendor}=="06a3", MODE="0660", GROUP="plugdev"

    4 - Installer la couche développement d'EMC2 (emc2-dev),
    sudo apt-get install emc2-dev

    5 - Télécharger et compiler le driver joyhandle pour emc2
    cd emc2
    wget http://wiki.linuxcnc.org/uploads/joyhandle.comp
    sudo comp --install joyhandle.comp


    6 - Rebooter et rebrancher le Joystick. Les nouvelles règles udev vont s'appliquer (celles mise en place dans le point 3)

    7 - Modifier custom.hal et y ajouter les commandes de gestion du Joystick, avec l'exemple ci dessous.
    Note importante : le 'loadusr -W hal_input -KRAL Saitek' charge le driver précédemment compilé et le lie à un Joystick dont le nom contient le mot SAITEK. A noter que pour toi, cela changera certainement, il faudra prendre l'un des mots relevés dans le nom exact du device au point 1 de cette procxédure.

    # Inclure vos commandes HAL personnalisées ici
    # Ce fichier ne sera pas écrasé si vous relancez Stepconf
    # Hal configuration file to move a cnc machine using a joypad using joyhandle component
    # Copyright 2008 Paul Willutzki <paul[at]willutzki[dot]de>
    # Licence: GPL
    # Version 3
    # This Hal-File needs the joyhandle component.
    # This uses the following formula for a non linear joypad movements:
    # y = (scale * (a*x^power + b*x)) + offset
    #
    # The parameters a and b are adjusted in such a way, that the function starts at (deadband,offset) and ends at (1,scale+offset).
    # Negative values will be treated point symetrically to origin. Values -deadband < x < +deadband will be set to zero.
    # Values x > 1 and x < -1 will be skipped to +-scale+offset. Negative scale values invert the movement.
    # With power one can adjust the nonlinearity (default = 2).
    # Default for deadband is 0.
    # Valid values are:
    # power >= 1.0 (reasonable values are 1.x .. 4-5),
    # 0 <= deadband < 0.99 (reasonable 0.1).
    # If you use high deadbands (>0.5) you need higher power values to smoothly start at (deadband,offset).
    # The additional offset component can be set in special cases (default = 0).
    # All values can be adjusted for each instance (joypad axis) separately.

    # Please take also a look at the manpages for johandle.

    # Insert the following lines in the INI-File (section [HAL])
    # HALUI = halui
    # HALFILE = joypad_V3.hal

    # Load the hal_input component that creates pins for axes and buttons
    # See man hal_input for details and finding input devices
    loadusr -W hal_input -KRAL Saitek

    # load joyhandle component and attach to threads (in this case 3 instances)
    loadrt joyhandle count=4
    addf joyhandle.0 servo-thread # x
    addf joyhandle.1 servo-thread # y
    addf joyhandle.2 servo-thread # z
    addf joyhandle.3 servo-thread # z


    setp halui.jog-speed 1500 # desired maximum jog speed mm/min

    # --Start-- These parameters ara used to set up joyhandle
    setp halui.jog-deadband 0. # important: default value is 0.2, that would override joyhandle.deadband
    setp joyhandle.0.power 4. # select nonlinearity to handele low jog values
    setp joyhandle.1.power 4.
    setp joyhandle.2.power 4. # in my case the z-axis is set up more sensitive
    setp joyhandle.3.power 4.
    setp joyhandle.0.deadband 0.2
    setp joyhandle.1.deadband 0.2
    setp joyhandle.2.deadband 0.2
    setp joyhandle.3.deadband 0.2
    setp joyhandle.0.scale -0.4
    setp joyhandle.1.scale 0.4 # negative values invert jogging
    setp joyhandle.2.scale 0.4 # in my case the z-axis is scaled to lower speed
    setp joyhandle.3.scale 0.4
    # --End--

    # connect hal_input to halui via joyhandle (in case use your own axes-names)
    net velX input.0.abs-x-position => joyhandle.0.in
    net velXout joyhandle.0.out => halui.jog.0.analog
    net velY input.0.abs-y-position => joyhandle.1.in
    net velYout joyhandle.1.out => halui.jog.1.analog
    net velZ input.0.abs-throttle-position => joyhandle.2.in
    net velZout joyhandle.2.out => halui.jog.2.analog
    net velA input.0.abs-rudder-position => joyhandle.3.in
    net velAout joyhandle.3.out => halui.jog.3.analog


    # Définition des boutons;
    #Le faire en fonction du Joytick apres avoir relevé les noms exacts des signaux HAL
    # dans "Fichier" / "Configuration de hal", déplié "halhui" puis "jog" et identifié les signaux et bouton associés
    # grace aux les changements de valeurs dans la liste. Il faut appuyer sur le bouton et regarder la "value'
    # qui change dans le transfigurateur pour identifier le signal.

    # ensuite, il faut router ce signal sur la fonction de emc2. L'arrêt de broche sera par exemple 'halui.spindle.stop'
    # Ci dessous, il sera routé sur le bouton de tir droit, alors que le démarrage de broche sera routé sur le tir gauche.
    # Adapter ensuite sur vos besoins.
    net spindleOff input.0.btn-base2 => halui.spindle.stop
    net spindleOn input.0.btn-base => halui.spindle.start



    8- Editer le fichier de configuration principal emc2 de ta machine (*.ini) et ajouter le HALUI.

    [HAL]
    HALUI = halui
    HALFILE = tb6560.hal
    HALFILE = custom.hal
    POSTGUI_HALFILE = custom_postgui.hal

    9 - tester....

    10 - Ajouter des configs dans custom_poostgui, pour assigner à tous les boutons du joy...

    Bon courage...
     
  6. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    joystick sur emc2
    +1 je confirme que la méthode du wiki marche très bien avec ma manette (Saitec P90 de mémoire), je l'utilise depuis des mois maintenant (très pratique).

    Merci Ewidance pour ce tuto.

    Bonne soirée

    Xavier
     
  7. raboliot

    raboliot Nouveau

    Messages:
    5
    Inscrit:
    9 Août 2010
    joystick sur emc2
    salut Ewidance
    et merci pour ce tuto
    la manette que j'ai ,c'est une (thrusmaster dual analog 3)
    je bug sur les fichiers custom.hal et custom_posgui.hal
    pourrais tu s'il te plait me poster tes fichiers hal et ini pour pouvoir m'en inspirer
    je pense que pour moi ce serai plus facile car je ne maitrise pas vraiment le sujet
    merci encore pour tes conseilles.

    Raboliot.
     
  8. Laurent_CNC

    Laurent_CNC Apprenti

    Messages:
    234
    Inscrit:
    26 Avril 2012
    joystick sur emc2
    Bonjour,

    Je déterre car j'ai besoin d'un petit coup de main.

    J'ai réussi en suivant ce fil à installer une manette usb achetée 5 euros :mrgreen:
    Une fois installé, j'ai suivi les instructions de Xi sur un autre poste ou on parlait de joystick analogique et j'ai facilement pu calibrer les 2 sticks centraux avec :
    jscal /dev/input/js0 -c
    Puis, j'ai fais un test via : jstest /dev/input/js0
    Ou on trouve le nom des boutons pour les paramétrer ensuite.

    Mais j'ai buté sur la définition des boutons pendant un moment.
    GRRRR, je ne comprend pas ça :
    # Définition des boutons;
    #Le faire en fonction du Joytick apres avoir relevé les noms exacts des signaux HAL
    # dans "Fichier" / "Configuration de hal", déplié "halhui" puis "jog" et identifié les signaux et bouton associés
    # grace aux les changements de valeurs dans la liste. Il faut appuyer sur le bouton et regarder la "value'
    # qui change dans le transfigurateur pour identifier le signal.

    A force de chercher, maintenant avec ces 2 lignes :
    net programPause halui.program.pause <= input.0.btn-base3 # pause par le bouton n°9 de la manette
    net programRestart halui.program.resume <= input.0.btn-base4 # redémarrage par le bouton n°10 de la manette
    La pause et sortir de pause fonctionne impecc' avec mes boutons 9 et 10 (ceux du milieu de ma manette)

    Il me faut maintenant trouver l'arrêt d'urgence et autres utiles, si vous savez ou trouver ça :?: :?: :?:

    [​IMG]


    [​IMG]


    Merci d'avance,
    L@urent
     
  9. Laurent_CNC

    Laurent_CNC Apprenti

    Messages:
    234
    Inscrit:
    26 Avril 2012
    joystick sur emc2
    GRRRR, rien à faire, je bloque sur ça :

    # Définition des boutons;
    #Le faire en fonction du Joytick apres avoir relevé les noms exacts des signaux HAL
    # dans "Fichier" / "Configuration de hal", déplié "halhui" puis "jog" et identifié les signaux et bouton associés
    # grace aux les changements de valeurs dans la liste. Il faut appuyer sur le bouton et regarder la "value'
    # qui change dans le transfigurateur pour identifier le signal.

    Comprend pas ou je dois aller pour matter ça...

    J'ais fait un test via : jstest /dev/input/js0
    J'ai le nom des boutons mais je n'arrive pas à les intégrer dans ma ligne de commande...

    exemple le bouton n°9 je le vois sous le nom de BaseBtn2 et c'est le bouton n° 8 sous jstest
    alors je met :
    net programPause input.0.BaseBtn2 => halui.program.pause # faire une pause avec le bouton 1
    dans mon custom.hal... mais j'ai une erreur en chargant linuxcnc... mais je fais quoi de pas bien :mad: :mad: :mad:

    Help please !
    L@urent
     
  10. Laurent_CNC

    Laurent_CNC Apprenti

    Messages:
    234
    Inscrit:
    26 Avril 2012
    joystick sur emc2
    net programPause halui.program.pause <= input.0.btn-base3 # pause par le bouton n°9 de la manette
    net programRestart halui.program.resume <= input.0.btn-base4 # redémarrage par le bouton n°10 de la manette

    Ca ca fonctionne ! pause et sortir de pause avec mes boutons 9 et 10 (ceux du milieu de ma manette)

    Il me faut maintenant trouver l'arrêt d'urgence par exemple

    L@urent
     
  11. xi

    xi Apprenti

    Messages:
    144
    Inscrit:
    21 Octobre 2010
    Dernière édition par un modérateur: 16 Avril 2015
  12. Laurent_CNC

    Laurent_CNC Apprenti

    Messages:
    234
    Inscrit:
    26 Avril 2012
    joystick sur emc2
    Merci Xi :-D

    J'ai essayer de regarder par là déjà...
    Je ne m'y connais pas en langage Linux... je ne fais que taper de la ligne de commande dans la majorité des cas...
    par exemple : net programPause halui.program.pause <= input.0.btn-base3
    Je pige que halui.program.pause c'est la fonction à lancer quand le bouton input.0btn-base3 est enclenché mais que signifie net programPause ?
    Le net doit signifier l'ordre d'exécuter mais programPause ??? (je n'ai pas essayé de changer ça ...)

    net programRun halui.program.run <= bouton qui va bien...
    devrait lancer le program courant donc sur le bouton de mon choix
    et le stopper par :
    net programStop halui.program.stop <= bouton qui va bien...

    Je vais aussi essayer la velocity via :
    net programVitessediminue halui.max-velocity.decrease <= bouton qui va bien...
    net programVitesseaugmente halui.max-velocity.increase <= bouton qui va bien...
    Mais de combien en combien va t'elle augmenter ???

    Pour finir, je vais essayer :
    net programArreturgent halui.estop.activate <= bouton qui va bien...

    Qu'en penses tu ?
    Merci du coup de main,
    L@urent
     
  13. vax

    vax Modérateur

    Messages:
    3 468
    Inscrit:
    5 Mars 2008
    Localité:
    Guipavas (près de Brest)
    joystick sur emc2
    :smt038 (il est où le smiley qui salue à genou ?)

    UN POST-IT UN POST-IT !

    Merci pour tout
     
  14. gaston48

    gaston48 Compagnon

    Messages:
    6 175
    Inscrit:
    26 Février 2008
    Localité:
    59000
    joystick sur emc2
    Bonsoir,

    « net » veut dire que tu crées une connection

    « programPause » est le nom que tu as donné à la variable qui va transiter dans la connection.

    (Pour visualiser sa valeur, son nom va apparaître dans la fenêtre de halmeter par exemple ....)

    C’est dans la doc :wink: , avec : halui.max-velocity.scale
     
  15. Laurent_CNC

    Laurent_CNC Apprenti

    Messages:
    234
    Inscrit:
    26 Avril 2012
    joystick sur emc2
    Salut,

    Promis, demain, j'apprend à lire...
    Je cite :
    La vitesse linéaire maximum peut être ajustée entre 0 et la valeur de la variable MAX_VELOCITY dans la section [TRAJ] du fichier ini.
    (bit) halui.max-velocity.decrease (in) - pin pour diminuer la vitesse max
    (bit) halui.max-velocity.increase (in) - pin pour augmenter la vitesse max
    (float) halui.max-velocity.scale (in) - Valeur appliquée sur le nombre de fronts montants des pins increase ou decrease en unités machine par seconde.

    J'ai viré ce qui ne m'intéressait pas directement mais en effet, Xi, l'info était devant mes yeux... (en fait j'avais lu mais rien piné... avant de relire tranquillement suite à ton message :oops: )

    Bon, ce qui m'embête encore ce sont ces (in) entres parenthèses et ou mettre le halui.max-velocity.scale (10)
    Je compte le mettre dans mon fichier .hal en dessous des 2 premiers et ainsi augmenter ou diminuer ma vitesse de 10 en 10...

    Quand j'aurais tout réglé, je ferais un fichier propre et en français pour exemple à ceux qui voudront aussi essayer.

    @+
    L@urent
     
Chargement...

Partager cette page