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...