Robots

Flash

NameFLASH (Flexible LIREC Autonomous Social Helper)
ManufacturerWroclaw University of Technology
TypeSocial robot
Robots pageFLASH's page is not ready, see EMYS' official page http://emys.lirec.ict.pwr.wroc.pl
Projects pagehttp://www.lirec.eu
Videoshttp://www.youtube.com/user/LIRECWRUT


Overview

Wroclaw University of Technology (WRUT) robotic companion called FLASH (Flexible LIREC Autonomous Social Helper) is intended to be a mechanoid robot. It is designed and built within the EU FP7 LIREC project. Final form and skills will be a result of research collaboration between WRUT, responsible for the robot mechanical and electronic design and control systems, and other LIREC partners working on the issues of mind, memory, learning, reasoning, action planning, perception, etc. All components (mobile platform, the hands, and the head) are attached to the robot torso covering the FLASH main chassis frame. The robot mobile platform includes the motion and balancing controllers, the navigation module, and the robot power supply system. The platform base also supports the robot chassis, and the hands and head is fixed to the top part of this. FLASH is mounted on a balancing mobile platform with a natural compliance which makes this design acceptable to people (especially children) and safe. The FLASH hands are intended primarily to perform simple gesticulation tasks, but they may also be able to execute basic grasping. The main design objective has been to obtain a smoothly and reliably operating device, positively perceived by humans. The head has fundamental significance in robot-human communication. The FLASH head EMYS, has implement competences for generating facial expressions, gaze/head movement, and expressive behaviour. The head can express basic facial expressions, including happiness, sadness, surprise, anger, weariness, and disgust. The head is mounted on a movable neck for purposes of objects searching, turning toward a user, and gazing.

A robotic head EMYS (EMotive headY System) is a mechanoidal type robot. Its design has been inspired by characters from cartoon and movie series Teenage Mutant Ninja Turtles. Despite being an acronym, the name EMYS denotes a popular European pond turtle Emys orbicularis. The head has been mounted on top of a balancing platform FLASH endowed with arms and hands WANDA, that is the WRUT's flagship robotic companion.

The main movable elements of EMYS are its upper and lower disks. They are supposed to imitate, respectively, the human raising eyebrows and dropping jaw. Each of them has 1 DOF. The middle disk, hosting a vision camera, is not movable independently. From the viewpoint of facial expressions the eyes need to be perceived together with eyelids and eyebrows. In the design of EMYS the eyelids are mounted on the eyeballs, and can open and close (1 DOF each). The eyeballs and eyelids can turn around the horizontal axis (1 DOF each) that intensifies essentially the expressed emotions. This means, for instance, that to express sorrow or sadness they are turned outside, whereas when expressing anger or frustration they are turned inside. Another remarkable ability of pulling out the eyeballs (1 DOF each) enhances the head’s expressibility when showing surprise.

The LIREC software architecture is based on the concept of a three layer architecture [E. Gat, On ThreeLayer Architectures, Artificial Intelligence and Mobile Robots, 1998] facilitating software integration. The complete LIRECs platform control architecture consists of 3 sub systems: FAtiMA, CMION and SAMGAR [K. Du Casse, K. L. Koay, W. C. Ho, K. Dautenhahn, Reducing the cost of robotics software: SAMGAR, a generic modular robotic software communication architecture]. FAtiMA is the name of the agent’s mind responsible for decision making, planning and emotions. This module is implemented in Java and development is lead by INESC-ID (Portugal). CMION stands for Competency Management. The main purpose of this system is the translation of symbolic to subsymblolic information and vice versa. Development of CMION is lead by HeriotWatt University (UK). SAMGAR utilises the YARP [Fitzpatrick, Metta and Natale] framework that supports distributed computation and code reuse by structuring communication between modules (within and between the layers in the architecture). SAMGAR is written in C++ and developed by University of Hertfordshire (UK).

Of course most of this software is still development. It was decided to use URBI software to test all robot's components. This open source platform also allowed to prepare and conduct some experiment in very short time. It was possible to create simple scenarios using Gostai Studio or Gostai Lab software in few hours. Lot of URBI features like task parallelism, variable notifications, emitting urbi events, use trajectory generators, building robots tree structure were used to create excellent testing software platform. Now, it is working on use URBI in the lowest layer of the LIREC control platform.

The perception of the robot and human-robot interactions were examined in a series of experiments. One of the first was to investigate problem of expressing emotions in robotic companions with limited facial expression capabilities, in a way that they are correctly perceived by users.

Another experiment were involving children aged 9-13 years. These studies were designed to identify how the robot's behaviour and generated emotions affect a level of interaction. Scenarios of the EMYS behaviour were prepared to encourage children to play with him. The robot was full controlled by Gostai Studio where was implemented a simple scenario with two games. The first one relied on encouraging children to repeat some faces after the robot. In the second scenario, robot was expressing some emotions and asked children to show a toy corresponding to the expression.

Example code used in FLASH

Init Dynamixel protocol (for head and arm).

loadModule("Dynamixel");
var Dyn=Dynamixel.new();
Dyn.Open("COM1",57600);
Dyn.FindServos(0,10);

Assign servo class.


  class Servo {
  };
  // servo 0
  //
  var servo0=Servo.new();
  UVar.new(servo0, "position");
  servo0.&position.notifyChange( closure() {Dyn.SetGoalPosition(0,servo0.position);});

Create robot tree structure.


load("share/gostai/urbi/component.u")|;
load("share/gostai/urbi/naming-standard.u")|;

  var robot = Component.new("robot");

  class identity: Interface.Identity
  {
    var robotType = "flash";
    var name = _RobotName;
    var model = "First Generation";
    var serial = "001";
  };
  robot.addProto(identity);

  var robot.body = Component.new("body");

  echo("OK: Robot created.");

Add some joints.

 //=================================
  // 	NECK (pitch)
  //	servo ID 0
  //	range 420-580:490
  //=================================
  robot.body.addComponent("neck");
  servo0.getSlot("position").copy(robot.body.neck,"pitch")|;

  do (robot.body.neck) 
  { 
    pitch->rangemax=580;
    pitch->rangemin=420;
    pitch = 490;
  };

Add to robot some behaviors.



  var a_EyeLeftLid = Tag.new;
  var a_EyeRightLid = Tag.new;

  function m_EyeClose(intensity,time) {
    {
      a_EyeLeftLid.stop| a_EyeLeftLid: {
        robot.body.neck.head.eye[left].lid =  (EyeLeftLid  - intensity*48) smooth:(time);
      };
    } & {
      a_EyeRightLid.stop| a_EyeRightLid: { 
        robot.body.neck.head.eye[right].lid = (EyeRightLid + intensity*48) smooth:(time);
      };
    };
  }|{};

  do (robot.body.neck.head) { 
    function EyeClose(intensity,time) {call.m_EyeClose(intensity,time);};
  };

  echo("OK: EMYS behaviours added.");

Flash use two URBI engines: one for smooth movement and the another for vision system. Vision utilizes Ucamera, UObjectDetetctor and UColorDetector modules. All those and rest modules are described in module section on this page.

Download

(This code was published for quick reference. Some scripts are not optimized.)




WRUT

Options: