Puppet is an interactive user interface for creating motion and speech sequences for a robot. Currently, the PR2 is the only supported robot. Users create the sequences pose by pose. The interface accumulates a corresponding command sequence, which can be saved to a file, or replayed in the robot emulator that is part of the GUI.

Start the program with the following command:

roslaunch puppet_gui slider_simple_sim.launch


The robot model's joints are moved either via a Korg nanoKontrol audio slider board that is plugged into one of the computer's USB ports, or through the built-in onscreen board. Each slider controls one robot joint. Enabling the robot to travel, in addition to posing its limbs is currently under consideration.



Display Panes

The GUI pane that shows the robot is the camera view of the robot. On this pane's left is the program pane, which collects robot commands as poses or speech commands are added. Below the program pane is the sound controls' pane. Below that pane is a bank of control buttons.

Command Addition Control Buttons

These control buttons have the following functions:

* Append - add a command for the current robot pose to the command pane.

* Insert - place a command for the current robot pose between two existing commands in the command pane.

* Delete - remove the currently selected pose from the command pane.

* Clone - create a copy of an existing command.

* Play Poses - replay the accumulated poses beginning from the top.

* Look at Face - have the robot look at the nearest face it can find.

* Show Sound - show/hide the sound controls.

* Accessibility - show the onscreen slider board.

Below the camera view a text box shows the current joint positions. If the characters in that box turn red, the robot is in self collision, meaning that its limbs are bumping into each other. In this condition the respective pose cannot be added.

The sound controls contain a text field into which users type what the robot is to say. The select voice pulldown allows a choice of speech voices. The pulldown list entries depend on the voices that are installed on the computer. The computerish voice is the built-in Linux voice, and may be the only available voice if Cepstral is not installed on the computer.

The playback and stop buttons provide preview of the utterances. The record button (red dot) adds the speech command to the bottom of the command pane. The freeze pose radio button determines whether or not the speech will play while subsequent poses are played, or whether the next pose after the speech command in the command pane is only begun after the speech is finished.

Command Pane Tabs

The tabs with the colored symbols at the top of the command pane allow users to create four independent pose sequences. Playback can then be switched back and forth between these tabs.

Step and Edit Buttons

The two arrow buttons above the tabs allow users to step through commands one by one. The standard and edit mode radio buttons switch the command pane between a read-only mode for replay, and a different mode in which changes may be made to individual values within the poses.


The save and queue button is used to save a pose sequence to a file for later recall. The queuing functionality is currently disabled. It is normally used to queue a pose sequence for replay on a robot. Control of a physical robot directly from the command pane is under review.

The camera view radio buttons allow different camera angles for modifying how the robot emulation appears in the camera view. Switching angles is useful for seeing poses without obstruction by the robot limbs.

The background pull down is currently disabled under Groovy and later. In Fuerte different background images can be shown behind the robot.

Linkage to SpeakEasy

Speech utterances can be inserted directly into the command pane from the SpeakEasy GUI. In SpeakEasy, create a speech button for an utterance. Right click on that button, and select Broadcast Program. A command for the respective speech will be added to the Puppet command pane.


For development and debugging, use the following command to fire all required processes, except for the GUI:

roslaunch puppet_gui slider_simple_sim_node_in_eclipse.launch

and then start puppet_gui/nodes/ in Eclipse.

Report a Bug


Wiki: puppet (last edited 2013-07-29 21:47:04 by AndreasPaepcke)