CNC Grande Dimension - LinuxCNC/CAM

Le montage de la machine approche de la fin. La prochaine étape est le pilotage.

Pour cela nous sommes parti sur la solution LinuxCNC qui comme son nom l’indique est une distribution Linux dédié au pilotage de machine CNC.

Les premières étapes (configuration, prise d’origine machine) ont été faite. Maintenant pour aller plus loin faut aller plus près, c’est à dire plonger dans le fonctionnement du logiciel et de ces capacités.

Pour ceux qui seraient intéressés, je conseille la lecture des docs suivant :
Manuel de l’utilisateur
Manuel de l’Intégrateur

Deux points ont retenu mon attention pour le moment :

  • L’extension à l’interface utilisateur NGCGUI
  • La section 3.5.3 du Manuel de l’Intégrateur sur les filtres qui a priori permettent d’étendre considérablement les fonctionnalités de LinuxCNC

J’ai essayé de trouver des softs pour générer du GCode et ça court pas les rues. Beaucoup sont abandonnés.

J’ai trouvé ça de potentiellement intéressant :
http://flatcam.org/ : actif, linux, libre, mais 2D seulement et principalement pour faire des PCB
https://github.com/cammill/cammill : actif, linux, libre mais 2D seulement
CamBam http://www.cambam.info/ : windows ou linux (.net), 108 €, démo de 40 sessions

Ou sinon éditeur de texte :slight_smile:

J’avais aussi fait des recherches et j’avais trouvé :

  • PyCAM, comme son nom l’indique c’est du Python, le calcul des trajectoires prend un temps infini…
  • HeeksCNC, c’est Romuald, du hackerspace du Mans qui m’avait montré celui là. Il est plutôt pas mal mais le développement est plus ou moins arrêté.
  • Path : module de FreeCAD, d’après Romuald c’est le successeur de HeeksCNC, ils sont entrain de migré beaucoup de fonction vers FreeCAD. Pouvoir les capacités de la bête une petite vidéo :

j’ai trouvé ça sur le forum de Passion Usinages :
c’est une vidéo sur l’utilisation d’un logiciel qui est laissé libre d’utilisation pour les amateurs … Pour combien de temps ? ça, rien n’est garanti :wink:
ici
FUSION 360 :
Système requis :
Apple Mac® OS® X Mavericks (10.9.5), OS® X Yosemite (10.10.5), OS® X El Capitan (10.11)Microsoft® Windows® 7 SP1 or Microsoft® Windows® 8.1, Windows® 10
CPU: 64-bit processor (32-bit not supported)
Memory: 3GB RAM (4GB or more recommended)
A DSL internet connection or faster
Disk space: ~2.5GB
Graphics Card: 512MB GDDR RAM or more, except Intel GMA X3100 cards

Un peu de pub …
c’est peut-être intéressant quand même :wink:
site

une vidéo sympa (par le même)
vidéo chaise
vidéo chaise suite

un autre sujet : l’aspiration … solution simple :
aspiration


Concernant le FreeCAD Path : absolument rien trouvé là dessus !

@pinatl, suite à notre discussion d’hier, je me suis replonger dans LinuxCNC.

J’ai un peu perdu le fil des versions installées à l’ACoLab, mais la dernière version de LinuxCNC (2.9) est basé sur Debian Bookworm (version stable actuelle).

Afin de s’éviter des problèmes de version de librairies, il me paraîtrait intéressant, si ce n’est pas déjà le cas, de passé à la 2.9.

Ton avis ?

PS : pourrais tu mettre un lien vers le script/soft que tu cherches à faire marcher ?

Sur ma machine sur laquelle je fais les tests, je suis 2.82.

Je peux faire le test en 2.9 si tu penses que ça peut aider.

Pour le lien : LinuxCNC-3D-Printing/compensation at master · scottalford75/LinuxCNC-3D-Printing · GitHub

@thomas.

Hier matin j’ai commencé à regarder si la procédure de correction du Z en fonction de la planéïté du plateau sur linuxcnc est utilisable.

J’ai commencé à créer une machine dans linuxcnc chez moi pour pouvoir tester.

J’ai eu plusieurs modules à charger mais la je bloque un peu car il me dit que le module « linuxcnc » est manquant. J’ai un peu peur de mettre la grouille sur mon pc en chargeant ce module (je ne suis qu’un béotien en linux).

alors voici ce que j’ai fait.

J’ai considéré que le module était quel que part sur mon Pc car linuxcnc fonctionne et meme tres bien.

voici le message d’erreur:

Debug file information:
Note: Using POSIX realtime
Traceback (most recent call last):
  File "compensation.py", line 27, in <module>
    import linuxcnc
ModuleNotFoundError: No module named 'linuxcnc'
./leveling.hal:215: waitpid failed python compensation
./leveling.hal:215: python exited without becoming ready
1990
Stopping realtime threads
Unloading hal components
Note: Using POSIX realtime

J’ai donc cherché ou était ce module

pierre@CNC-I5:  whereis linuxcnc
linuxcnc: /usr/bin/linuxcnc /usr/lib/linuxcnc /etc/linuxcnc /usr/include/linuxcnc /usr/share/linuxcnc /usr/share/man/man1/linuxcnc.1.gz

suivi de

$ sudo find / -name linuxcnc -print
/home/pierre/linuxcnc
/home/pierre/linuxcnc/ctbenergy-linuxcnc/share/linuxcnc
/etc/linuxcnc
/usr/share/doc/linuxcnc
/usr/share/linuxcnc
/usr/include/linuxcnc
/usr/lib/linuxcnc
/usr/lib/tcltk/linuxcnc
/usr/bin/linuxcnc

Hier j’ai vu que rajouter dans le PYTHONPATH toutes ces directories ne changeait rien sauf : /usr/lib/tcltk/linuxcnc

pierre@CNC-I5:  export PYTHONPATH=$PYTHONPATH:/usr/lib/tcltk/linuxcnc

Ca va un peu plus loin mais ca plante tout de meme et la s’arretent mes competences en Linux. Je suppose qu’il faut effectivement charger le module linuxcnc mais je ne le trouve pas.

pierre@CNC-I5:~$ linuxcnc
LINUXCNC - 2.8.2-11-g6a3d0a434
Machine configuration directory is '/home/pierre/linuxcnc/configs/leveling'
Machine configuration file is 'leveling.ini'
Starting LinuxCNC...
Found file(REL): ./leveling.hal
Note: Using POSIX realtime
config string '0xd100 0xe010 out'
Traceback (most recent call last):
  File "/usr/bin/hal_manualtoolchange", line 7, in <module>
    import linuxcnc, hal
ImportError: dynamic module does not define init function (initlinuxcnc)
./leveling.hal:207: waitpid failed hal_manualtoolchange hal_manualtoolchange
./leveling.hal:207: hal_manualtoolchange exited without becoming ready
Shutting down and cleaning up LinuxCNC...
Note: Using POSIX realtime
LinuxCNC terminated with an error.  You can find more information in the log:
    /home/pierre/linuxcnc_debug.txt
and
    /home/pierre/linuxcnc_print.txt
as well as in the output of the shell command 'dmesg' and in the terminal
pierre@CNC-I5:~$ cat /home/pierre/linuxcnc_debug.txt
2483
Stopping realtime threads
Unloading hal components
pierre@CNC-I5:~$ cat /home/pierre/linuxcnc_print.txt
RUN_IN_PLACE=no
LINUXCNC_DIR=
LINUXCNC_BIN_DIR=/usr/bin
LINUXCNC_TCL_DIR=/usr/lib/tcltk/linuxcnc
LINUXCNC_SCRIPT_DIR=
LINUXCNC_RTLIB_DIR=/usr/lib/linuxcnc/modules
LINUXCNC_CONFIG_DIR=
LINUXCNC_LANG_DIR=/usr/lib/tcltk/linuxcnc/msgs
INIVAR=inivar
HALCMD=halcmd
LINUXCNC_EMCSH=/usr/bin/wish8.6
INIFILE=/home/pierre/linuxcnc/configs/leveling/leveling.ini
VERSION=1.1
PARAMETER_FILE=linuxcnc.var
TASK=milltask
HALUI=halui
DISPLAY=axis
COORDINATES=X Y Z X Z
KINEMATICS=trivkins coordinates=XYZXZ  kinstype=BOTH
Starting LinuxCNC server program: linuxcncsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting LinuxCNC IO program: io
Starting HAL User Interface program: halui
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments

sudo dmesg (fin seulement )

[    8.213906] tpm_tis 00:08: 1.2 TPM (device-id 0xB, rev-id 16)
[    8.265846] fujitsu_laptop: ACPI: Fujitsu FUJ02E3 [FEXT]
[    8.266243] ACPI: \_SB_.PCI0.LPCB.FEXT: BTNI: [0x0]
[    8.278069] input: Fujitsu FUJ02E3 as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/FUJ02E3:00/input/input5
[    8.291627] fujitsu_laptop: driver 0.6.0 successfully loaded
[    8.292464] parport_pc 00:04: reported by Plug and Play ACPI
[    8.296555] parport0: PC-style at 0x378, irq 5 [PCSPP,EPP]
[    8.490383] PCI parallel port detected: 1415:c110, I/O at 0xe010(0xe000), IRQ 17
[    8.495956] parport1: PC-style at 0xe010 (0xe000), irq 17 [PCSPP,TRISTATE,EPP]
[    8.588597] input: PC Speaker as /devices/platform/pcspkr/input/input6
[    8.644769] RAPL PMU: API unit is 2^-32 Joules, 4 fixed counters, 655360 ms ovfl timer
[    8.644770] RAPL PMU: hw unit of domain pp0-core 2^-14 Joules
[    8.644771] RAPL PMU: hw unit of domain package 2^-14 Joules
[    8.644771] RAPL PMU: hw unit of domain dram 2^-14 Joules
[    8.644771] RAPL PMU: hw unit of domain pp1-gpu 2^-14 Joules
[    8.646627] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    8.661066] sr 1:0:0:0: Attached scsi generic sg1 type 5
[    8.661952] usbcore: registered new interface driver usbserial_generic
[    8.664399] usbserial: USB Serial support registered for generic
[    8.683888] usbcore: registered new interface driver cp210x
[    8.685562] usbserial: USB Serial support registered for cp210x
[    8.686117] cp210x 2-7:1.0: cp210x converter detected
[    8.697388] PCI parallel port detected: 1c00:3050, I/O at 0xd100(0x0), IRQ 18
[    8.698392] usb 2-7: cp210x converter now attached to ttyUSB0
[    8.702140] parport2: PC-style at 0xd100, irq 18 [PCSPP,TRISTATE]
[    8.983985] ppdev: user-space parallel port driver
[    9.074026] Adding 998396k swap on /dev/sda5.  Priority:-2 extents:1 across:998396k SSFS
[    9.082424] intel_rapl: Found RAPL domain package
[    9.082425] intel_rapl: Found RAPL domain core
[    9.082426] intel_rapl: Found RAPL domain uncore
[    9.082427] intel_rapl: Found RAPL domain dram
[    9.082429] intel_rapl: RAPL package 0 domain package locked by BIOS
[    9.082432] intel_rapl: RAPL package 0 domain dram locked by BIOS
[    9.772533] IPv6: ADDRCONF(NETDEV_UP): enp0s25: link is not ready
[    9.993034] IPv6: ADDRCONF(NETDEV_UP): enp0s25: link is not ready
[   10.019968] broken atomic modeset userspace detected, disabling atomic
[   13.027042] e1000e: enp0s25 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
[   13.027076] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s25: link becomes ready
[ 1656.854723] perf: interrupt took too long (2503 > 2500), lowering kernel.perf_event_max_sample_rate to 79750
[ 3413.233134] perf: interrupt took too long (3130 > 3128), lowering ke

Je pense que ce n’est pas le bon module qui est chargé.

Je suis entrain de monter une VM (Virtual Machine) à la maison pour pouvoir faire des tests. Je l’ai monté en 2.9

@pinatl, il doit y avoir deux version de python dans la 2.8.2.

Python2 aka python et python3 aka python3. Le script appelle python, donc le 2. Il est possible que le module LinuxCNC ne soit dispo que pour Python3.

En 2.9, ça marche ‹ Out of the Box ›.

Je suis aussi tombé sur ça.
https://linuxcnc.org/docs/html/gui/qtdragon.html#cha:qtdragon-gui

Ca à l’air bien sympa :heart_eyes: et ça intègre la calibration du plateau :star_struck:

Merci thomas. Il ne me reste plus qu a upgrader. Je vais faire ça chez moi first

@thomas, est ce bien celui la que tu as testé?

Debian 12 Bookworm PREEMPT-RT ISO

Oui c’est bien celle là.

encore besoin de toi thomas

Quand tu dis ca marche out of the box, c’est quoi qui marche?

effectivemen t je vait plus loin dans le demarrage de linuxcnc (machine = sim.axis de base) mais :

COORDINATES=X Y Z
KINEMATICS=trivkins
Starting LinuxCNC…
Starting LinuxCNC server program: linuxcncsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting LinuxCNC IO program: io
Starting HAL User Interface program: halui
linuxcnc TPMOD=tpmod HOMEMOD=homemod EMCMOT=motmod
Found file(lib): /usr/share/linuxcnc/hallib/core_sim.hal
Shutting down and cleaning up LinuxCNC…
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments

Debug file information:
Note: Using POSIX realtime
/usr/share/linuxcnc/hallib/core_sim.hal:52: execv(python): No such file or directory
/usr/share/linuxcnc/hallib/core_sim.hal:52: waitpid failed python compensation
/usr/share/linuxcnc/hallib/core_sim.hal:52: python exited without becoming ready
4884
Stopping realtime threads
Unloading hal components
Note: Using POSIX realtime

C’est quoi qui est no such file or directory?

python3 marche

pierre@CNC-I5:~/linuxcnc/configs/sim.axis/hallib$ python3
Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux
Type « help », « copyright », « credits » or « license » for more information.

mais pas python

python
bash: python : commande introuvable

si je fais alias python=python3 j’ai la meme erreur dans linuxcnc

C’est normal que python ne fonctionne pas. Il n’y a plus de Python2 dans Debian 12.

Je ne m’explique pas l’erreur que tu obtiens au lancement de LinuxCNC.

Ce que j’ai fait :

  • Install de LinuxCNC dans une VM (fichier ISO source : LinuxCNC_2.9.2-amd64.hybrid.iso)
  • Lancement de LinuxCNC en passant par Application>CNC>LinuxCNC
  • Selection d’une machine depuis les configurations exemples.
  • Validation de la selection : OK
  • Validation des questions suivantes
    Résultat

Je n’ai pas essayé de lancer le script que tu as trouvé. J’ai juste lancé LinuxCNC de base.

Je serais à l’ACoLab cet après midi, si tu as le temps de passer, on pourra en discuter.

Ah oui linuxcnc 2.9.2 sans le script, pas de problème. C est une fois le script démarre que ça se corse. Je ne pourrai pas passer a l acolab cette aprem ou alors sur le tard.

Envoyé à partir de Outlook pour Android

L’alias ne doit marcher que dans le terminal en cours.

Tu peux essayer sudo ln -s /usr/bin/python3 /usr/bin/python pour faire un lien symbolique entre les deux noms. Par contre si le script n’est pas écrit pour du Python3, il va y avoir d’autre problème.

As tu jeter un oeil à ce qui était intégré dans l’interface de qtdragon_hd de LinuxCNC. La compensation de plateau est intégré et utilise le même logiciel (gcode_ripper) en arrière plan.
https://linuxcnc.org/docs/html/gui/qtdragon.html#_z_level_compensation

L’avantage de cette solution c’est qu’elle est maintenu par LinuxCNC ce qui devrait simplifier 2-3 choses :rofl: Malheureusement pas tout car il faut le lien symbolique entre python3 et python pour que ça marche. :woozy_face:

Entre temps j ai réussi à faire marcher en changeant python par python3 dans la commande loadsur … Compensation.py …

Il a fallu charger scipy mais maintenant ça plante plus. Reste a tester si ça compense bien le z

A suivre.

Merci pour ton aide. C est bien la 2.9.2 qui finalement a débloqué la situation.

J avais pas vu que ‹ qt › intégrait la compensation. Je l avais essayé il y a pas mal de temps mais Gaël et moi avions trouvé le GUI un peu fouillis et ça ne rentrait pas dans l écran que nous avons a l acolab. Nous avions choisi de garder le GUI que tout le monde connait

arch, longue est la route qui serpente devant moi. La compensation semble etre faite pour une machine a 3 moteurs, 1 par axe. Celle de l’acolab en a 4, la mienne en a 5 (dont 2 sur Z). Il y a des Pin qui n’existent pas au dela des 3 moteurs. De plus la latence en 2.9 est degeu au moins sur mon Pc mais je n’ai pas optimisé (si optimisation il existe en 2.9). Bref c’est pas gagné.

Je suis surpris que cela dépende de la config de la machine. Le script ne fait appel qu’aux axes et pas aux joints/moteurs

Pour la latence, il y a l’option d’installé LinuxCNC 2.9.2 Debian 12 Bookworm RTAI
http://linuxcnc.org/docs/2.9/html/getting-started/getting-linuxcnc.html#cha:Installing-RTAI

Il faut éditer le fichier /etc/apt/source.list.d/linuxcnc-uspace.list et retirer les 2.9-uspace en fin de ligne.
Puis :

sudo apt update
sudo apt install linux-image-5.4.28-rtai-amd64 linux-headers-5.4.28-rtai-amd64

Redémarrer la machine et vérifier que c’est bien le kernel 5.4.28-RTAI qui est choisi