Comment by dale_glass

Comment by dale_glass a year 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 a year 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 a year 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 a year 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 a year ago

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

bubaumba a year 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 a year 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 a year ago

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

  • GeorgeTirebiter a year ago

    USB to Parallel are common. so, easy.

    • cwillu a year 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 a year 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 a year 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 a year ago

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

  • dale_glass a year 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 a year ago

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

    • chiffre01 a year ago

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