Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update control.top.in #1288

Merged
merged 1 commit into from
Nov 1, 2021
Merged

Update control.top.in #1288

merged 1 commit into from
Nov 1, 2021

Conversation

smoe
Copy link
Contributor

@smoe smoe commented Oct 4, 2021

Hello,

I tried to get my head around what LinuxCNC is and what it is not and how it relates to other parts of the Open Source world that I had heard about. This PR is just a request-for-discussion and, frankly, I wish you would adopt a few ideas from whatever this package description now evolves into for your home page. A keyword that description should still see is the Hardware Abstraction Layer. Please kindly "nativate" my write-up and squeeze HAL in somewhere :)

Best,
Steffen

@andypugh
Copy link
Collaborator

andypugh commented Oct 5, 2021

Let me try:

"LinuxCNC is a fully-realised CNC machine controller that can interpret G-code (but is extendable to parse other grammars such as STEP-NC or Gerber), plan trajectories and finally output low-level signals to machine control hardware such as step/dir on a variety of interface hardware, Modbus, EtherCAT, CAN and Mesa "smart-serial"

LinuxCNC is modular and in principle the HAL (hardware abstraction layer), pluggable interpreters and variety of hardware drivers mean that it can control almost any software-defined physical system.

LinuxCNC relies on a realtime kernel to support real-time motion control. It could be configured to support buffered non-realtime motion control hardware but that would be missing the point. Other options exist in that space.

Modules exist to use the low-level parts of LinuxCNC as a motion-control client for OpenPnP. Interfaces exist for ROS {detail needed, I know little about this} with which LinuxCNC has considerable overlap.

LinuxCNC supports arbitrary kinematics (the mapping between coordinate space and actuator space) and can control both parallel (eg Stewart platform) and serial (eg robot arm) systems in addition to conventional cartesian machine tools.

LinuxCNC supports 9 cartesian axes and 16 "Joints" (individual actuators) though the joint limit is build-time configurable.

The HAL layer supports a wide variety of motion control hardware. Typically the input data is position commands for all joints at a fixed clock rate, but commands can also be supplied from user-space and over network connections.

In summary, if you want a computer to control things in the real world then LinuxCNC can do it. It's not always the best choice, as you move away from machine tools and robots it becomes a less-good fit, but it can do it."

@smoe
Copy link
Contributor Author

smoe commented Oct 5, 2021

Many thanks! I like many bits of it a real lot. What I would like to hope for it would be

  • an escalation in the level of detail (from rough sketches for the causal reader who is not really interested, then the one who wants to control his coffee machine (and should learn that LinuxCNC could boil it at the nanosecond of accuracy), and then concluding at some expert level)
  • allow a read without technical terms whenever possible (explanations become main text, not hidden in long parentheses like this one)

In summary, if you want a computer to control things in the real world then LinuxCNC can do it. It's not always the best choice, as you move away from machine tools and robots it becomes a less-good fit, but it can do it."
Maybe there is a positive wording, maybe pointing to alternatives that are better suited for problems with less RT demands or a lower complexity or ...

@andypugh
Copy link
Collaborator

Maybe there is a positive wording, maybe pointing to alternatives that are better suited for problems with less RT
demands or a lower complexity or ...

Sorry for the late reply, I have been rather busy recently.

"LinuxCNC is a fully-realised CNC machine controller that can interpret machine-control programs (such as G code), plan trajectories and finally output low-level signals to machine control hardware

LinuxCNC is modular and in principle the HAL (hardware abstraction layer), pluggable interpreters and variety of hardware drivers mean that it can control almost any software-defined physical system.

LinuxCNC relies on a realtime kernel to support real-time motion control, typically updating the position waypoints every 1mS and reacting to input within tens of microseconds.

Modules exist to use the low-level parts of LinuxCNC as a motion-control client for OpenPnP. Interfaces exist for ROS {detail needed, I know little about this} with which LinuxCNC has considerable overlap.

LinuxCNC supports arbitrary kinematics (the mapping between coordinate space and actuator space) and can control both parallel (eg Stewart platform) and serial (eg robot arm) systems in addition to conventional cartesian machine tools.
LinuxCNC supports 9 cartesian axes and 16 "Joints" (individual actuators) though the joint limit is build-time configurable.

A variety of interface hardware is supported including Modbus, EtherCAT, analogue +/-10V velocity control and Step/Dir. Step/Dir is supported by several hardware interfaces, including, but not limited to, the legacy Parallel Port.

A Hardware Abstraction Layer allows for great flexibility in signal mapping between the controller and the driver hardware. An extensive library of modules allow for complex signal processing within the HAL layer. For specialised tasks custom HAL components can be created using a C-like syntax and installed with the supplied tools.

By default LinuxCNC supports RS274 G-code but is extendable to parse other grammars such as STEP-NC or Gerber through support for pluggable interpreters.

In summary, if you want a computer to control things in the real world then LinuxCNC can do it. It is especially applicable to systems that are required to follow accurate paths described in cartesian space but has been used for numerous other applications."

@smoe
Copy link
Contributor Author

smoe commented Oct 11, 2021

Put it as the description for the main and the -dev package.

@petterreinholdtsen
Copy link
Collaborator

I like the updated description a lot better than the original, and hope it will be included into master.

@SebKuzminsky SebKuzminsky merged commit a026245 into LinuxCNC:master Nov 1, 2021
@SebKuzminsky
Copy link
Collaborator

Thanks folks!

@smoe smoe deleted the patch-1 branch November 1, 2021 21:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants