URL: https://linuxfr.org/users/christophe_g/journaux/linux-et-la-cnc Title: Linux et la CNC Authors: christophe_g Date: 2012年12月15日T18:28:35+01:00 License: CC By-SA Tags: cnc, cad, inkscape, blender, librecad, ubuntu et mocn Score: 109 Bonjour, En guise d'introduction, quelques mots de présentation. Passionné d'informatique et utilisateur de Linux depuis environ 2003 ( la Mandrake 9.1 ), je me suis équipé pour mon travail ( je suis artisan et je travaille le bois ) d'une petite fraiseuse numérique 3 axes. Il était pour moi hors de question de revenir sous Windows, et j'ai donc du chercher les logiciels nécessaires tournant sous Linux. Pour ceux qui ne connaissent pas ce domaine, la fabrication assistée par ordinateur nécessite 3 étapes : - La modélisation de la pièce à l'aide d'un logiciel de dessin technique 2D ou 3D. Cette étape est appelée CAD en anglais : [Computer Aided Design](http://fr.wikipedia.org/wiki/Fabrication_assist%C3%A9e_par_ordinateur). - La création des parcours d'outil, en fonction du type de matière à usiner, de l'outil utilisé, de l'état de surface souhaité, etc. Cette étape est appelée CAM en anglais : [Computer Aided Manufacturing](http://en.wikipedia.org/wiki/Computer-aided_manufacturing). - Le pilotage de la machine-outil à l'aide d'un logiciel contrôleur : donc l'usinage proprement dit. Les logiciels de ce type ne sont pas très nombreux sous Linux, mais les choses avancent doucement, et je souhaitais donner quelques nouvelles de certains d'entre eux, et faire naître, pourquoi pas, quelques vocations de contributeurs. Je ne suis pas du tout spécialiste de la [CNC](http://fr.wikipedia.org/wiki/Machine-outil_à_commande_numérique "Définition Wikipédia"), ni de l'informatique. Ce qui suit n'a donc aucun caractère exhaustif et comporte probablement quelques erreurs ou imprécisions. Il s'agit juste d'un petit état des lieux des logiciels que j'utilise ou dont je surveille le développement. Et en plus de cela, c'est mon premier journal ! Alors j'espère que vous serez indulgents ... ### La modélisation 2D - [LibreCAD](http://librecad.org/cms/home.html) est un logiciel de dessin technique 2D sous licence GPLv2, issu de la version Community 2.0.5 de [Qcad](http://www.qcad.org/en/). Qcad est un logiciel propriétaire (dont la version majeure 3.0 est sortie cet été) mais qui était disponible, dans une version plus ancienne, sous licence libre. Malheureusement la dernière version libre, la Community 2.0.5, commence à dater, et aucune nouvelle version libre ne semblait annoncée. Le premier but du fork LibreCAD était de porter Qcad 2.0.5 sous Qt4. C'est chose faite, et le développement consiste maintenant à ajouter de nouvelles fonctionnalités, telles que le support des courbes de Bézier et l'amélioration de l'outil texte, par exemple. LibreCAD est actuellement en version 2.0 alpha4, et une ou deux idées de création d'un plugin CAM semblent pointer le bout de leur nez, mais sans rien de concret pour l'instant. - [Inkscape](http://inkscape.org/) n'est pas un logiciel de dessin technique, mais un logiciel de dessin vectoriel a vocation artistique. C'est pourtant le logiciel que j'utilise quotidiennement pour tous mes dessins 2D, pour deux raisons principales : son utilisation très agréable des courbes de Bézier, et, surtout, à cause de son extension [Gcodetools](http://www.cnc-club.ru/forum/viewtopic.php?f=33&t=35) qui permet de créer les parcours d'outils directement dans Inkscape. Mais je reviendrait sur Gcodetools un peu plus bas. Malheureusement, n'étant pas un logiciel de dessin technique, il manque à Inkscape quelques fonctionnalités utiles telles que la création de parallèles, de perpendiculaires, de tangentes, ou encore le dessin des cotations. ### La modélisation 3D - [Blender](http://www.blender.org/) m'est parfois utile. Je ne l'utilise pas pour modéliser directement une pièce 3D. En revanche, il me permet de manipuler un mesh, tels que ceux issus du scan d'une pièce existante, avec la machine-outil equipée d'un [palpeur 3D](http://www.indoor.flyer.co.uk/probe.htm). - [Heekscad](http://code.google.com/p/heekscad/) est un logiciel de modélisation paramétrique basé sur [OpenCascade](http://www.opencascade.org/), et doté d'une extension CAM : HeeksCNC. Malheureusement son développement est stoppé, et il s'est toujours montré, chez moi, particulièrement instable. - [FreeCAD](http://free-cad.sourceforge.net/) est un logiciel de modélisation 3D paramétrique, basé sur OpenCascade. Il est très prometteur, et son développement est actif. La prise en main n'est pas évidente, car elle s'appuie sur différents "ateliers" offrant chacun leur propres outils. La version de développement 0.13 est actuellement en cours de stabilisation. ### Les logiciels CAM - [Pycam](http://pycam.sourceforge.net/) est un logiciel pour créer les parcours d'outils pour l'usinage de pièces 3D. Il est écrit en Python et s'avère très agréable à utiliser. Mon seul regret concerne les performances assez mauvaises sur les pièces un peu complexes, ou la RAM se retrouve vite saturée. La version stable actuelle est la 0.5.1. La future version 0.6 est une réecriture d'une partie du code pour le rendre plus modulaire et s'annonce prometteuse. Malheureusement, Pycam est développé par une seule personne, et le développement est très très lent. - Gcodetools est donc une extension à Inkscape, écrite en Python. Son fonctionnement est un peu atypique : l'outil d'usinage est créé sous forme d'un rectangle contenant ses caractéristiques en texte, on doit créer des points d'orientation pour définir l'origine et l'échelle. Objectivement, je pense que ça tient plus de la bidouille que d'un vrai logiciel et pourtant, ça fonctionne très bien c'est le logiciel que j'utilise pour créer tous mes usinages 2D. En fait, pour avoir codé 2 ou 3 bricoles pour Gcodetools, je me suis rendu compte que la faute principale en revient surtout à Inkscape, dont le sytème d'extension est assez limité : quelques outils basiques (pour la création de la fenêtre de l'extension, par exemple), et un simple accès au DOM du document SVG. La plupart des fonctionnalités internes d'Inkscape ne sont pas accessibles aux extensions. Gcodetools sera intégré dans les extensions par défaut d'Inkscape, à partir de la version 0.49, qui devrait sortie d'ici quelques semaines. - Cet automne, un projet qui semble sérieux est né pour créer un module CAM pour FreeCAD. Rien d'utilisable pour l'instant, mais plusieurs personnes dont j'ai déjà croisé les pseudos ailleurs sur net dans le petit monde de la CNC sous Linux ce sont retrouvées sur le [forum de FreeCAD](http://sourceforge.net/apps/phpbb/free-cad/viewforum.php?f=15) et le développement de l'infrastructure du module est bien entamée. FreeCAD, déjà très prometteur en tant que logiciel de modélisation, va donc visiblement être doté d'un module CAM lui aussi très prometteur ! ### Logiciel de Pilotage Dernière étape de l'usinage assisté par ordinateur, le logiciel de pilotage charge le parcours d'outil, et génère les signaux qui sont envoyés à la machine-outil. Je ne sais pas s'il existe d'autres logiciels de pilotage CNC sous Linux, mais pour ma part, je ne connais que [LinuxCNC](http://www.linuxcnc.org). Anciennement appelé EMC2, il a du [changer de nom](http://www.linuxcnc.org/index.php/english/forum/29-forum-announcements/16867-linuxcnc-the-new-name-of-enhanced-machine-control) au printemps 2011, suite à la demande d'une entreprise qui possédait les droits sur les noms EMC et EMC2. Pour pouvoir piloter physiquement une machine-outil, LinuxCNC s'appuie sur un noyau Linux temps-réel. Sans ce noyau temps-réel, il fonctionne uniquement en mode simulation. Beaucoup de changements sont en cours actuellement et LinuxCNC va bientôt supporter plusieurs types de noyaux Linux temps-réel. En effet, jusqu'à présent, LinuxCNC utilisait l'extension temps-réel [RTAI](http://www.rtai.org/), en particulier en raison de ses performances. Mais le développement de RTAI est lent, et pour l'instant, le noyau le plus récent supporté est le 2.6.38. Cela signifie que LinuxCNC, dont la distribution par défaut est Ubuntu, est bloquée, pour son LiveCD, sur une Ubuntu 10.04, qui commence à dater. Des développeurs se sont donc mis au travail afin que LinuxCNC puisse aussi fonctionner sur les noyaux temps-réels basés sur [RT_PREEMPT](https://rt.wiki.kernel.org/index.php/Main_Page) et [Xenomai](http://www.xenomai.org/). Et les premiers résultats semblent prometteurs, et laissent espérer des performances proches de celles obtenues avec RTAI. Du travail est aussi fait au niveau du support des processeurs ARM. Voilà. Si ça peut aider quelques personnes souhaitant utiliser une CNC sous Linux ou si certains parmi vous ont les doigts qui les démangent, et cherchent un projet auquel contribuer ...