"Alexa, open the sassy box ..."

Designing a smart (and sassy) useless machine

About the Project.

Voice Technology is something I am really interested in and in the spirit of learning I came up with the idea of creating a smart useless machine out of LEGO which can talk and behave in sassy and unpredictable ways. Users could have the chance to play against a non-human entity and see if they are able to defeat and turn the machine off.

Client
Side project of my own.
Year

2020

Deliverables
  • Script
  • Interaction Model
  • Alexa Skill
  • Python Code

The challenge

Giving life to a smart useless machine that can talk, tease and move in unpredictable ways, by combining the LEGO Mindstorms robotics kit with an Amazon Echo Dot.

A switch to be pressed
The box’s arm which presses the switch back to its original position

The Design Process

  • Scripting the dialog and overall man to machine experience
  • Create the Voice Interaction Model by defining the intents and sample utterances
  • Deploy the skill that connects to the brains of the LEGO robot
  • Define the set of actions that control the robot on Python
  • Put together the LEGO robot
  • Design a sturdy case that goes on top of the robot

Design and Implementation Toolkit

The tools, technology and artifacts chosen for the task at hand.

Scripting
Alexa Developer Console
LEGO Mindstorms Kit
+400 LEGO Bricks
Python
VS Code

Scripting the interaction between man and machine

The script is the starting point to design for a natural conversation or interaction between a person and the machine, and that’s exactly what we are aiming for.

Interaction Model

I defined a custom interaction model. The interaction model is the first step to define the voice interface through which users would interact with the machine. To define the voice interface, I mapped users’ spoken input to intents.

Intents

The intents represent actions that fulfills a user’s spoken request.  Intents are specified in a JSON structure known as the intent schema.

Sample Utterances

Utterances are a set of most common spoken phrases mapped to the intents. Every intent should include as many phrases as possible. Given the flexibility and variation of spoken language in the real world, there will often be many different ways to express the same request, and the box needs to understand those requests.

Alexa Skill Code

We then create the Alexa Skill, which is code that can handle requests send to Alexa when the users is talking to her.  The code we write needs to:

  • Recognize each incoming request that Alexa sends
  • Return an appropriate response to the user

Python Code

When the user pushes the switch for the first time, a series of events are triggered. These events are handled by the Alexa Skill and notifies the LEGO EV3 device (the brains behind the box) to perform an action or command. These action could be something like:

  • Move the arm and push the switch back
  • Move the  wheels
  • Tease the user by pretending to be off

Robot Core Design

I found a model and set of instructions to put together a useless machine using LEGO Mindstorms. Since I already own one LEGO Mindstorms set putting it together didn’t take long.

Model design by Jason Allemann
Model design by Jason Allemann. https://jkbrickworks.com/luuma-ev3

Frame Design

I designed a large black box to go on top of the core design. To give it an even more sassy personality I crafted a custom female face, inspired by the minifigure faces as seen on a variety of LEGO Minecraft sets.

A real life glimpse

Check the smart useless machine outsmarting her own creator

Play Video

Something awesome awaits ...

The impact

The smart useless machine was exposed to a diverse group of people.

13

humans beaten by the machine

0

humans beating the machine