Application level programming constructs
Hello,
I was wondering how other people have implemented their application level programming. At the moment I am perfectly able to control my ABB120 using ROS, MoveIt! and C++. But for certain projects I would like to prevent myself from hardcoding xyzrpy-positions and movements in C++, so I was looking for options to externalize this information. This would greatly enhance the maintainability of my robot programs, as recompiling/linking the source would no longer be necessary and end users may adapt/tweak/adjust the exact poses when necessary.
My first thoughts lead towards an XML specification of positions and movements, which is not a great deal to implement. However, making more robust and flexible programs requires the same language constructs we see in native robot programming languages, i.e. conditions, loops, etc. Implementing this in an XML specification would involve 'inventing' a new programming language. Eventually this would either copy or mimic the language constructs found in languages like RAPID (for ABB robots). This is obviously not the way I would like to go (well, to be honest I'd love to but time doesn't permit it :-)
Is there some kind of "generic robot programming language" that other people are currently using, or does ROS currently offer a way of building application programs in an interpretable format?
Thanks in advance, Joost
There is some interested in the Canonical Robot Command Language (CRCL) in ROS-Industrial, see ros-industrial/crcl. The people at NIST are very responsive, you might want to send the ROS-Industrial list a message.
Also: the assembly level languages typically supported by industrial controllers are really targeted at specific types of applications (relatively simple motions, may or may not include synced IO). More advanced ROS applications use 'higher level' constructs such as HSMs or behaviour trees.