ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Application level programming constructs

asked 2016-06-22 02:21:03 -0500

Joost gravatar image


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

edit retag flag offensive close merge delete


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.

gvdhoorn gravatar image gvdhoorn  ( 2016-06-22 03:34:47 -0500 )edit

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.

gvdhoorn gravatar image gvdhoorn  ( 2016-06-22 03:42:21 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2016-06-22 03:21:03 -0500

Laurens Verhulst gravatar image

Have a look at the .yaml format. A lot of parameters, controller options can be specified in there, it is widely used within ROS.

edit flag offensive delete link more

Question Tools



Asked: 2016-06-22 02:21:03 -0500

Seen: 135 times

Last updated: Jun 22 '16