Polonius is a robot control interface designed for running Wizard of Oz style experiments. It is designed to be easy enough to be used by the non-programmer collaborators of roboticists. The program acts as an intermediary between the robot and a wizard interacting with a GUI based on a pre-defined script. Polonius also eliminates the need for coding the video after experiments by integrating a robust logging system. For more information, see the 2011 HRI Poster and Paper.
In ROS terms, Polonius represents a unification of the actionlib and smach libraries, with the addition of a graphical user interface to allow for human decision making. A script is specified in a yaml file, and read in by the Polonius Engine. It can trigger actionlib actions to control the robot. Which actions are triggered is controlled by a state machine generated from the script. In addition to the built in logging provided by ROS and rosbag, the GUI also gives the option to output a special log file in text format.
First, a script is defined by loading it into the parameter server. This is then translated into a smach state machine. There are two types of states in the machine: action states and cue states. Action states trigger actions using actionlib, whereas cue states don't and are primarily used for notating when the human is doing an action.
Transitions between the states occur either when the actionlib action is finished or the wizard clicks on a button in the interface. This information is passed in the form of a Cue message. InterfaceUpdate messages are passed from the engine to the GUI to inform it which buttons to display.
Writing a script
Please see the Writing a Polonius Script tutorial.