Comment by dale_glass

Comment by dale_glass 10 months ago

18 replies

Why use Linux for that though? Why not build the machine like a 3D printer, with a dedicated microcontroller that doesn't even run an OS and has completely predicable timing, and a separate non-RT Linux system for the GUI?

juliangmp 10 months ago

I feel like Klippers approach is fairly reasonable, let an non-RT system (that generally has better performance than your micro controller) calculate the movement but leave the actual commanding of the stepper motors to the micro controller.

  • tonyarkles 10 months ago

    Yeah, I looked at Klipper a few months ago and really liked what I saw. Haven't had a chance to try it out yet but like you say they seem to have nailed the interface boundary between "things that should run fast" (on an embedded computer) and "things that need precise timing" (on a microcontroller).

    One thing to keep in mind for people looking at the RT patches and thinking about things like this: these patches allow you to do RT processing on Linux, but they don't make some of the complexity go away. In the Klipper case, for example, writing to the GPIOs that actually send the signals to the steppers motors in Linux is relatively complex. You're usually making a write() syscall that's going through the VFS layer etc. to finally get to the actual pin register. On a microcontroller you can write directly to the pin register and know exactly how many clock cycles that operation is going to take.

    I've seen embedded Linux code that actually opened /dev/mem and did the same thing, writing directly to GPIO registers... and that is horrifying :)

    • cwillu 10 months ago

      At the same time, RT permits some more offload to the computer.

      More effort can be devoted to microsecond-level concerns if the microprocessor can have a 1ms buffer of instructions reliably provided by the computer, vs if it has to be prepared to be on its own for hundreds of ms.

      • tonyarkles 10 months ago

        Totally! I’m pumped for this in general, just want people to remember it’s not a silver bullet.

bubaumba 10 months ago

I played with it years ago, but it's still alive and well

    http://linuxcnc.org/
These days not sure, hard to find computer with parallel port. Combined version with microcontroller like raspberry pico (which costs < $10) should be the right way to do it. Hard real time, WiFi remote for cheap. Then computer doesn't need to be fat or realtime, almost anything, including smartphone.
  • HeyLaughingBoy 10 months ago

    That and Linux-capable ARM System-on-Modules that also have a built-in microcontroller core to run real-time control separately are very popular these days.

  • alangibson 10 months ago

    Most people use LinuxCNC with cards from Mesa now. They have various versions for Ethernet, direct connect to Raspberry Pi GPIO, etc.

  • GeorgeTirebiter 10 months ago

    USB to Parallel are common. so, easy.

    • cwillu 10 months ago

      A “real” parallel port provides interrupts on each individual data line of the port, _much_ lower latency than a USB dongle can provide. Microseconds vs milliseconds.

      • YZF 10 months ago

        A standard PC parallel port does not provide interrupts on data lines.

        The difference is more that you can control those output lines with really low latency and guaranteed timing. USB has a protocol layer that is less deterministic. So if you need to generate a step signal for a stepper motor e.g. you can bit bang it a lot more accurately through a direct parallel port than a USB to parallel adapter (which is really designed for printing through USB and has very different set of requirements).

      • bubaumba 10 months ago

        I think it's possible do to it all on raspberry pico. Having pico doing low level driving and javascript in browser taking high level, feeding pico and providing UI. That would be close to perfect solution

alangibson 10 months ago

Because LinuxCNC runs on Linux. It's an incredibly capable CNC controller.

  • dale_glass 10 months ago

    I mean yeah, but the more I know about computers the less I like the idea of it.

    On a PC you have millions of lines of kernel code, BIOS/EFI code, firmware, etc. You have complex video card drivers, complex storage devices. You have the SMM that yanks control away from the OS whenever it pleases.

    The idea of running a dangerous machine controlled by that mess is frankly scary.

    • HeyLaughingBoy 10 months ago

      You'd probably be even more scared if you knew how many medical instruments ran on Windows ;-)

    • chiffre01 10 months ago

      LinuxCNC isn't the only thing out there either, lots of commercial machine tools use Linux to power their controllers.