Génialissime : télécommander sa CNC sans fil pour $20

  • Auteur de la discussion Marc PELTIER
  • Date de début
S

Sébastien37

Ouvrier
Bonjour Marc,
Je me permets de faire un petit correctif : il ne s'agit pas d'une console Sixaxis mais d'une manette de jeu Sixaxis pour console PS3. Bref, attention à ne pas confondre "manette" et "console". :wink:
Cdt,
Seb
 
J

Julien

Ouvrier
Bonjour,
pour moi ça ressemble à la solution idéale... est ce que quelqu'un l'utilise?

malheureusement je ne comprends pas trop comment il faut l'installer, ca veut dire quoi ça?

To install all the stuff, just do:

cd /path/to/extracted/src
make
sudo make install
sudo make install-system


Comment se fait la liaison sans fil, faut il un dongle bluetooth, ou un module bluetooth sur la carte mère?
Et encore une question, est ce que les mouvements sont proportionnels?

merci de votre aide!
 
M

Marc PELTIER

Compagnon
Ce que tu écris en italique correspond à un script de Linux. C'est le monde merveilleux de Linux, mais il faut apprendre un peu...

Remarque au passage : ce post est ancien, et depuis, bien des choses sont advenues. En particulier, EMC2 a eu un héritier, MachineKit, qui est capable de s'interfacer avec tout ce qu'on peut souhaiter, y compris une tablette ou un smartphone, via un lien réseau, qui peut être WiFi, Bluetooth, Ethernet...

MachineKit peut tourner sur PC, comme le faisait EMC2, et aussi sur une micro-carte BeagleBone Black à 60€, entre autres. Mais c'est pareil, il faudra y passer un peu de temps, avant que l'investissement intellectuel ne commence à porter ses fruits...

Si tu te sens courageux, fais une recherche sur MachineKit.
 
J

Julien

Ouvrier
Pour le moment je suis plutot satisfait de linux, il fait bien son boulot. Et je manque un peu de temps pour me lancer dans un nouveau système.
Pour en revenir à l'installation de cette manette, voici ce qui est dit dans le fichier INSTALL:

QtSixA is the Sixaxis Joystick Manager
-----------------------------------

In order to build, install and use sixad/QtSixA you'll need:

1 - Compile sixad: (dev packages)
----> libusb
----> libbluetooth3
----> libdbus-1
----> libdbus-glib-1
----> libjack (optional, for sixad-jack)

2 - Use sixad:
----> bluez (recent versions are recommended)
----> libbluetooth3
----> udev (optional, automatically starts sixad when needed)

3 - Compile QtSixA:
----> python-qt4-dev[el]

4 - Use QtSixA: (all features)
----> Python-Qt4 (PyQt) .......... Interface
----> Python-DBus ................ Disconnect devices (no root)
----> BlueZ ...................... All Bluetooth stuff
----> gksu[do]/kdesu[do] ......... Root actions
----> bluez-hcidump .............. Sixaxis battery check
----> libnotify/notify-send ...... Notifications
----> xdg-utils .................. Open web pages

J'ai vérifié, tous ces paquets sont bien installés chez moi donc ça semble OK

To install all the stuff, just do:

cd /path/to/extracted/src
make
sudo make install -> pas de probleme ça a l'air de faire ce qu'il faut
sudo make install-system -> par contre la ça bloque: "Pas de règle pour fabriquer la cible install-system, Arret"

Une idée ??
 
V

vax

Modérateur
J'aime bien ce genre de déterrage, ça confirme l'intérêt de la fonction recherche ! :wink:
 
P

pailledefer

Nouveau
Bonjour,
Qu'est-ce qu'il te dit à la fin de la commade "sudo make install " ?
Tu as essyé de lancer malgré l'erreur de la dernière commande?
 
J

Julien

Ouvrier
Voila une copie d'écran, désolé pour la qualité...
1521200958-2018-03-16-12h44-16.png
J'ai bien lancé axis, mais ça n'a pas l'air de fonctionner, je ne sais pas comment on attribue les boutons, ect...
Je n'ai toujours pas compris comment se fait la liaison sans fil: est ce qu'il ne faut pas un module bluetooth, wifi ou autre sur le PC ??

Pour l'instant je l'utilise en filaire avec antimicro, qui me permet d'intercepter et d'attribuer les appuis sur les boutons. ça va mais je pense qu'on peut faire mieux : )
 
P

pailledefer

Nouveau
Oui bien sûr, il faut un dongle bluetooth. Et indiquer dans une fichier ".hal" les connexions entre le joystick et EMC2. Peut-etre essayer d'abord avec un joystick filaire...
 
J

Julien

Ouvrier
Ok donc j'ai fait quelques essais... pas si simple que présenté finalement.
Apparemment ça marche bien avec les manettes dualshock4, mais c'est beaucoup moins facile avec une dualshock3 (celle que j'ai...)
Tu aurais un exemple de la syntaxe (ou un exemple de fichier .hal) qu'il faut utiliser pour décrire les connexions entre le joystick et EMC2?
 
P

pailledefer

Nouveau
net machine_on halui.machine.on <= input.0.btn-z

machine_on = c'est le nom de la variable, on met ce qu'on veut
halui.machine.on = la sortie (pins)
input.0.btn-z = l'entrée (signaux)
Ici, "input.0.btn-z" c'est le bouton nommé Z de la manette, il commande l'activation de la machine "halui.machine.on". Il me semble que l'ordre n'a pas d'importance, input.0.btn-z => halui.machine.on doit fonctionner aussi.
Regarde aussi ici , les 4 premiers points doivent être effectués pour que ça marche.

Tu peux utiliser le soft jstest-gtk pour contrôler si ta manette fonctionne, la calibrer et savoir comment sont nommés les boutons. En suite dans LinuxCNC Machine>Hal mètre tu as toutes les entrées et sorties avec un retour temps réel.
 
J

Julien

Ouvrier
Ok alors l'identification des boutons est ok, j'ai donc fait un essai mais au lancement de Axis il n'est pas d'accord, apparament un probleme de type de variables:

la ligne de commande en question est:
net joy-x-jog halui.jog.0.analog <= input.0.abs-x-is-pos

et le message d'erreur:
custom_postgui.hal:17: Signal 'joy-x-jog' of type 'float' cannot add pin 'input.0.abs-x-is-pos' of type 'bit'

une idée?
 
P

pailledefer

Nouveau
Il faut mettre ça dans un fichier .hal mais pas custom_postgui.hal :roll:.
Soit dans le fichier lenomdetamachine.hal qui est crée par defaut soit un autre que tu crées à la main, par ex: joypadps3.hal. Et dans les deux cas l'ajouter au fichier lenomdetamachine.ini dans la section [HAL] , ex: HALFILE = joypadps3.hal
 
P

pailledefer

Nouveau
et le message d'erreur:
custom_postgui.hal:17: Signal 'joy-x-jog' of type 'float' cannot add pin 'input.0.abs-x-is-pos' of type 'bit'

Ouais en plus ça doit pas marcher ça il attend une valeur analogique alors que l'entrée est numerique. Peut-être avec input.0.abs-x-position
Sinon essaie déja avec 2 simples bouttons et l'arret/marche de la machine avant de jouer avec les déplacements.

net machine_on halui.machine.on <= input.0.btn-A
net machine_off halui.machine.off <= input.0.btn-B
 
J

Julien

Ouvrier
En fait ça me met ce message d'erreur quelquefois le fichier que j'utilise. .. que ce soit mamachine.hal ou postgui ou une fichier que je crée ... pareil
 
P

pailledefer

Nouveau
=> message 15 page 1

Et sans ajouter de variable, juste avec la ligne loadusr -W hal_input -KRAL xxx tu vois quelque chose bouger dans Hal mètre ?
 
J

Julien

Ouvrier
Sinon essaie déja avec 2 simples bouttons et l'arret/marche de la machine avant de jouer avec les déplacements.

net machine_on halui.machine.on <= input.0.btn-A
net machine_off halui.machine.off <= input.0.btn-B

ok la ça marche!
depuis un simple bouton: net joy-x-jog halui.machine.on <= input.0.btn-pinkie
ou depuis le mini joystick: net joy-x-jog halui.machine.on <= input.0.abs-x-is-pos
ça fonctionne, ouf! c'est un début.

par contre quand je veux commander un mouvement ça va pas...
je continue mes essais demain, il se fait tard
a+
 
J

Julien

Ouvrier
Finalement c'est bon... je sais pas ce que j'avais f.... mais en reprenant exactement le code qui est ici ça fonctionne!
En filaire pour l'instant.

Donc on donne la direction et la vitesse avec le joystick, et en même temps il faut appuyer sur l'un ou l'autre (ou les 2) boutons de devant pour autoriser le mouvement.
Aucun bouton = vitesse nulle
Bouton gauche = gamme de vitesse lente
Bouton droit = moyenne
Les 2 = rapide


Maintenant je voudrais pouvoir bidouiller un peu ce code pour l'adapter un peu... l'idée serait d'utiliser les touches proportionnelles pour gérer la vitesse, au lieu d'utiliser la course des joystick (c'est pas top en fait à l'usage)

Est ce que tu saurais m'expliquer grosso modo comment fonctionne ce code?

loadrt or2 count=2
loadrt mux4 count=1

addf or2.0 servo-thread
addf or2.1 servo-thread
addf mux4.0 servo-thread

# set the jog speed for the joypad again use numbers that make sense for your machine (ça ok, c'est la vitesse max de chaque gamme)
setp mux4.0.in0 0 # this one must be 0 to prevent motion unless a button is pressed
setp mux4.0.in1 25
setp mux4.0.in2 100
setp mux4.0.in3 200

# the following does the magic of setting the jog speeds (input.0.btn-joystick, input.0.btn-thumb, ... sont les boutons du joystick)
net remote-speed-slow or2.0.in0 input.0.btn-joystick
net remote-speed-medium or2.1.in0 input.0.btn-thumb
net remote-speed-fast or2.0.in1 or2.1.in1 input.0.btn-thumb2

net joy-speed-1 mux4.0.sel0 <= or2.0.out
net joy-speed-2 mux4.0.sel1 <= or2.1.out
net joy-speed-final halui.jog-speed <= mux4.0.out

mais l'histoire des 2.0 or 2.1 ... pas comprite : (
 
Haut