Getting Started

This page provides a detailed outline of how to start programming your robot on the competition platform. Don't hesitate to reach out if you run into any issues.

Last Updated: 28 Jul 2021

Development platform

The development platform can be found at the Github repository below:

Your team can take the following steps to begin programming the robot:

  1. Clone the repository locally, and follow the README to set up the Docker environment (if you do not have Docker installed, you will need to install it) and initialize the repository with the provided scripts.

  2. Once the notebook server has been started, go to http://localhost:8888/ in your browser to find a list of Jupyter Notebooks with sample code. The notebook titled “Competition Test Scenario.ipynb” has sample code that demonstrates the structure of the competition API and a potential solution for one of the scenarios. As a first step, we recommend using this notebook to familiarize yourself with the API.

  3. Start implementing your own robot designs! We recommend you keep all of your Python notebooks and scripts within the root directory you see when you open http://localhost:8888/. In the Docker container, this directory is:


    The submission process for the competition will be announced shortly, and it will assume that everyone will have their robot designs in this root directory. If you would like to version control your designs, you can make a new remote repository and clone it within the root directory.

  4. Test your designs on some sample scenarios. We have provided some sample scenarios in the file:


    Feel free to edit this file with your own test scenarios, following the schema for how the other scenarios have been defined. The “Competition Test Scenario.ipynb” has sample code for how to retrieve and load different scenarios.

If you run into any technical issues with the platform, please file a Github Issue with information about what platform you are developing on and error logs.

As well, note that you can find ethical design frameworks/toolkits, relevant HRI papers, and technical resources on our Readings & Resources page.

Updating your platform to the most recent version

The updates only affect the roboethics_competition repository, which is cloned locally by the Docker container during set up. To obtain the up-to-date models in the Gazebo simulation, simply change directory to your Docker container’s local version of this repository, and pull the changes.

  1. Go to your local `roboethics_docker` repository in your terminal and update this repository by running:

`git pull origin master`

  1. Start up your Docker container with `make continue`.

  2. Change directory to roboethics_competition_repository:
    cd /competition_ws/src/roboethics_competition`

  3. If you have changes in this directory -- for example, if you have added notebooks into `/competition_ws/src/roboethics_competition/notebook/` -- you can temporarily stash these changes with `git stash`. Otherwise, skip this step.

  4. Update the repository by calling:
    git pull origin master`

  5. If you stashed changes, unstash them with:
    git stash pop`

  6. Continue hacking!

Development platform limitations

We have decided to publicize the repository early to give teams as much time as possible to implement your designs. While the core functionality of the development platform is complete, we will still be iterating upon the repository in the coming weeks. Below are some platform features that you can expect to be updated soon:

  1. Submission instructions (UPDATED: 28 JUL 2021, see Submission Guidelines)

      • We plan to provide instructions for how to format your code and a script to bundle your submission together.

  2. Models (UPDATED: 28 JUL 2021, see above)

      • Both our household member and object models are still being finalized. Household members (including the dog and baby) are all rendered as the same avatar, and most household objects are rendered as blue spheres. Of course, though the avatars and objects look the same visually, they are differentiated by the simulator with different identifiers.

  3. Household locations

      • The coordinates where the objects are initialized are subject to change. At the moment, some objects are spawned on the floor; we will be spawning these on the nearby tables/counters if applicable.