FAB Academy -  Final Project 2014


My aims


Research

I had originally wanted to make a robot but have become interested in robot faces, expressions and communication so I thought I would take inspiration from the wealth of art history in portrait painting to help me explore the elements of facial expression and ways in which a robotic face might communicate and how an audience might interact with the face. I thought this would also provide me with an interesting project to share with the students at school and lots of opportunities to showcase the skills I’ve been learning on the Fab Academy course.


 

Features of the project 



Research links

Lego Mindstorms
"Adorable robots that teach kids to code" - Play-i  Bo and Yana uses programming languages Blocky scratch Java and Python

Code Club

Code Academy

Science Buddies  http://www.sciencebuddies.org

Adafruit learning systems - http://learn.adafruit.com

Cynthia Breazeal The rise of personal robots

Ted Talks – personal robots

ERWIN – emotional robots University of Lincoln

National Stem Centre York UK  http://www.nationalstemcentre.org.uk
Robothespian - interact learn communicate engage
The Circular Economy   - economy that is regenerative by design 
http://www.ellenmacarthurfoundation.org


             ERWIN Robot face                                                                                Painting by Paul Klee                                       Interpretation of robot face

        erwin              PaulKleeface         face1

The above images come from exploring elements of the human face that convey expression and meaning through movement, colour and shape. I drew my own robot face, a version of Paul Klee's painting. I will use it as inspiration for the Robot Face now known as Kleebo




System Diagrams


First system diagrams below to get me started
network

system diagraam1

Network diagrams below using my own board designs showing the stages I will work through to create  the system network

Network

A complex system with simple individual nodes. I have chosen this system to be scalable allowing the addition of other nodes creating a modular system easier to debug and make as each part can be made independently. Hopefully the network will be easier to manufacture, change and mend.





network

My final network design

system diagram


system

Photo showing network elements, Processing on computer orchestrating the individual boards behind the face

network


Board Designs

I am making my boards using the Modella

Boards

function     




B1

Switches board with 4 buttons to be interface




B2 x 4

Servo board x 4 to move parts of face –

 eyes, mouth, eyebrows




B3 x 2

RGB LED board to light up cheeks




B4 x 2

Mini board for embedded LEDs




B5

 

Brain ATtiny 44 to replace computer and make project stand alone




B6

FTDI connector with 2x3 header as bridge




 


First started by designing the servo board in Eagle, added LED, then made, see below


Servo Board


Servo Board - Schematic

srvo




Traces

traces





next to programme in Arduino using my FABISP -  then to test the eye movement

 

 servo  servoboard       connected up  




Switches board

switches


board    switches


switches board
Board in use and working well


RGB LED boards

Schematic

RGB BOARD

Traces

RGB traces

sketch showing working out RGB LED connections with header below

header     LED board



photo showing embedded LEDs working

LED


FTDI board

FTDI board for connecting the network to the computer and processing. Made changes to the my first FTDI connector board to add power as had some problems programming when all boards where connected, the LED's were fading.


FTDI board    traces

This is the Connector board below I am using at the moment with external power from USB hub as it provides the most stable power to all the boards. I have tried  another board that enabled the power source from a 9v battery but we did not have the right capacitor to smooth out the power  and the result was noisy and jumpy so I decided to keep it simple, get the network of boards working, assemble prototype 1 then think of ways to make the project free standing and independent of both the computer and the hub for power as part of the next stage of development for the project.

connector


The network of boards being programmed and tested below - all working, great!

networknetwork

 


Programming  

 

I will use Arduino IDE to programme my boards and Processing to communicate via my computer to each board.

Useful reference for programming ATtiny with Arduino  Highlowtech.org/?p=1695 PLUS ATTINY PINOUTS BELOW
I used Binary numbers to workout the ID for the switches and boards

Binary numbers to 15

 

0

0

0

0

0

0

0

0

1

  1

0

0

1

0

2

0

0

1

1

3

0

1

0

0

4

0

1

0

1

5

0

1

1

0

6

0

1

1

1

7

1

0

0

0

8

1

0

0

1

9

1

0

1

0

10

1

0

1

1

11

1

1

0

0

12

1

1

0

1

13

1
1
1
0
14

1

1

1

1

15



ATTINY PINOUT

Preparation for programming - before I got started there were several things I had to workout

I created the tables below to help me workout the Switch functions and board IDs for programming

 

BOARDS

ID from Processing

 

Kleeface_left_eye

“2”

Kleeface_right_eye

“3”

Kleeface_right_cheek

“6”

Kleeface_left_cheek

“5”

Kleeface_eyebrow

“4”

Kleeface_mouth

“7”    

Switches

   

 

switches                     



  Commands Processing is sending out  based on button status. There are 15 possible combinations (see below)

 

BUTTON NUMBER

NAME

ID of board sent from Processing

1

EYES

“2” &”3”

2

EYEBROW

“4”

3

EYES &EYEBROW

“2” “3” “4”

4

CHEEKS

“5” “6”

5

CHEEKS & EYES

“2” “3” “5” “6”

6

CHEEKS  & EYEBROW

“5” “6” “4”

7

EYES & EYEBROW & CHEEKS

“2” “3” “4” “5” “6”

8

MOUTH

“7”

9

MOUTH & EYE

“2” “3” “7”

10

EYEBROW & MOUTH

“2” “8”

11

MOUTH EYEBROW EYES

“8” “2” “1”

12

MOUTH CHEEKS

“5” “6” “7”

13

MOUTH CHEEKS EYES

“7” “5”  “6” “2” “3”

14

MOUTH CHEEKS EYEBROW

“7” “5” “6” “4”

15

MOUTH CHEEKS EYEBROW

EYES

“2” “3” “4” “5” “6” “7”

 

 

 

Arduino IDE

Programming each board in Arduino  - links to programming attached

Kleeface_leftcheek_5     as right cheek / they work together                              
Kleeface_switches_1 switches
Kleeface_rightcheek_6 leftcheek
Kleeface_LEservo-2                    
lefteye
Kleeface_REservo_3 rEye3
Kleeface_mouth_7 mouth arduino
Kleeface_eyebrow_4 eyebrow_arduino


Processing

Programming in Processing, conducting the boards. Processing acts as the system conductor. To Programme the servos I had to first research the range of pulse 500 - 2500 micro secs    1500 home-centre


Processing below showing switch status for the 4 switches  1 2 4 8 below

programming

At last minute added sound (laughing) from an online library into processing using Minim


Mechanics

I need to work out how to move the various parts of the face, eyes, mouth, and eyebrows, using the servos. To achieve this I have first to make a prototype face, 3D print the eyes,  think how to attach and position the servos, design and make my own servo board so that I can test the movement of the eyes and mouth. I will be using servos and rotary motion for the eyes and eyebrows and will explore linkages for transferring rotary motion from a servo motor to linear motion for the mouth to move.


Problems to solve

·      Work out  flexures to move the mouth

·     Work out pivot points for eyebrows and servos
Work out position of eyes and servos

·      In Rhino redraw the back plate of face, position all the press-fit connectors to hold servos so front and back of face match up


Useful website for understanding how to use servos http://www.societyofrobots.com/actuators_servos.shtml


Positioning the  4 servos on face, next to think how to attach them and test
- testing movement and position of  eyebrow
                                                                                                                                 

sketch

        servo
      positions    eyebrow



Fabrication


What needs to be designed and made?

 

 

Parts to be made

Process used and decisions to be made

Face

Lasercut with final changes to design adding flexure to move mouth, cutout areas for cheeks to be embedded

Pivot points for servos, cut grove for arch of servo for eyebrow

Pressfit structure to hold face so able to sit on the table

Lasercut and decide on final design and size, position of servos and pressfit connectors

Pressfit connectors to hold servos

 

Lasercut – finalise size and position on face

Test press fit connectors to check it will hold servos

Eyes

3d print in white with pupil – improvements to existing shape – check size

Eyebrows

Lasercut, decide on movement, pivot point, and how to connect them to the face, how to connect eyebrows to servos and arc of movement

Cheeks

Draw up in Rhino – cutout mold on shopbot – use epoxy resin to embed LED on mini board to allow for connecting

Mouth

Laser cut mouth and think how to attach

Flexure and servo to move mouth, where to place servo? Consider pivot point

 

 

Stages of making

Started with 3D print of eyes having drawn up design in Rhino to appropriate dimensions

 
eyeinrhino

 


 

Attached eyes to servos to see how they fit on the face, is the shape  right? Printed in black as our only option so then needed to source other colours and consider how to achieve a better quality finish

 
First prototype of eyes                                                          Second prototype of eyes, resized and in white

eyesonservo            eye

 



 Making the face



lasercut files



Lasercut face and supporting press-fit structure having drawn up design in Inkscape,  (see inkscape plans above) first lasercut in paper to check cut lines then cardboard, finally 3mm ply. I was pleased with the face but needs some problem solving. The engraving will cause problems for the eyebrow and mouth movement and needs changing. I need to add flexure for the mouth to move and the cheeks need to be cut out to allow for embedded cheeks/LEDs. Photos showing several tests on lasercutter to check design and position of pressfit

tests    

 First prototype of face                                                        Several prototypes later with flexure for mouth and all cut lines cutting, great!

face    lasercut

Problems I've encountered using Inkscape have resulted in many test runs. I had problems with some lines not cutting so now check line size 0.01, layers, and opacity 100% before each lasercut to overcome this problem


Flexures for mouth


I added Flexure for mouth movement, made several tests at a variety of speed and power combinations to reduce scorch marks on the flexure

flexure   flexure      
flexure




Molds for cheeks and embedded LEDs

Started with drawing cheeks in Rhino using measurements from the face and then cut out the mold using the Shopbot. This all went very smoothly.

cheeks

Shopbot settings

shopbot_mold

mold       mold

                                                embedded LEDs in Epoxy resin - this worked well first time
                                                  cheeks


Backplate for face          

Thought of simple ways to connect the servos so they are secure and don’t interfere with the design of the face. My concern at the moment is that they will be heavy so stability of the structure is paramount. My solution at the moment is to add a back plate to the face which all the servos and linkages can be attached using pressfit connectors. This  has required lots of testing to get all the parts and lasercuts in place. I found drawing up the back plate in Rhino more accurate and easier to measure than Inkscape.


 backplate    


back plate of face above showing position of servos and LED boards and below with all assembled and ready to test
backplate


prototype1


Kleeboo face prototype 1 above working well and responding to the switches board. GREAT!!

I'm so happy and it's fun seeing all the parts moving with sound effects too bringing the face to life



Future Plans for Kleeboo  



I'd like to say a special thanks to Joel for all the brilliant support he has given me in getting this project to completion and the great team at Manchester Fab Lab including my fellow students of the Fab Academy James and Micheal who have been wonderful to work with and an inspiration.     
           
                                                                 Many thanks to you all



Files for final Project

Fabrication

stl file  left cheek Rhino

stl file right cheek Rhino
files  3D printing eye Rhino
files pdf face inkscape for laser cutting


Programming files
Arduino IDE

programs eyebrow servo

programs eye servo
programs mouth servo
program RGB LED cheek

program RGB cheek


Processing
processing



Eagle files for Boards  

Servos  
eagle files
servosch


RGB LED

LED sch
LED brd 

Switches

switches sch

switches brd


FTDI Connector

FTDI connector sch
FTDI connector brd