15-494 Cognitive Robotics
Spring 2010
Course Links:  Main Lectures Labs Homeworks

Tekkotsu Links:   Tutorial Resources Wiki Bugs CVS

Cognitive Robotics: Lab 9

Part I: Looking Glass "Hello World"

1. Compile the behavior LGdemo:
#include "Behaviors/StateMachine.h"

#nodeclass LGdemo : StateNode, LGmixin()

  #shortnodeclass DisplayMessage : LGNode : DoStart
    displayHtmlText("<html><body>Hello world!</body></html>");

  #nodemethod setup
      StateNode =B(GreenButOffset)=> DisplayMessage



Notice that when you upload a file from the robot to the Looking Glass client you must give the path name beginning with the ms directory. The Looking Glass client stores uploaded files in a temporary directory on the workstation, and does not know the path they originated from on the robot. So when you display a file that has been uploaded this way, (e.g. displayHtmlFile()) do not include path name information.

2. On the robot (not your AFS directory) create the subdirectory ~/project/ms/lg. Then create the file ~/project/ms/lg/file1.htm with the following content:
<center><font size=+5 color=red>You pressed the yellow button.</center>
3. Run Tekkotsu on the robot and start the LGdemo behavior, but do not push the green button yet.

4. In a separate terminal window, cd to Tekkotsu/tools/mon, then type:
 java org.tekkotsu.mon.LGClient <robot_name>
where the robot name is something like chiara3 or an IP address. Nothing will happen until the next step.

5. Now make sure the robot is un-stopped, and press the green button. A Looking Glass screen should pop up on your workstation.

6. Modify the demo to also respond to a press of the yellow button by displaying the file file1.htm. By alternating green and yellow button presses, the user should be able to switch between messages.

Part II: Speech

Modify your LGdemo program to speak some words when it displays the message on the Looking Glass. To do this you must use a SpeechNode, or write:
#include "Sound/SoundManager.h"


sndman->speak("Look at my display");

Part III: "Both Sides Now"

In this exercise you are going to take pictures of a landmark configuration viewed from two locations. Start by reviewing the LGmixin::uploadCameraImage function, which takes a snapshot and uploads it to the Looking Glass client as a JPEG file.

Set up two dissimilar landmarks, such as an orange can and a green game piece, so that one is to the left of the other, with a gap in between. Write a behavior to do the following:
  1. Scan for the landmarks, and construct a world map with the landmarks on it.

  2. Look at the landmarks, take a snapshot of the scene, and display it on the Looking Glass.

  3. Walk through the landmarks so that they are now behind the robot. (To see how to walk relative to a landmark, take a look at the file Tekkotsu/Behaviors/Demos/Tapia/WalkToMarker.h.fsm.) Take a picture of the landmarks from this new position. Upload this picture to the Looking Glass client.

  4. Display both landmark scenes side-by-side, so they can be easily compared.
Turn in your answers by Friday, April 2.

Dave Touretzky and Ethan Tira-Thompson