Considering Linux for use with Machine Control
Machine control needs a stable operating system that can run 24x7 without much user intervention. The OS needs to be rugged enough to survive power failures and spikes. So we had to consider below factors and arrived at conclusion.
Running on Windows
Pros
- Most user is familiar with windows so it is easy to maintain
- Can run other windows software along with machine software
- Can easily replace desktop in case of failure
Cons
- Need desktop PC or Laptop with high hardware specifications
- Need to buy windows licence
- Power failure issue can lead to corrupt data or OS
- Antivirus requires which can lead to slow down
- Windows 7 is outdated so need to run Windows 10 which needs active internet connections to keep updated
- Windows Update can anytime break the stability
Running on Custom hardware
Pros
- Self contained, so less complicated to use
- Need to ask lot of questions to vendor due to lack of documentation and language constrains
- No keyboard or mouse so takes less space
Cons
- Less features due to limited hardware
- Have to depend on vendor in case of failure
- Difficult to get major feature update by updating software
Running on Linux
Pros
- Stable
- Free
- OS Updates does not easily break operation
- Pop OS OS is feature packed and easier to install and maintain than Windows
- LTS release does not need a updates like Arch Linux. Its like install once and it keeps updating bits by bits as and when required
- Software can compile to native executable to give fast speed and smooth user experience
Cons
- User might be reluctant feeling Linux is for experts but once he starts using, he will appreciate his decision to switching to Linux
- Difficult to convince software developer to work on Linux C++ for development of software which is not mainstream like Microsoft C#
What we selected as OS for our Machines
We decided to use Linux as the software OS and develop on cross platform code so we can run in Linux or Windows(if needed) as native GUI executable.
What we wanted from Linux
- Stable running 24x7 without user intervension
- Can control which services we can run
- Should not need user interaction for updates
- Programming should compile to native executable with C++ coding
Which Linux distro we tried as we got list from DistroWatch
- Debian
- Ubuntu
- Linux Mint
- Arch Linux
- Manjaro Linux KDE (Derivative from Arch Linux but much user friendly)
- POP OS (Derivative from Ubuntu and more stable)
Conclusion
We shortlisted POP OS as our development platform as it is feature packed and easier to install.
We want to program in C++ and the code has to compile in native linux executable so the vision processing can be faster. Also we can later on switch to a light hardware like Rasberry Pi or Banana Pi for running on end user. These Linux SBC board are low cost and can be bundled along with machine. It is also easy to add Mouse and Keyboard. Moreover in case of failure of Linux System, It will be easy to replace the electronics hardware at low cost.