15-494/694 Cognitive Robotics: Lab 3

Learning Goal: This lab will give you some experience with color image segmentation and control of camera parameters. In addition, you will start work on assembling your Calliope3 robot.

Part I: Start Tekkotsu on the Robot

  1. Log in to the workstation.

  2. Power up your robot.

  3. Update the robot's software by doing "sendtekkotsu robot-name".

  4. ssh into the robot by typing "ssh user@robot-name".

  5. In a new tab, start the ControllerGUI by typing "ControllerGUI robot-name.

  6. In the ssh tab, run Tekkotsu by cd'ing to ~/project and typing "./tekkotsu-CALLIOPE2SP".

Part II: Raw and Color Segmented Images

  1. Click on the "RawCam" button in the ControllerGUI.

  2. Activate the HeadController (the "H" button in the Teleop row) and point the head at the tabletop.

  3. Lay out some colored easter egg halves and colored tape for the robot to look at.

  4. Click on the "SegCam" button in the ControllerGUI and observe the color segmented image.

  5. What colors does the camera see well? What colors does it not classify correctly?

  6. Do you see any specular reflections in the image? Try holding a piece of cardboard or posterboard above the tabletop so that objects are lit only indirectly. Does this improve the segmentation behavior?

Part III: Tekkotsu Vision Stream: VisObj Events

Here is a little bit of state machine code that responds to visObjEGID events generated by one of the built-in blob detectors:

$statemachine{
  look: StateNode =E(EventBase::visObjEGID)=> Report =N=> look
}

Write the Report node that uses event->getDescription() to display the vision event. You will need to cast it to a VisionObjectEvent first; do this safely.

As you move the blob around in the camera image, how does the event description change?

Part IV: Controlling Camera Parameters

  1. Read the wiki page on the Sony PlayStation Eye Webcam.

  2. Skip the "Device Driver" section but do the other sections listed.

  3. What camera settings give the best results?

  4. To reset the camera to its default state, unplug it from the robot, then plug it back in.

Part V: Calliope3 Assembly

We'll be doing multiple tasks today:
  1. Unpack the Create 2 and verify that it powers up.

  2. Apply a nametag to your Create 2.

  3. Extract the serial cable and give it to Dave.

  4. Unpack the Chromebook and apply nametags to it.

  5. Plug in the Chromebook and power it up.

  6. Follow the Chromebook install instructions on the wiki.

    When installing Tekkotsu and editing the Environment.conf file, set the targe platform to TGT_CALLIOPE3A.

  7. Remove the green coverplate from the Create.

  8. Take the Create to the RI Machine Shop and tap the 10 screw holes.

Part VI: Robot Repair

  1. Two of the robots have broken shoulder servos. Power down the robot and replace the servos. (I'll talk you through this.)

  2. You will need to set the servo id of the replacement shoulder servo to 3. (By default, servos come with their id set to 1.) To do this:a
    1. Read the page on Dynamixel Servos.

    2. Unplug the pan/tilt servo from the controller board because the pan servo has id 1.

    3. Power the robot back up again.

    4. Follow the example on the wiki page to change the shoulder servo id from 1 to 3.

    5. Run a dynamixel_util "scan" to verify that all five servos are functioning.

  3. Run Tekkotsu and use the ArmController to test the arm.

Homework

Hand in your code for the Report class from part III.

Finish installing and configuring Ubuntu on the Chromebook, then install Tekkotsu. Install instructions are on the wiki.

By Friday, February 5, every group should demonstrate Tekkotsu running on their Chromebook.

Store the Chromebook in the box with the robot parts when you're not using it.