Skip to content
Maya Cakmak edited this page Oct 2, 2021 · 13 revisions

FLEX-SDK Wiki

Welcome to the FLEX-SDK wiki! This wiki documents the software tools developed for creating, controlling, and programming social robots as part of Project EMAR. There are three levels of documentation:

  • Level 1: Running a robot, remote controlling a robot, and starting existing programs on a robot
  • Level 2: Configuring a robot, creating content, and writing programs for a robot
  • Level 3: Maintaining, improving, and developing new functionalities for robot software tools and administering robots

EMAR project team members who are helping run a design session, field study, or user study will likely only need Level 1 documentation, while other members who are designing their own study might need to consult Level 2. Level 3 is intended for programmers on the EMAR project. You can also check this video tutorial.

Software Overview

FLEX-SDK software is written in HTML/CSS/JavaScript and it runs on a Chrome browser. The software is split into two parts. The back-end software runs on the robot side. It renders the robot's face and belly screens, receives and executes robot actions (like 'say' or 'setFace'), and captures user input and sensor data from the robot. All robot configuration data is stored in the cloud, on a Firebase real-time database. The back-end software retrieves all relevant information from the database and sends back user input and sensor data to the database. The back-end does not run interaction programs; rather, it serves like a reactive shell that continuously waits to receive action commands and executes them when received.

Commands are sent to the robot by updating parts of the database that correspond to a robot's state or actions. This can be done through front-end tools such as the robot control interface (also referred to as the Wizard of Oz interface) that allows commanding all robot actions through its interface. Interactive robot programs are also written and executed on the front-end. A program runs on the developer side on the browser and sends commands to the robot back-end or waits to receive user data along the way. Other front-end tools allow creating content for the robot, such as faces with different facial expressions.

System overview showing front end and back end

The physical robot has two screens, the face and the belly. A browser in each screen (currently separate Nexus 7 and Nexus 10 tablets) runs the face and belly rendering tools. A robot can also be rendered on another computer or phone using the web and phone robot rendering tools that show both the face and belly screens. As we are exploring many different robot designs and applications in the EMAR project, the robot software supports multiple robot identities. Each robot ID has its own content (robot faces, belly screens, sounds, etcetera). The robot API (application programming interface) automatically adapts to the content. For example the function robot.setFace(faceID) will be valid for a different set of faceID values on each robot depending on which faces are added to that robot ID and how they are named. As a result of the changing API, each robot program is associated with a particular robot ID, as it might not work on others. We usually create one or more new robot IDs for each project within EMAR. For tutorials below you will use the 'Tutorial Robot' ID.

The main page for the FLEX-SDK software tools is in the Github pages of this software repository, here: https://mayacakmak.github.io/emarsoftware/

The page has links to three different sub-categories of tools. The robot back-end tools will often need to be accessed on the robot side, but might also be used for debugging or visualizing a robot on a separate browser or phone on the developer side. The robot front end tools and the robot programming tools are used by the designer, researcher, or developer on a desktop browser. More details about each tool is included in the tutorials below.

Screenshots from the main page and the three tool category pages

Tutorials

Level 1

Level 2

Level 3