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

Tekkotsu Links:   Tutorial Resources Bugs CVS
Reference:

Cognitive Robotics: Lab 9


Part I: Looking Glass "Hello World"

1. Compile the behavior LGdemo:
#include "Behaviors/BehaviorBase.h"
#include "Events/EventRouter.h"
#include "Wireless/LGmixin.h"

class LGdemo : public BehaviorBase, public LGmixin {
 public:
  LGdemo() : BehaviorBase("LGdemo"), LGmixin() {}

  void DoStart() {
    erouter->addListener(this, EventBase::buttonEGID, RobotInfo::GreenButOffset, EventBase::activateETID);
  }

  void processEvent(const EventBase &) {
    uploadFile("ms/lg/file1.htm");
    displayHtmlFile("file1.htm");
  }

};

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 PC, 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:
<html><body>
<center><font size=+5 color=red>Hello world!</center>
</body></html>
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 chiara3e 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 PC.

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 write:
#include "Sound/SoundManager.h"

...

sndman->speak("Looking Glass demo");

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 3.


Dave Touretzky and Ethan Tira-Thompson