I am working in the development of 5 DOF robotic arm, The Controller will be consisted of 5 Serad Intelligent Servo Motion control drives, and I am working for HMI development currently, The Teach pandent as kuka uses in its KR C4 controller with its own processor, I want to do that on windows , I want to know which software will be best for this purpose for doing all necessary features which Kuka does
As it (almost) always, there is no best in (software) engineering. There are only trade-offs. For a windows based pendant, there are 2 main decisions groups to make. (1) The UI Framework you will be using and (2) the programming language editor features (assuming yout robot will have possibility to write an "application program").
Alongside the software, teach pendants (subject to local laws and standards) require an e-stop and a deadmansswitch (a 3 position enable button). These are subject to a risk-analysis (!) and are connected to a safety controller (again subject to a risk analysis!). The importance of knowing and respecting local laws/regulations and (safety) standards when making anything capable of endangering humans cannot be emphasised enough!!!
I guess step 0 is to come up with a UI concept and draw it on paper, in Powerpoint, in Visio, in Adobe XD or in Figma to have a concept what you can implement.
- UI Frameworks help you create windows, icons, input fields, labels, etc. all Graphical related thing you see on screen. The first choice here is to decide if you want a web-based UI, displayed only in a browser, a native UI for windows (or should it be cross platform, this way you can avoid the need for win license for every pendant) or both.
- You can look into web bases UI Frameworks like Vue, Angular, React, Svelte
- You can look into the .net UI Framework (Windows Forms, but this see being deprecated), or something Linux/Mac/Win cross platform like .net MAUI (I assume this will be the successor of WinForms), Electron, React Native (with React Native for Windows) or qt
- You can use something that (should/will) work anywhere like Flutter
The next step would be to add functionality to the UI. As the UI is only graphics there will be absolutely no robot related functionality behind it. You need an interface to the robot controller (you can choose from HTTP Rest, MQTT, AMQP, ROS, protobuf, cap'n proto, gRPC, WebSockets). Please note that the interface alone also does not provide actual functionality only message exchange. Make sure that the selected interface has libraries both for the programing language used on the controller and on the pendant.
- On the pendant side, all functionality that is needed is somewhat straight forward to implement compared to the programming language editor part. That is the most complex task on the pendant (assuming you want syntax highlighting and intelligent code completion ("intellisense") integrated in the UI).
- For Syntax highlighting you need a syntax of a programming language. You can consider copying an existing language (like KRL), but I do not know if that is legal. Anyways, once you have a language, you need (at least a partial) interpreter (parser+lexer) for the language you use to program your robot. By partial interpreter, I mean at least a lexer which can color the words (tokens) you type,
- For good "intellisense" you probably need a parser also. You can use an interpreter generator like ANTLR, or yacc to generate your interpreter based on the syntax of the programming language you are using. This interpreter will also come in handy, when you are actually interpreting the program you wrote on the pendant, when you execute it on the controller.