15-494/694 Cognitive Robotics Lab 11:
Multi-Camera and Multi-Robot Systems

I. Software Update, SDK Update, and Initial Setup

Note: This labs will be done in 2 teams. Each team should have 6-7 people.

Equipment: each team gets one webcam, and a robot with an AruCo marker on its back.

At the beginning of every lab you should update your copy of the cozmo-tools package. Do this:

$ cd ~/cozmo-tools
$ git pull

II. Perched Camera Support

Read through the documentation for perched camera SLAM and shared maps.

Pick two adjacent computers; the space between them will be the workspace for the robots. Hook up the large monitor to Team 1's computer so everyone can see it. Run simple_cli on each machine.

  1. There are new commands in simple_cli to support perched camera SLAM and shared maps. Type "show" and "start" in simple_cli to see a list.

  2. Plug a webcam into each computer. Each team should type "show camera 0" and adjust their webcams to give a view of the workspace where their robots will operate.

  3. Both teams should type "start perched 0" to start the perched camera thread using their webcam. Enter the number of the ArUco marker on their robot's back: 91 or 92.

  4. Both teams should type "show particle_viewer".

  5. Both teams should type "show worldmap_viewer" and zoom out until the world is visible. If the robot is in view, both teams should see a perched camera floating in the air.

  6. The perched camera acts as a landmark that can be used by the particle filter to track the robot's position. Both teams should type WarmUp.now() to exercise their robot and refine the camera's position estimate.

III. Shared Maps

  1. Team 1 should type "start server" in simple_cli.

  2. Team 1 should find their machine's IP address by typing "ifconfig" in a shell. The number will begin with 128.2. Give that number to team 2.

  3. Team 2 should type "start client IP_address" using the IP address they got from team 1.

  4. Once a connection to the server is established, team 2 should type "start shared_map" to subscribe to the server's shared map.

  5. All teams should now see two robots in their world map viewer.

IV. Shared Map Experiments

The shared map facility is new and not debugged yet. Try some experiments to see how well it works.
  1. Drive each robot around with Forward() and Turn() and check the maps for accuracy.

  2. Introduce a wall that one robot can see; have the other robot face in a different direction so it doesn't see the wayll. Verify that the wall is visible in both world maps.

  3. Put a light cube on the far side of the wall. Drive one robot through the doorway so it can see the light cube. Verify that the cube appears in both maps.

  4. Type "show objects" on each robot to see the contents of the world maps.

  5. Try some of the nodes listed in section 3 of the documentation. Do they work?

V. Rest of the Lab

You can spend the rest of the lab period working on your assignments from labs 9 and 10.

Hand In

There is no hand-in for his lab.


Dave Touretzky
Last modified: Fri Mar 31 05:15:38 EDT 2017