LinuxCNC – Contrôler la machine avec in joystick ou une manette de jeu

Utiliser une manette ou un joystick pour contrôler linuxcnc

Voici la suite de la série sur LinuxCNC

On peut vraiment tout faire avec Linux, y compris détourner l’utilisation première de certains matériel. J’avoue que c’est un peu du gadget, mais c’est tellement pratique que ce serait dommage de s’en passer.

Dans l’atelier, le clavier n’est pas vraiment nécessaire, la plupart des actions se font à la souris. De plus, clavier et poussière ne font pas forcément bon ménage et le clavier prend de la place là où on en manque toujours…

L’idée est de remplacer (au moins de l’avoir en parallèle) le clavier par une commande moins imposante pour contrôler la CNC.
Et puis ça fait tellement geek et futuriste de piloter la machine avec un joystick que je vois l’admiration et le respect s’allumer dans les yeux des spectateurs qui me voient leur créer les pièces demandées, un peu comme si je pilotais la navette spatiale. Priceless!

Tout d’abord, il vous faudra une manette ou un joystick de jeu, de préférence USB. Cherchez dans les occasions si vous n’en avez pas, faites le tour des dépôts ventes ou sur le bon coin, mais on en trouve entre 2 et 10 €, selon l’état et le modèle. On trouve même des adaptateurs pour mettre en USB la plupart des manettes, cherchez sur la baie ou amazon.

J’utilise un joystick Microsoft SideWinder Precision 2 (acheté chez cashtruc pour 5 €) qui a un fil de 2m de long, ce qui est très bien pour déplacer le joystick à l’endroit voulu. En plus il a plein de boutons qui me permettent de paramétrer ce que je veux dessus.
Autant je suis très critique sur les logiciels estampillés Microsoft, autant je considère les matériels portant cette marque comme solides et fiables, mais c’est mon avis personnel.
On peut aussi utiliser des manettes sans fil, ce que je faisais au début, mais la baisse de puissance des piles ou des parasites amènent des problèmes dans la commande de la machine. C’est suffisamment risqué pour que je vous le déconseille, rien de tel que les fils.


Le joystick dans le bureau pour la rédaction de ce tuto.

==== Installation du logiciel de contrôle ====

Il va falloir installer auparavant une dépendance afin que le logiciel fonctionne correctement. Pour cela, il va falloir ajouter un dépôt au système.
– Ouvrez le gestionnaire de paquets Synaptic (Applications/Système/Gestionnaire de paquets synaptic)
– Allez dans le menu Configuration/Dépots
– Cliquez sur l’onglet Other Software
– Cliquez sur le bouton Add
– Entrez la ligne suivante: deb http://http.debian.net/debian wheezy-backports main
– Validez, fermez
– Cliquez sur le bouton Recharger
– Cliquez sur le bouton de recherche, tapez libsdl2 et installez libsdl2-2.0-0 (clic droit, sélectionner pour installation). Faites la même chose pour libqt4-network
– Cliquez sur appliquer
– Fermez synaptic

Le programme permettant de mapper les touches s’appelle Antimicro. Il est disponible à cette adresse:
https://github.com/Ryochan7/antimicro/releases

Téléchargez le paquet antimicro_2.14-1.jessie_i386.deb, c’est celui qui va bien pour wheezy (votre version de Debian), et enregistrez le paquet sur votre ordinateur.

On peut l’installer graphiquement, mais je vais vous apprendre comment installer un paquet deb téléchargé avec le terminal.
– Ouvrez un terminal (Applications/Emulateur de terminal)
– tapez la commande suivante en adaptant ce qui doit l’être: sudo dpkg -i /home/votre_utilisateur/Téléchargements/antimicro_2.14-1.jessie_i386.deb (pensez à la complétion (voir dans les posts précédents) pour vous aider à taper la commande)
– Validez, entrez votre mot de passe
– Le logiciel est installé!

==== Lancement du logiciel antimicro ====

On peut lancer le logiciel au démarrage de la session. Pour cela, il suffit de créer un script de démarrage comme on l’a fait précédemment pour le serveur VNC.
Mais je préfère faire autrement, car je n’ai pas envie qu’un coup de coude dans le joystick déplace la broche par accident.

J’ouvre un terminal( Applications/Emulateur de Terminal ou clic droit sur le bureau Ouvrir un terminal ici) et je tape la commande antimicro que je valide par entrée. Si je ferme le terminal par la suite, le joystick est désactivé (et j’en suis certain). Si j’en ai besoin de nouveau, je recommence.

==== Paramétrage du joystick ====

Au lancement de antimicro, choisissez le français et validez tout par défaut; la fenêtre de configuration s’ouvre. Je ne vais pas entrer dans les détails, juste vous expliquer quelques petites choses, le reste est assez simple.
* Lorsque vous aurez créé votre configuration, sauvegardez là. Si vous n’en avez qu’une, elle sera automatiquement rechargée au démarrage du logiciel
* Testez les boutons et axes de votre manette/joystick, vous les verrez s’éclairer
* La première fois que vous lancez le logiciel, mettez à jour les manettes (CTRL+U ou menu Options). C’est important sinon des choses peuvent ne pas fonctionner.

* cliquez sur le bouton que vous voulez modifier et réglez les options
* Si vous donnez un nom (Axe X, ou Arrêt d’urgence) vous pouvez afficher les noms à la place des boutons si vous cliquez sur le bouton Noms
* Il y a des options déjà prévues pour les axes (haut/bas, ou gauche/droite, etc) Utilisez les, même si on peut les modifier autrement.

* Enregistrez votre configuration en lui donnant le nom de votre contrôleur à la racine de votre home (votre dossier personnel)
* Enfin, cachez le logiciel (ne le fermez pas, sinon il n’agira pas sur LinuxCNC) par CTRL + H
* Le logiciel est placé en haut à droite, à côté de l’heure. Un clic sur l’icone le fait réapparaître.

Personnellement, j’ai paramétré les axes X et Y sur le joystick, l’axe Z est sur la rotation du joystick, la gâchette est la touche SHIFT (avance rapide sur linuxcnc), ce qui me permet de commander toute la broche avec le joystick. Les autres boutons me permettent d’arrêter l’AU (F1), démarrer/arrêter la machine (F2), ouvrir un fichier gcode (o) et de marquer la prise d’origine de l’axe en cours (orig). Je ne me sers pas des autres boutons et axes, mais rien ne dis que je n’en aurai pas besoin plus tard. Il suffit de laisser le curseur sur un bouton de linuxcnc pour connaître la touche correspondante et la paramétrer dans antimicro.

Je n’ai pas de quoi vous faire une vidéo, mais croyez moi sur parole, ça fonctionne très bien. Maintenant, le clavier est rangé et je ne le sors que lorsque j’en ai besoin, tout le reste se fait au joystick.

LinuxCNC – contrôle par VNC

Voici la suite de la série sur LinuxCNC
L’ordinateur qui contrôle la CNC se trouve au garage, mais je ne reste pas toujours devant et mon bureau est au 2e étage. Si je veux voir l’avancement, il faut descendre 2 étages en traversant la maison, aller au garage, constater que tout va bien (ou mal) puis refaire le trajet en sens inverse.

Je vais donc vous apprendre à paramétrer votre ordinateur pour vous y connecter avec VNC
Les étapes sont:

  1. – Installation du serveur VNC sur l’ordinateur
  2. – Activation du serveur VNC
  3. – Paramétrage du serveur VNC
  4. – Lancement du serveur VNC
  5. – Lancement du serveur vnc avec la session

1-Installation du serveur

Suivez les instructions au dessus pour installer les paquets x11vnc et x11vnc-data. N’installez pas d’autre serveur vnc, il vous ouvrent une nouvelle session et vous ne verrez pas celle qui est en cours sur la machine CNC.
Vous pouvez aussi ouvrir un terminal (applications/Accessoires/Terminal) et taper la commande suivante, ce qui revient au même:

sudo aptitude install x11vnc x11vnc-data

2-Activation du serveur

Il faut autoriser les connexions entrantes vers la session graphique. Nous allons modifier un fichier que nous avons déjà modifié pour la connexion automatique. Mais maintenant, nous allons le lancer en ligne de commande.
Dans le terminal, tapez (ou copiez collez avec la molette, voir au dessus) la commande suivante:

sudo geany /etc/lightdm/lightdm.conf

Ce qui demande d’ouvrir en root (le sudo) avec geany le fichier /etc/lightdm/lightdm.conf
En bas du fichier, décommentez et modifiez les lignes sous [VNCServer] pour obtenir ceci:

[VNCServer]
enabled=true
port=5900
width=1024
height=768
depth=8

Notez le true à la place du false. Ne modifiez pas les valeurs pour l’instant. Sauvegardez le fichier et fermez geany.

3-Paramétrage du serveur VNC

L’ordinateur qui contrôle ma CNC est sur mon réseau local, qui n’est pas accessible depuis l’extérieur par VNC, je pourrai donc me permettre de ne pas mettre de mot de passe. MAIS, je n’ai pas envie que quelqu’un, en local ou à distance, s’amuse à démarrer la broche pendant que je change une fraise! Donc, nous allons mettre un mot de passe au serveur VNC qui n’autorisera pas les connexions sans celui ci.

Ouvrez un terminal, ou réutilisez celui ouvert, et tapez la commande suivante (validez par entrée):

x11vnc -storepasswd

Il vous demande ensuite quel mot de passe vous désirez mettre. Il n’affiche pas les retours de frappe, c’est normal, alors concentrez vous sur le mot de passe. Validez à chaque fois, et les messages suivant. Le mot de passe sera stocké dans /home/votre_login/.vnc/passwd.

4-Lancement du serveur

Dès maintenant, nous allons pouvoir lancer le serveur, mais pour éviter d’avoir à retaper une longue ligne de commande à chaque fois, nous allons l’enregistrer dans un fichier.
Dans le terminal, entrez la commande suivante:

geany /home/votre_login/serveur_VNC.sh

Remplacez votre_login par le login de l’utilisateur sur l’ordinateur.
Copiez le code suivant dans le fichier, puis enregistrez:

#!/bin/bash
x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/manu/.vnc/passwd -rfbport 5900 -shared

On demande de lancer le serveur vnc (x11vnc) avec les options d’authentification invité (-auth guess) qui tournera en permanence (-forever) en local (-loop) et ne plantera pas si une application graphique se crash (-noxdamage) et se ralancera (-repeat) en utilisant les mots de passe stockés dans le fichier (-rfbauth /home/manu/.vnc/passwd) sur le port donné (-rfbport 5900) en session partagée (-shared).
Vous voyez qu’on peut paramétrer finement le serveur…
Enregistrez et fermez geany.

On va donner l’autorisation à ce fichier d’être lancé comme un programme en tapant la commande suivante dans le terminal:

chmod +x /home/votre_login/serveur_VNC.sh

C’est fait, vous venez de créer votre premier script! Vous pouvez le lancer pour tester l’accès VNC depuis un autre ordinateur par la commande:

bash /home/votre_login/serveur_VNC.sh

Plein de choses s’affichent dans la console: ce sont les logs du serveur VNC qui vous tient au courant de tout ce qui se passe. En cas de problème, il indique ce qui s’est passé et pourquoi.
Allez sur un autre ordinateur et lancez une visualisation VNC. Je vous laisse trouver tout seul un client VNC pour votre ordinateur. Comme on est en réseau local, montez la profondeur de couleur au maximum, ainsi que la qualité.

Notez que si vous lancez dans un terminal la commande x11vnc sans les options, vous aurez accès sans mot de passe au serveur VNC, mais dès que vous fermerez la connexion, le serveur s’arrêtera et vous ne pourrez plus vous y reconnecter.

Arrêtez le serveur VNC par CTRL+C ou en fermant le terminal dans lequel il est lancé.

5 – Lancement automatique du serveur VNC avec la session

Actuellement, il faut lancer le script manuellement pour pouvoir se connecter à l’ordinateur CNC. Pas très pratique quand on est déjà en haut et qu’on a oublié de le faire…

On va le faire graphiquement.
Allez dans le menu Applications/Paramètres/Session et démarrage. Dans l’onglet Démarrage automatique cliquez sur le bouton Ajouter.
Une fenêtre vous demande les détails:

  • – Le nom: vous mettez ce que vous voulez. Mettez un truc parlant comme « Serveur VNC »
  • – La description: Libre aussi, mais soyez précis, ça aide par la suite. « Lancement du serveur VNC au démarrage de la session »
  • – La commande: cliquez sur le petit dossier à droite du champ et naviguez jusqu’au script que vous avons créé. Vous le trouverez dans votre_login puisque c’est là qu’on l’a placé. Une fois le fichier validé, vous devriez avoir /home/votre_login/serveur_VNC.sh.

Validez la fenêtre, fermez tout et redémarrez. Vous pouvez désormais vous connecter au serveur, voir ce qui s’y passe et agir sur la session ouverte.

Linux CNC – Ajouter un panneau supplémentaire à Axis

De base, l’interface d’Axis suffit pour la plupart des opérations. Je vais vous montrer comment ajouter un panneau avec des boutons qui peuvent vous simplifier la vie.
Nous allons modifier les fichiers correspondant au paramétrage de votre machine mais si vous relancez stepconf par la suite, vos modifications seront perdues. Sachez que, en général, une fois la machine paramétrée, il est plus simple d’aller modifier directement le fichier de configuration que de passer toutes les étapes de l’assistant. Donc on ne relance plus stepconf après quelques semaines d’utilisation.

Nous allons le relancer une dernière fois pour lui dire que nous voulons ajouter un nouveau panneau. Sélectionnez la modification de machine, sélectionnez votre machine et cochez les cases tel que sur l’image suivante lorsque vous arrivez à la partie concernée:

Allez jusqu’au bout de l’assistant.

Ouvrez maintenant geany que nous avons installé précédemment (Applications/Developpement/Geany) . Ouvrez le fichier votre_utilisateur/linuxcnc/configd/nom_de_machine/custompanel.xml

Collez le texte suivant dedans:

<?xml version='1.0' encoding='UTF-8'?>
<pyvcp>
<!-- 
Include your PyVCP panel here.
The contents of this file will not be overwritten when you run stepconf again.
-->

<labelframe text="Boutons de Jog">
      <font>("Helvetica",16)</font>

       <!-- le bouton de jog de l'axe X -->
       <hbox>
           <relief>RAISED</relief>
           <bd>3</bd>
           <button>
               <font>("Helvetica",20)</font>
               <width>2</width>
               <halpin>"x-plus"</halpin>
               <text>"X+"</text>
           </button>
           <button>
               <font>("Helvetica",20)</font>
               <width>2</width>
               <halpin>"x-moins"</halpin>
               <text>"X-"</text>
           </button>
       </hbox>

       <!-- le bouton de jog de l'axe Y -->
       <hbox>
           <relief>RAISED</relief>
           <bd>3</bd>
           <button>
               <font>("Helvetica",20)</font>
               <width>2</width>
               <halpin>"y-plus"</halpin>
               <text>"Y+"</text>
           </button>
           <button>
               <font>("Helvetica",20)</font>
               <width>2</width>
               <halpin>"y-moins"</halpin>
               <text>"Y-"</text>
           </button>
       </hbox>

       <!-- le bouton de jog de l'axe Z -->
       <hbox>
           <relief>RAISED</relief>
           <bd>3</bd>
           <button>
               <font>("Helvetica",20)</font>
               <width>2</width>
               <halpin>"z-plus"</halpin>
               <text>"Z+"</text>
           </button>
           <button>
               <font>("Helvetica",20)</font>
               <width>2</width>
               <halpin>"z-moins"</halpin>
               <text>"Z-"</text>
           </button>
       </hbox>

       <!-- le curseur de vitesse de jog -->
       <vbox>
           <relief>RAISED</relief>
           <bd>3</bd>
           <label>
               <text>"Vitesse de Jog"</text>
               <font>("Helvetica",16)</font>
           </label>
           <scale>
               <font>("Helvetica",14)</font>
               <halpin>"jog-speed"</halpin>
               <resolution>1</resolution>
               <orient>HORIZONTAL</orient>
               <min_>0</min_>
               <max_>80</max_>
           </scale>
       </vbox>


       <vbox>
           <relief>RAISED</relief>
           <bd>3</bd>
           <button>
               <font>("Helvetica",20)</font>
               <width>2</width>
               <halpin>"rapid-to-home"</halpin>
               <text>"Home"</text>
           </button>
       </vbox>

   </labelframe>

<labelframe text="Temps écoulé">
   <font>("Helvetica",10)</font>
   <hbox>
       <relief>RAISED</relief>
       <bd>1</bd>
           <label>
               <text>"Time:"</text>
               <font>("Helvetica",10)</font>
           </label>
       <u32>
           <halpin>"elaps_hour"</halpin>
           <font>("Helvetica",10)</font>
           <format>"02d:"</format>
       </u32>
       <u32>
           <halpin>"elaps_min"</halpin>
           <font>("Helvetica",10)</font>
           <format>"02d:"</format>
       </u32>
       <u32>
           <halpin>"elaps_sec"</halpin>
           <font>("Helvetica",10)</font>
           <format>"02d"</format>
       </u32>
   </hbox>

   </labelframe>

</pyvcp>

Sauvegardez.

Le panneau est désormais présent dans l’interface, mais il n’est connecté à rien, donc les boutons ne fonctionneront pas. On va faire la liaison entre le programme et l’interface en modifiant le fichier custom_postgui.hal. Ouvrez le avec geany et copiez le code suivant dedans:

# Inclure vos commandes HAL personnalisées ici
# Les commandes contenues dans ce fichier seront lancées après quel'interface graphique AXIS (PyVCP inclus) aura démarré.

sets spindle-at-speed true

# connecte les boutons PyVCP pour X
net my-jogxmoins halui.jog.0.minus <= pyvcp.x-moins
net my-jogxplus halui.jog.0.plus <= pyvcp.x-plus

# connecte les boutons PyVCP pour Y
net my-jogymoins halui.jog.1.minus <= pyvcp.y-moins
net my-jogyplus halui.jog.1.plus <= pyvcp.y-plus

# connecte les boutons PyVCP pour Z
net my-jogzmoins halui.jog.2.minus <= pyvcp.z-moins
net my-jogzplus halui.jog.2.plus <= pyvcp.z-plus

# connecte le curseur de vitesse de jog PyVCP
net my-jogspeed halui.jog-speed <= pyvcp.jog-speed-f


net remote-rapid-to-home halui.mdi-command-00 <= pyvcp.rapid-to-home
net remote-rapid-to-home halui.mdi-command-01 <= pyvcp.rapid-to-home


# Elapsed time
# Charge le composant timer
loadrt time
# Ajoute le fil de servo
addf time.0 servo-thread
# Dès que le programme démarre, le timer se lance
net prog-is-running <= halui.program.is-running
net prog-is-running => time.0.start
# Affiche l'heure dans le paneau
net cycle-seconds time.0.seconds => pyvcp.elaps_sec
net cycle-minutes time.0.minutes => pyvcp.elaps_min
net cycle-hours time.0.hours => pyvcp.elaps_hour

C’est presque fini. Il faut maintenant dire à Axis qu’on veut utiliser ce panneau. Ouvrez avec geany le fichier votre_machine.ini. Vous constaterez que tous les réglages effectués avec stepconf y sont notés de façon simple.

Nous allons ajouter certaines choses:
Dans le section DISPLAY ajoutez une ligne PYVCP = custompanel.xml (indique à Axis d’utiliser ce panneau)
Dans la section HAL assurez vous d’avoir POSTGUI_HALFILE = custom_postgui.hal et HALFILE = custom.hal, sinon, ajoutez les lignes (commandes à lancer après Axis)
Dans la section HALUI ajoutez les lignes MDI_COMMAND = G0 Z30 et MDI_COMMAND = G0 X0 Y0 Z30 (commandes qui seront effectuées par le retour au home: en premier lieu montée de la broche à 30, puis retour à X0 et Y0 et Z30. Modifiez la valeur de Z au besoin)

Enregistrez et relancez Linuxcnc, vous devriez avoir un beau panneau fonctionnel supplémentaire.

LinuxCNC – astuces supplémentaires

Appli android pour controler linuxCNC

http://www.androidpit.fr/application/com.cncpendantforlinuxcnc.app (8.99€)

Cambam plus n’utilise pas toutes les fonctionnalités de EMC

Cambam est incapable de générer toutes les valeurs possibles des Gcodes G61/G64 pour le paramètre d’usinage global ‘Velocity mode’ et on n’atteint pas la vitesse maximale possible lors de l’usinage

Solution
Il faut ajouter un post-processeur “rapide” qui permettra d’utiliser les codes manquants.

Les post processeurs sont dans c:\Documents dans Settings\all users\application data\cambam plus 0.9.8\post.
et dans /home/votre_utilisateur/.config/CamBam plus 0.9.8/post sous Linux

Dupliquer EMC2.cbpp en EMC2-speed.cbpp, et modifier la ligne:
{$units} {$distancemode} {$velocitymode} {$cuttercomp(off)}

Pour la transformer en :
{$units} {$distancemode} {$velocitymode} P0.05 {$cuttercomp(off)}\\

Ici, la précision a été fixée à 5 centièmes de mm, ce qui est très largement suffisant pour de la gravure, mais vous pourrez avoir à trouver votre valeur pour vos besoins.

Source: http://www.usinages.com/emc2/emc2-tuto-complet-t18768.html

Exporter directement en ngc

source: http://id-conception.fr/Forum/viewtopic.php?f=24&t=1067

Voici un petit modif, qui évite pas mal de manipulation durant l’utilisation de CamBam avec LinuxCNC EMC2 (qui veut du NGC).

Dans beaucoup (Peut-être bien tous) des Tutos, il est indiqué de sauvegarder le fichier Gcode dans CamBam (Extension nc) et ensuite de le renommer sous linux avec l’extension .ngc.

Alors qu’il suffit simplement dans CamBam de faire les manipulations suivante pour que votre fichier Gcode aie automatiquement la bonne extension :

– Aller dans le menus « Outils »
– Puis sélectionner « Options »
– Aller dans la Partie « Génération du Gcode » de la nouvelle fenêtre qui c’est ouverte.
– Modifier la ligne : « Extension Gcode par défaut » en remplaçant le .nc par .ngc
– Et enfin, quitter la fenêtre, et si tout c’est bien passé, vos fichier Gcode auront directement la bonne extension.

Problème: Cambam crash avec l’utilisation de textes

Lors de l’utilisation d’options de texte, cambam se crashe. Soit lors de la demande d’utiliser du texte, soit à l’ouverture de fichier cb contenant du texte.

Le message d’erreur éventuel indique juste ./libcambam64.so

Explication
Ce problème survient quand on lance cambam par mono chemin/cambam.exe. Il ne trouve pas le fichier libcambam64.so dans son chemin. Il suffit de se rendre à l’emplacement d’installation de cambam AVANT de lancer cambam.
Solution

créer un fichier /usr/local/bin/cambam contenant le texte suivant (en admettant que cambam soit installé dans /home/manu/CamBam0.9.8):


#!/bin/bash
cd /home/manu/CamBam0.9.8
mono CamBam.exe

Rendre ce fichier exécutable par sudo chmod +x /usr/local/bin/cambam

Créer un lanceur dans /usr/share/applications/cambam.desktop contenant le texte suivant:


[Desktop Entry>
Name=Cambam
Comment=Dessiner en gcode
Exec=/usr/bin/cambam
Icon=/home/manu/CamBam0.9.8/cambam.png
Terminal=false
Type=Application
Categories=GTK;Graphics;
StartupNotify=true
X-Ubuntu-Gettext-Domain=CamBam

Attention à remplacer le nom de l’utilisateur (ici manu) par le votre dans les codes ci dessus

Revenir à la position 0 à la fin du cycle

http://www.metabricoleur.com/t1437p180-aide-cambam

Attention! Le retour de la broche à 0 peut faire des dégats à la pièce ET à la broche qui s’arrête de tourner!

Personnaliser un peu LinuxCNC

Quelques paramétrages pratiques

Suite à l’installation de LinuxCNC, on peut dores et déjà apporter quelques modifications au fonctionnement pour le rendre plus agréable.

Ajouter des logiciels

Nous allons ajouter un logiciel qui va nous servir par la suite et qui servira d’exemple pour ajouter ou supprimer des logiciels.
J’aime utiliser un éditeur de textes puissant plus évolué que le simple bloc note fourni par défaut. Sous Linux, on ne va pas chercher un logiciel sur le site de l’éditeur pour l’installer, on demande à Linux de le faire et d’installer la dernière version, point.

Allez dans le menu des applications/système/Gestionnaire de paquets Synaptic. Indiquez votre mot de passe et lisez l’explication.
Cliquez sur le bouton recharger pour mettre à jour la base des logiciels, sinon Synaptic ne saura pas où trouver les logiciels.
Cliquez sur le bouton avec une loupe pour rechercher le logiciel geany et validez.
Dans la liste qui apparait, faites un clic droit sur le premier (geany tout court) et sélectionnez Sélectionner pour installation . Descendez dans la liste et faites de même pour le paquet geany-plugins validez les logiciel associés (dépendances) qu’il est nécessaire d’installer.
Cliquez ensuite sur Le bouton Appliquer de la barre des boutons, validez le résumé avant installation et attendez. Vous venez d’installer un nouveau logiciel.
Promenez vous dans Synaptic, vous comprendrez rapidement ce qu’on peut faire pour installer des logiciels.

Pour désinstaller un logiciel, il faut faire les mêmes étapes mais Sélectionner pour désinstallation dans le clic droit.

Connexion automatique

Inutile de passer par l’écran de connexion si on est seul utilisateur de l’ordinateur. On va donc indiquer que l’on veut être connecté au démarrage. Nous allons modifier un fichier système important, une erreur peut empêcher le démarrage de votre ordinateur, faites attention.

Comme l’utilisateur n’a pas le droit d’agir sur les fichiers du système, nous allons lancer les actions en root (administrateur).
Lancez Applications/Accessoires/Terminal administrateur. Vous êtes administrateur dans ce terminal, toutes les co….eries que vous lui direz de faire, il les fera, faites attention.

Lancez le logiciel geany que nous venons d’installer en tapant geany puis entrée. Geany se lance. Ne fermez pas le terminal, cela fermerait aussi geany.
Ouvrez le fichier Système de fichier/etc/lightdm/lightdm.conf. C’est lui que nous allons modifier.
Ligne 82 environs, ajoutez les lignes suivantes:


autologin-user=manu
autologin-user-timeout=0

Bien sûr, si vous avez choisi un autre login que manu, modifiez le code en conséquence!
Enregistrez le fichier, fermez geany et le terminal, puis redémarrez. Vous serez automatiquement connecté au démarrage.

Présentation et installation de LinuxCNC

Je vais tenter ici de démystifier un peu Linux/LinuxCNC en expliquant simplement les choses de base à connaître. Par conséquent, je vais employer des raccourcis que les puristes pourront me reprocher, mais il sera toujours temps d’apporter des précisions par la suite une fois que les idées de bases auront été intégrées.
Je ne vais parler que de ce que je connais, le fraisage en CNC, n’ayant jamais fait de tournage numérique.

1- Présentation de Linux

Linux (on devrait dire GNU/Linux, mais par commodité, je ne dirais que « Linux » ici) est un système alternatif à Microsoft pour faire l’interface entre l’utilisateur et l’ordinateur.
Il est développé par une communauté d’utilisateurs, mais aussi par de grands groupes (en particulier HP et Google) qui utilisent Linux sur leurs systèmes.
Il n’existe pas UN Linux, mais une multitude. D’ailleurs, une fois que vous aurez personnalisé votre ordinateur sous Linux, vous aurez VOTRE Linux.
Son rôle est exactement le même que Windows : il sert d’intermédiaire entre vous (et votre manière de penser) et l’ordinateur (et sa logique). C’est un outil qui répond à un besoin, et par conséquent, il n’est pas si différent de Windows, puisque le besoin est le même. Par contre, il a une philosophie différente, et c’est ce qui peut perturber l’utilisateur habitué à Windows.
Comme Linux n’appartient à personne (pas de société commerciale), il n’y a pas d’impératifs de vente ; par conséquent, l’idée est de fournir le meilleur logiciel (seul ou à plusieurs) en apportant la meilleure réponse possible au besoin de l’utilisateur. Une des idées est aussi celle ci : ne faire qu’une chose, mais la faire bien.

Par contre, pour les mêmes raisons, et parce que beaucoup de développeurs travaillent sur leur temps libre (et vous savez que c’est une denrée rare), l’avancée des logiciels ou la correction de bugs peut parfois prendre un peu de temps. Par contre, une faille de sécurité mobilise l’ensemble de la communauté et le correctif apparaît dans les jours qui suivent l’apparition du programme. C’est aussi une des raisons de la solidité de Linux.

2-Les distributions Linux

Une distribution est une « base Linux » sur laquelle l’éditeur (au sens large du terme) va faire des choix à votre place pour proposer un ensemble complet et cohérent de logiciels. Un peu comme un fabriquant de voiture va choisir un châssis, un moteur, une carrosserie et des accessoires pour proposer un modèle de voiture. Beaucoup d’éléments sont commun à d’autres modèles, mais l’ensemble des choix en fait un modèle à part. Le plus grand choix, en tout cas le plus visible étant le gestionnaire de l’interface (KDE, Gnome, Mate, XFCE, OpenBox, …), ayant chacun ses avantages et ses inconvénients.
Les distributions vont intégrer tel ou tel logiciel, interface, thème, choix de fonctionnement pour être une distribution différente des autres. Parfois, on prend une distribution existante, on modifie certaines choses, on apporte d’autres choix et logiciels, et cela devient une autre distribution.

Par exemple, Ubuntu, Mint, LinuxCnc, et bien d’autres, sont basées sur Debian qui est reconnue pour sa stabilité.
Suse, slackware, Handylinux, RedHat, … sont aussi des distributions linux. Je ne parle pas des distributions basées sur BSD pour rester dans la simplicité,
Comme on peu tout personnaliser sur Linux, on trouve des distributions spécialisées pour une fonction : le développement, le hacking, les firewall, les serveurs de fichiers, les routeurs, l’automatisme, l’embarqué, …. La liste est infinie puisqu’il suffit de personnaliser Linux avec les outils désirés.

À la maison, j’utilise plusieurs distributions, adaptées au rôle que j’en attend : Debian sur mes serveur, Ubuntu sur le poste de ma femme, XBMC (maintenant kido) sur le media center, SLAX sur le poste des mes enfants, Ipcop sur le firewall, … C’est déjà adapté au besoin, il suffit de faire confiance aux choix des développeurs. Et sinon, je fais mes propres choix (et modifications).
Sur Linux, tout est personnalisable et modifiable.Tellement qu’on peut aussi lui donner l’aspect strictement identique à XP, W7 ou MacOs !

L’important est de choisir l’outil adapté au besoin. Vous n’iriez pas utiliser un couteau à la place d’un tournevis, n’est ce pas ? De même, on n’utilise pas une distribution bureautique pour commander une machine numérique, même si c’est faisable.

Sachez aussi que la ligne de commande n’est plus obligatoire avec les distributions modernes de Linux, mais c’est un outil extrêmement puissant même s’il n’est pas toujours simple à maîtriser. Prenons l’exemple d’un ciseau à bois et d’une défonceuse. Il peut paraître plus simple d’utiliser la défonceuse (force, rapidité) et que le ciseau paraisse plus simpliste. Mais si le ciseau est bien affûté (angle, finesse) et bien utilisé (angle, force appliquée, sensations) on obtient le même résultat, voire mieux qu’avec la défonceuse. La ligne de commande est un outil (parmi d’autres) qui offre un large éventail de possibilités quasiment sans limite, une rapidité et une précision terrible. Mais il n’est pas obligatoire de savoir l’utiliser, d’autres outils sont présents pour l’utilisateur.

Vous trouverez plein d’informations sur le site des cousins de QuebecOS concernant toutes les distributions existantes : quebecos.com

3-LinuxCNC

LinuxCNC est un logiciel de commande de machine numérique. Pour fonctionner, il a besoin d’une chose particulière : un noyau en temps réel.
Il en existe plusieurs, mais ils intègrent toujours les lettres RT (pour Real Time) dans leur nom.

Sur un ordinateur, même si vous avez l’impression que plusieurs chose fonctionnement en même temps (le navigateur sur youtube, le son qui sort des enceintes, l’affichage, les frappes clavier, la commande de la CNC, …) sachez qu’en fait un ordonnanceur se charge d’effectuer les tâches les unes après les autres quitte à en mettre parfois en pause un temps, certes court, mais pouvant poser problème aux machines numériques. Si l’ordinateur est occupé à traiter l’arrivée d’un nouveau mail et ne voit pas le signal de fin de course de votre machine, que pensez vous qu’il va arriver ? Pensez vous que le système d’un 747 puisse mettre en attente une commande du pilote pour actualiser le plan de vol ? Ou que les freins de votre voiture soient en pause le temps de mettre à jour les stations de radio ? Même une micro seconde ?

C’est à ça que sert le noyau en temps réel, ne pas mettre d’opération en pause et les traiter quand elle arrivent. C’est pour ça aussi que la machine qui sert à la commande ne devrait pas faire autre chose pendant le fonctionnement, voire même servir à autre chose.
Windows n’intègre pas de noyau en temps réel, il faut donc un paramétrage très fin pour éviter les problèmes (désactiver les tâches planifiées, les mises à jour, les programmes en arrière plan, les services inutiles, …). Et même avec ça, le système lui même peut décider d’autres priorités que la commande de la CNC.

Si vous installez LinuxCNC sur un Linux qui ne tourne pas sur un noyau en temps réel, le logiciel ne fonctionnera qu’en mode démo, pour éviter qu’on vienne dire que ça ne fonctionne pas et qu’un accident ne se produise. C’est la raison pour laquelle il faut faire attention lors des mises à jour afin que le noyau ne soit pas remplacé par un autre plus récent mais pas en temps réel. Mais même si ça se produit, ce n’est pas insoluble, il suffit d’être guidé une fois pour résoudre le problème seul si ça vous arrive à nouveau.

LinuxCNC est le logiciel de commande, mais ce n’est pas lui que vous voyez, c’est AXIS qui lui sert d’interface. Il en existe d’autres, mais Axis est simple et paramétrable (bon, j’admets, personnaliser l’interface d’Axis n’est pas aussi simple que ça, mais de base elle est suffisante pour tout).
LinuxCNC est accompagné d’un assistant qui vous permet de paramétrer le logiciel en fonction de votre machine (vitesse d’avance maximale, accélération, limites, …) et une fois ceci réalisé, c’est fonctionnel. Il faudra certainement affiner certaines choses, mais ça fonctionne quasiment tout de suite !

Auparavant, LinuxCNC était basé sur Ubuntu puisque c’était la distribution montante que les gens connaissaient. Mais Ubuntu s’est mis à choisir d’installer de plus en plus de choses de base pour répondre aux besoins des utilisateurs et être universelle. Par conséquent, elle s’est éloignée des besoins en commande numérique. Ce n’est pas une critique, elle est destinée aux Linuxiens débutants ou ne voulant pas mettre les mains dans le système, donc moins destinée à une spécialisation telle que la commande CNC.

La dernière version de LinuxCNC est revenue à la base de Ubuntu, à savoir Debian dont la stabilité n’est plus à démonter. Une nouvelle version de Debian sort quand elle est prête, pas à une date définie. Il se passe parfois du temps, certains logiciels ne sont pas les plus récents, mais c’est éprouvé et donc stable. Et c’est ce qu’on recherche sur une commande numérique, pas d’avoir la dernière version de flash.
Comme l’ordinateur qui va commander la CNC doit être dédié à cet usage, il est encore plus simple d’installer LinuxCNC en même temps que le système. L’image basée sur Debian wheezy installe le système (Debian) sur un noyau temps réel, LinuxCNC et Axis, soit un système de commande complet.

4-Installation de Linux

Si vous désirez installer Linux sur votre poste de travail, je vous renvoie aussi sur le site de Ubuntu et son forum où vous trouverez toute la documentation et l’assistance nécessaire, J’y suis aussi sous un autre pseudo, mais moins souvent, le temps manque pour tout faire…

5-Essayer LinuxCNC

Téléchargez l’image iso d’installation à cette adresse :http://www.linuxcnc.org/binary.hybrid.iso

Gravez l’image sur un disque ou avec une clef usb bootable (demandez à google) et démarrez votre ordinateur sur ce support.

Une fois l’ordinateur démarré, vous obtenez l’image suivante qui vous demande quel système démarrer. C’est le premier qui nous intéresse pour tester si votre ordinateur pourra faire tourner le système,

demarrage
Appuyez sur Entrée, le système se lance, plein de choses blanches s’écrivent sur l’écran noir, n’en tenez pas compte en temps normal. Sachez que si le système ne peut pas démarrer, toutes ces choses écrites permettent de savoir ce qui se passe, et donc de dépanner pour arriver à l’interface. Je trouve ça beaucoup plus pratique que Windows qui cache tout ce qui se passe.

Le système se lance dans la mémoire de l’ordinateur et tout ce que vous ferez (sauf écritures sur les disques) disparaîtra lorsque vous éteindrez l’ordinateur.
Vous arrivez sur le bureau du système LiveCD. Cela vous permet aussi de tester le système (pas pour la commande de la CNC, hein, ça reste risqué même si c’est faisable tant que l’on ne profite pas de toute la mémoire en ayant installé le système).

bureau

Ne vous inquiétez pas, lorsque le système sera installé, tout sera en français de chez nous.

Testez ce que vous désirez, mais si vous arrivez sur le bureau, vous pouvez donc installer LinuxCNC.

6-Installation de LinuxCNC

ATTENTION : si c’est votre première installation, je vous conseille de le faire sur un ordinateur dédié n’ayant aucune donnée importante sur le disque, on va tout remplacer, y compris si un windows est installé sur l’ordinateur !
Il est parfaitement possible d’installer Linux en dual boot sur l’ordinateur, mais je vais rester dans le cas général, sur une machine dédiée.

Vous pouvez vous faire la main en l’installant dans une machine virtuelle, mais vous ne pourrez pas commander de CNC depuis celle ci.

Redémarrez l’ordinateur en cliquant sur la porte de sortie en haut à gauche et cliquez sur restart. Refaites ensuite un démarrage comme précédemment, puis sélectionnez Install(Graphical) avec les flèches et validez par entrée.

Un assistant d’installation va se lancer. Utilisez la souris et cliquez sur continuer à chaque fois.
– Choisissez la langue qui vous intéresse, la région et le clavier que vous utilisez.
– Donnez le nom que vous voulez à la machine (il vous propose debian par défaut)
– Indiquez le domaine ou laissez vide
– Donnez un login qui sera l’utilisateur de la machine (obligatoire), puis l’identifiant.
– Indiquez son mot de passe (obligatoire). Il servira pour l’administration par la suite.
– Indiquez le type de partitionnement. A moins de savoir ce que vous faites, choisissez la première option (assisté – utiliser un disque entier). Attention, tout ce qui est sur le disque sera perdu !
– Validez l’application des changements sur le disque.
– Laissez le système s’installer (environ 10 minutes). Redémarrez, et c’est tout !

Redémarrez, ne touchez à rien, et vous arriverez sur l’écran de connexion suivant :

connexion

Indiquez l’identifiant et le mot de passe choisi pour l’installation en validant à chaque fois.

Lorsque le système vous demande le paramétrage du premier tableau de bord, choisissez d’utiliser les paramètres par défaut.

7-Mises à jour

Dès la connexion, le système vous informe qu’il y a des mises à jour par une petite bulle en haut à droite, et par une icône de point d’exclamation dans un triangle rouge au même endroit.
Il faut bien sûr les faire, et nous allons voir comment.

Cliquez sur l’icone triangulaire. Il vous demande votre mot de passe, puisque nous allons modifier des choses sur le système lui même. Ça évite que n’importe qui fasse n’importe quoi, même si Rémi Gauillard vient rarement dans mon atelier.

Debian vous indique les mises à jour disponibles que vous allez pouvoir installer. Utilisez l’ascenseur pour les parcourir et vérifier qu’il ne va pas remplacer le noyau, cherchez donc linux-image ou linux-kernel. Normalement, cette version basée sur Debian ne vous proposera pas de changer le noyau par une version non RT, au contraire de la version sur Ubuntu.
S’il vous propose un noyau qui ne contient pas RT dans son nom, décochez la case correspondante. Ensuite, cliquez sur Install Updates pour installer les mises à jour. Le temps dépend du nombre de mises à jour, mais cela prend en général une quinzaine de minutes, c’est très rapide comparé à d’autres systèmes.
Quand des mises à jour seront disponibles, vous serez prévenu de la même manière.

L’interface graphique que vous voyez est basée sur Xfce qui a l’avantage d’être très légère en occupation mémoire tout en restant intuitive. D’autres interfaces sont plus légères encore, mais il faut prendre le temps de les découvrir pour les apprécier. La légèreté de l’interface laisse plus de mémoire disponible pour le système et la commande de la CNC, ce qui est le but recherché. Si vous voulez encore plus léger, renseignez vous sur OpenBox.

Vous avez désormais un ordinateur tournant sous Debian Linux qui vous donnera un aperçu de ce qu’on peut faire sous linux. Gardez en tête que cette version est destinée à faire fonctionner une CNC et que si vous n’arrivez pas à faire quelque chose (genre installer un jeu), c’est que vous n’êtes pas sur un système destiné à être un poste de travail. Tournez vous vers l’installation d’une Debian ou Ubuntu classique avant de décider que Linux ne fonctionne pas ou que c’est compliqué.

8-Paramétrage de LinuxCNC

Le paramétrage dépendra de la machine que vous avez à commander, c’est à vous de connaître les paramètres à appliquer. Je vais vous montrer celui correspondant à MA machine.

Allez dans le menu des applications en haut à gauche, placez vous sur le menu CNC et lancez le programme Latency Test permettant de connaître la latence de votre ordinateur. Celle ci dépendant de beaucoup de paramtètres, elle est propre à chaque ordinateur.
Cette valeur permettra à LinuxCNC de savoir à quel moment envoyer les commandes avant le moment voulu pour qu’elle arrive exactement quand il faut.
Commencez par faire un reset des statistiques puis utilisez abusivement l’ordinateur, déplacez des fenêtres à travers l’écran, surfez sur le web, faites tourner plein de programmes pour occuper votre PC. Notez ensuite la valeur la plus élevée de Max Jitter qui nous servira pour la configuration de LinuxCNC.

Si vous souhaitez commander un tour numérique, vous devrez ensuite utiliser LinuxCNC Pncconf Wizard, mais je m’arrêterai là pour l’aide à vous apporter n’ayant pas de tour.

Si vous avez une fraiseuse numérique, vous utiliserez LinuxCNC Stepconf Wizard. Il est en anglais, mais c’est assez simple à configurer.
Cliquez sur start à la première fenêtre pour commencer la configuration.
stepconf1

A partir d’ici, vous pouvez créer une nouvelle configuration (Create new configuration) ou modifier une configuration déjà existante (Modify a configuration).
Laissez les cases du bas cochées, cela vous créera une icône directement sur le bureau, ce qui sera plus pratique pour lancer Axis avec votre configuration. Cliquez sur Forward (suivant).

stepconf2

– Donnez un nom à votre machine (par exemple fraiseuse1)
– Sélectionnez le nombre d’axes que vous avez sur cette machine. Dans mon cas XYZ.
– Indiquez votre unité de mesure (inch ou mm)
– Indiquez vos drivers de moteur pas à pas. S’ils ne sont pas présents, choisissez Autre et renseignez – les champs nécessaires, les infos étant disponibles avec vos drivers.
– Dans base period maximum jitter, indiquez la valeur relevée précédemment, ou relancez le test en cliquant sur le bouton Test base period jitter.

stepconf3

Paramétrez les sorties du port parallèle. Les choix de droite permettent de paramétrer les entrées depuis la CNC vers le port parallèle, souvent utilisées pour les fin de courses, les origines ou l’arrêt d’urgence (pin 10 dans mon cas)

stepconf4

Laissez tel quel pour l’instant, cochez la case du bas pour qu’il vous informe à l’écran quand un changement d’outils est nécessaire.

stepconf5

Ici nous allons régler chaque axe de la machine. Indiquez le nombre de pas par tour de votre moteur (200 pour moi), les micropas du driver (16 dans mon cas), le rapport des poulies (1:1 s’il s’agit d’une vis), l’avance par tour de moteur (1,5mm dans mon cas).
La vitesse et l’accélération maximum sont à définir en cliquant sur le bouton Test Axis

stepconf6

Vitesse et accélération pourront (dans une certaine variation) être changées pendant le test. Utilisez les flèches du jog pour déplacer votre axe a mi-course.
Modifiez la valeur de test Area pour faire la moitié de la course de votre axe puis cliquez sur Run. L’axe va faire des aller retour sur la longueur que vous avez indiqué. Vous pouvez modifier la vitesse et l’accélération jusqu’au maximum où vous perdez des pas. Diminuez ensuite et gardez une marge de sécurité puis cliquez sur Valider. Les valeurs retenues sont copiées dans les champs correspondants.

Affinez les réglages sur toute la course de la machine pour vous assurer que tout va bien.
Si l’augmentation ou la diminution des valeurs pendant le test n’est pas assez importante (il bloque et on ne peut plus aller au-delà), validez et recommencez le test, la butée précédente devient la valeur de départ à faire varier. C’est difficile à expliquer, mais vous comprendrez en le faisant.
Entrez les dimensions de votre axe, l’emplacement des fin de courses si vous en avez défini à l’étape précédente et passez à l’axe suivant.

Effectuez la même chose pour tous les axes.

stepconf7

Sur la dernière fenêtre, vous pouvez régler la commande de broche. Je ne l’utilise pas et je ne serai pas d’une grande aide sur ce point. Rabattez vous vers google.

Validez la dernière étape et vous avez sur le bureau une icône qui s’appelle lancer le_nom_de_machine_choisi. Double cliquez dessus pour lancer Axis.

linuxcnc_machine

9-Utilisation d’Axis

Il se peut que vous ayez des messages d’erreur au démarrage. Comme c’est le premier lancement, n’en tenez pas compte et fermez les.

Axis

– Au lancement, la machine est en arrêt d’urgence (icône rouge en haut à gauche). Cliquez sur l’icone pour débloquer l’AU ou appuyez sur F1.
– La machine est arrêtée (deuxième icône en haut à gauche). Cliquez dessus pour activer la communication ou appuyez sur F2.
– Allez chercher votre fichier Gcode en faisant fichier/ouvrir ou directement la lettre O (comme Ouvrir). Un premier fichier gcode d’exemple est chargé au démarrage pour que vous puissiez faire des essais.

Placez votre nez de broche à l’endroit voulu en utilisant les flèches du clavier (gauche droite pour X, haut bas pour Y, page up/ page down pour Z). Une fois à la position désirée, cliquez sur le bouton POM des axes, en cochant l’axe à chaque fois. Pour vous déplacer en vitesse rapide, appuyez sur SHIFT(majuscule) avant d’utiliser les flèches de direction.

Vous pouvez vous déplacer dans la vue en cliquant dessus avec les boutons gauche, clic molette et droite de la souris, je vous laisse trouver comment ça fonctionne.

Naviguez dans les menus, si vous avez déjà utilisé une CNC, vous comprendrez à quoi ils servent. Si c’est votre première fois, faites des tests, mais soyez prudent.

Cliquez sur le bouton Play (la flèche bleue) pour lancer l’usinage.

Toute la doc de LinuxCNC en français se trouve ici :http://www.linuxcnc.org/docs/html/index_fr.html

Elle n’est pas forcément à jour mais elle est complète et répondra à toutes vos questions. Si ce n’est pas le cas, demandez de l’aide sur les forums ou utilisez google, c’est ainsi que j’ai démarré avec LinuxCNC et la CNC.

Votre machine est désormais une Debian wheezy faisant tourner le gestionnaire de fenêtres Xfce4. Utilisez ces mots clefs lors de votre recherche.