Exercise: Robot Party

The main objective of this exercise is to explore the emergent behavior of a small herd of mobile robots. Initial testing will be performed locally using a simulated radio network to coordinate multiple robots. The local flock will then be augmented by proxy robot bodies tracking remote participants reporting their state over the network via a MQTT server.

The emphasis of this exercise will be on programming individual behavior controllers which then interact in the simulated world. However, you are free to customize robots, whether just to individuate the size and color of herd members, or to extend or replace the sample models.

../_images/party-project.jpg

Screenshot of sample Webots project including several wobbly robots, several proxy robots, and several environmental obstacles.

Objectives

After this exercise, you should be able to:

  1. Construct a behavioral state machine.

  2. Apply primitive mobile robot behaviors to produce an algorithmic performance.

  3. Identify emergent group behavior.

  4. Iterate individual behavior algorithms to shape an emergent performance.

Reference Guides

Please review the following reference guides as needed:

Resources

  • The sample Webots project is a package of files and folders provided as a zip file party.zip.

  • The course Piazza is a good place to collect and answer questions.

  • The MQTT Monitor (PyQt5) tool provided on the course site may be helpful when debugging online operation. Please use the 8885 port number for 16-375 when connecting to the server.

Developing Behaviors Locally

The main objective is to set up behavioral state machines to implement both autonomous mobile performance and reactive behaviors.

I recommend using just one common control script for all robots and individuating the behavior using the robot name and customData fields to select among alternative functions.

A few motion primitives are provided in the sample wobbly code, and I encourage you to to create more as needed. All are designed to run without blocking as part of an event loop. Please continue this approach so the provided sensor and communication code will be polled as designed.

The simulated radio system solves the problem of locating other robots by directly sharing state. However, you could also consider implementing responses to the range sensors and accelerometer.

The sample environment includes a few obstacles, and I encourage you to add more as needed.

Testing Behaviors Online

The premise of the online robot party is that each student will contribute the data of one robot on the online party. In particular:

  1. the state of one individual herd member will be broadcast to others via MQTT

  2. one local proxy body will be updated for each remote member received via MQTT

You may use the sample world file ‘network-party.wbt’ as a starting point. It contains one ‘delegate’ robot and a set of ‘proxy’ robots to implement the remote aspect. If you prefer, you may add these directly to your own world file, the proto files are available in the party project.

Deliverables

For submitted files, please add your name (either preferred or last) as a prefix on the filename, e.g. “Garth-sim.zip” or “Zeglin-sensors.zip”.

Please submit the following files to Canvas:

  1. Zip file of your Webots project.

  2. A text file with:

    1. a paragraph briefly describing the objectives and outcomes of your local herd performance.

    2. a note to identify which .wbt world file(s) contains your primary result(s)

  3. Short video clip (under one minute) of simulated behavior, submitted to Canvas either as a video file or a link to a third-party streaming service. If a file, please add a similar name prefix.

N.B. it appears Canvas is treating the submission criteria as exclusive-or, e.g. it doesn’t seem to accept direct text submission along with files.