NaoText

NaoText is a role-based domain-specific language designed for the programming of collaborative robot applications [1]. NaoText allows the explicit expression of collaborations between individual robots by using the concepts of contexts, roles, role constraints, and activation blocks.

The following code shows a simple NaoText example for a collaborative declaration of a pass action in a Nao soccer play.

01 activate for {      // (1) player selection
02     BallPossessor p;
03     BallSeeker s;
04 } when {            // (2) condition
05     ((p.robotInVision(s)) and
06         !(p as Striker).isGoalShotPossible());
07 }
08 with bindings {     // (3) role binding
09     p + Sender;     //     bind Sender role
10     s + Receiver;   //     bind Receiver role
11     s - BallSeeker; //   unbind BallSeeker role
12 } with settings {   // (4) evaluation time settings
13     interval 500;   // check every 500ms
14     after 1000;     // start after 1s
15     continuously true;
16 }

The implementation code of NaoText and a NaoText-to-Scala translator can be obtained from https://github.com/max-leuthaeuser/CPSTextInterpreter.

Comparison of NaoText with other implementations

To be done

Literature

  1. Sebastian Götz, Max Leuthäuser, Jan Reimann, Julia Schroeter, Christian Wende, Claas Wilke, and Uwe Aßmann.
    A Role-based Language for Collaborative Robot Applications (author version)
    In: Proceedings of the 1st International ISoLA Workshop on Software Aspects of Robotic Systems, Vienna University of Technology, October 17 – 18, 2011.

Comments are closed.