Brzydal - the Social Robot

by RafalKozik in Circuits > Robots

3097 Views, 55 Favorites, 0 Comments

Brzydal - the Social Robot

IMG_9040.JPG
IMG_0031.JPG
michal2.png
IMG_0030.JPG
display.png

The goal of the project is to investigate uncanny valley hypothesis (cognitive robotics) and other social interaction of robots. Hypothesis of uncanny valley said that robots that are similar to humans could cause a response of revulsion among some observers. For example you can see video: Ode to uncanny valley.

Brzydal is the robotic head with a face displayed on screen. Robot can move his head in two planes using three servomotors. Robot-Human interface will be based on speaker and camera, so robot can locate human face and talk to him.

Table of Contents:

  • Step 1: General architecture
  • Step 2: Pre-evaluation video
  • Steps 3 - 22: Mechanical part of the project
  • Step 23. ZYBO Preparation
  • Step 24. Installation of a system
  • Steps 25 - 28. Implementation part of a project
  • Steps 29 - 30. Cognitive science research

Repositories:

This project is still under construction. We will update progress in short time!

If you have questions, feel free to ask in the comments!

General Architecture

zybo_2.png
zybo5.jpg
zybo6.jpg
zybo1.jpg

Brzydal is controlled by Zybo Zynq™-7000 Development Board with installed Xillinux - a Linux distribution for ZyBo.

Brzydal will get information about human from camera image. Image processing will be implemented on FPGA part of ZYBO Development Board. Based on image processing data Brzydal will act accordingly to situation by moving and displaying proper face expression on LCD screen. Servomotors controller is already implemented on FPGA part. ARM part of ZYBO is responsible for displaying different face animation on LCD screen.

That system creates closed feedback loop, which will allow us to measure human emotions in contact with different face.

Presentation (video)

Brzydal - the social robot (team 24KRPO)

Pre-evaluation video presents project evolution and Brzydal's main functionalities.

Video is also accesible on Youtube: https://youtu.be/ft7fI0St6Bo

Mechanical Materials

mechanical_parts.jpg

    List of mechanical materials:

  • plexi glass (195 x 510 x 5) mm
  • threaded rod 8 mm
  • threaded rod 4 mm
  • 12 screws 2.5 mm x 25 mm
  • 12 nats 2.5 mm
  • 4 screws 3 mm x 20 mm
  • 4 nats 3 mm
  • 4 screws 4 mm x 20 mm
  • 20 nuts 4 mm
  • 6 screws 8mm x 25 mm
  • 30 nats 8 mm
  • felt polishing wheel

Electronic Devices

parts_electrical.jpg

    List of electronic devices:

  • Zybo Zynq™-7000 Development Board

  • AC adaptor

  • 8 GB SD card
  • OV7670 camera module
  • 7' lcd 800x480px display with HDMI
  • 3* MG996 servomotors
  • HDMI cable
  • mikro-USB cable
  • Ethernet cable

Tools

tools.jpg

Needed tools:

  • screwdriver
  • sandpaper
  • hacksaw
  • file
  • drill

Model

model.PNG
Brzydal_2.bmp
Brzydal_1.jpg
twarz.bmp

Mechanical part of robot was designed in Autodesk Inventor 2015. Pictures present render of the project.

You can find it in mechanics.zip file.

Downloads

Preparing Parts From Plexi

parts.jpg

You need to use laser cutting plotter to cut parts from plexiglass. There are a lot of places where you can made it. This is cheap and fast metod. Only you need to take is file: Brzydal_cut.dwg. In the picture you can see cuted parts.

Downloads

Cuting Threaded Rods

prety.jpg

You need to cut three 20 cm rods with diameter 8 mm and four 6 cm rods with diameter 4 mm. During cuting be careful and don't damage screw. It must be possible to put a nut on it.

Creating Support

support.jpg

Take six 8 mm screws and a nut on each. Follow the picture and twist them together with the border circle.

Mounting Rods

rotssupport.jpg
IMG_20160223_193915.jpg

Take 20cm x 8mm rods and put one nut on the end of each. Put them in three holes in center of support circle. Screw them together on with another nut. Ready element should look like the picture above.

Mounting Servo Support

servosupm.jpg

Take other three nuts and put them on the top of each rod (about 1.5 cm from the end). Then put servo support (small circle) on it. By moving nuts, level it up. Then screw it on with another three nuts.

Mounting First Servo

servo1.jpg

Put servo into the hole. If the hole is to small broaden it with sandpaper. Then take four 4mm x 20 mm screws and nuts and screw servo on.

Create a Friction Bearing

filc.jpg
filc_na.jpg

Take felt polishing wheel and cut from it a support similar to this showed on the photos. It will work as a friction bearing between face support and servo support.

Then put it on the servo support.

Grind Servos

face_support_1.jpg

Take the other two servos and grind their assembly pads (like in the picture).

Mounting Servo to Face Support

face_support_2.jpg
face_support_3.jpg
IMG_0055.JPG

Take next servo and grind one of side taps. Then put servo in mounting hole like on the first photo. Then take two 4 mm rods. Put the nut on one side of each.

Then mount small servo handle an screw it on. Ready servo is show on second photo.

Finally make the same with second servo.

Enlarge Holes

servo_arm.jpg

Enlarge four hols in each of three servo arms to diameter about 2.5 mm

Mount Servo Arm to Face Support

face_support_4.jpg

Take four 2.5 mm screws and attach servo arm to face support.

Attach Servo Arms to Face Holder

faceHolder.jpg

Take other servo arms and attach them to face holder with 2.5 mm screws (that's why you need to enlarge holes). Ready parts are shown in the picture.

Mounting Display to Face

face.jpg

The bigest part cut from plexi is face. Take display and attach it to face by four 3 mm screws.

Attach Face Support and Holders

IMG_0074.JPG
caly.jpg

Center first servo and mount face support on it. Then screw it on.

Glue Face to Face Holder

IMG_9010.JPG
IMG_9014.JPG
robot v.1.0 (2).jpg
IMG_9042.JPG

Last step of creating mechanical part of the project is to glue the face to face holder. Ready robot is presented on pictures

Mount HDMI Cable

hdmi_text.jpg

Then attach HDMI cable to dispaly. If a plug is to big you can file it off a little.

Preparing Zybo for First Run

zybo.jpg
budowa.jpg

Make sure that jumpers on your Zybo board are in the same position like in the picture. Then connect Ethernet and AC-adapter.

After securing connections you can connect camera, HDMI cable and servo contollers to ZYBO.

Prepare SD Card

sd.jpg

For easier installation we prepared an image of SD card. You only have to write it to 8 GB SD card.

If you are not interested about implementation of Brzydal you could skip next few steps (with "How it work" preambule).

How It Work? Xillybus

xillinux.png

Xillybus is a bus that connect processors and FPGA parts of SoC (Syntem on the Chip).

To install it follow the instructions in attached file.

More information: http://xillybus.com/

How It Work? Display Different Face

IMG_9033.JPG
IMG_9039.JPG
IMG_0029.JPG
michal2.png
IMG_9028.JPG
IMG_9030.JPG
IMG_9029.JPG

Different faces are displayed using opencv. Program is written in opencv and you can find it on https://github.com/KozikR/Brzydal. All code is commented, and for more information you can read repository Wiki.

Instructions to install opencv is here: OpenCV Tutorial - Installation on Linux

How It Work? FPGA Servo Controller

Servo.png
Przechwytywanie.PNG

Servo controler was implemented as separate IP core in Vivado. We use Verilog language. Two registers store data about servo position. Counter is calculating current time. Comparators compare stored position with current time and generate PWM signal for servos. Pictures present general idea of controller and screen from real project in Vivado.

How It Work? FPGA Image Procesing

(In progress)

Cognitive Research

Zrzut ekranu z 2016-04-14 22_56_39.png
Zrzut ekranu z 2016-04-14 22_58_26.png
Zrzut ekranu z 2016-04-14 22_58_45.png
Zrzut ekranu z 2016-04-14 22_56_30.png

We have conducted research on group of people. Tested person had to watch presentations of four different faces (you can see them on photos) and then we gave them survey to evaluate emotions, that those faces aroused. We have used Semantism Differential method from recent publication: Walking in the uncanny valley: importance of the attractiveness on the acceptance of a robot as a working partner.

Data Analysis

Semantic differential method is able to determine what emotions patient feel during test with different faces.

More about semantic differential method (or Osgood method):

http://www.indiana.edu/~socpsy/papers/AttMeasure/a...

https://en.wikipedia.org/wiki/Semantic_differential