A High-level Programming Language for Robotic Applications

Why was ROSLab developed?

In recent years, we have witnessed an increase in the use of robots for different applications spanning from military to civilian operations. The robotics community has been very active in creating algorithms and theories to optimally navigate single and multiple agents in complex environments. While this growing of capabilities makes robotics more suitable and attractive for everyday applications, experiments become more and more complex and time-consuming. Currently, roboticists need to have a deep knowledge of programming languages such as C, C++, Java, and Python, to name few popular ones, that are often not intuitive and easy to understand and implement, especially for beginner users. To overcame this limitation, we propose a simplified high-level programming language based on blocks and links dragged on a workspace which generates the skeleton code for robotic applications involving different types of robots.

How does it work?

In order to develop such a high-level programming language that still can guarantee flexibility in terms of implementation, our approach takes advantage of the Robot Operating System. ROS is an open source meta-operating system that provides a message passing structure between different processes (or nodes) across a network. In our framework, we consider a hierarchical approach in which at the base there is ROS that allows inter-process communication between nodes in a robot and on the top we create a high-level language that interacts with ROS and thus with the real robot. The high-level language can be viewed as an extra layer added to simplify lower level code generation. The developed high-level programming language which we call ROSLab allows: (i) to easily program operations involving aerial and ground vehicles and (ii) to verify several properties about the generated code such as execution time and information flow.


Several demonstrations of ROSLab use can be found on Nicola Bezzo's ROSLab page.


All releases can be found on the project's Releases page.


Nicola Bezzo, Junkil Park, Andrew King, Peter Gebhard, Radoslav Ivanov, Oleg Sokolsky, Insup Lee