Page 178 - Designing Sociable Robots
P. 178

breazeal-79017  book  March 18, 2002  14:11





                       Facial Animation and Expression                                      159






                                                           lip synchronization
                         emotive facial       facial            and
                          expression     display & behavior
                         coordinated movement  coordinated movement  facial emphasis
                            requests          requests      coordinated movement
                                                                requests

                                            motor server
                                      prioritized arbitration for motor primitives


                                           motor primitives
                                    control body parts as units: ears, brows, lids, lips, jaw


                                          motor demon layer
                                       control each underlying degrees of freedom

                                            the actuators

                       Figure 10.1
                       Levels of abstraction for facial control.

                       common reference frame is established for all the degrees of freedom so that values of
                       the same sign command all actuators in a consistent direction. The interface allows other
                       processes to set the position and velocity targets of each actuator. These values are updated
                       in a tight loop 30 times per second. Once these values are updated, the target requests are
                       converted into a pulse-width-modulated control signal. Each is then sent through the TPU
                       lines of the 68332 to drive the 14 futaba servo motors. In the case of the jaw, these values
                       are scaled and passed on to QNX where the MEI motion controller card servos the jaw.

                       The Motor Primitives Layer
                       The next level up is the motor primitives layer. Here, the interface groups the underlying
                       actuators by facial feature. Each motor primitive controls a separate body part (such as an
                       ear, a brow, an eyelid, the upper lip, the lower lip, or the jaw). Higher-level processes make
                       position and velocity requests of each facial feature in terms of their observed movement
                       (as opposed to their underlying mechanical implementation). For instance, the left ear
                       motor primitive converts requests to control elevation, rotation, and speed to the underlying
                       differentiallygearedmotorensemble.Theinterfacesupportsbothposturalmovements(goto
                       a specified position) as well as rhythmic movements (oscillate for a number of repetitions
                       with a given speed, amplitude, and period). The interface implements a second set of
                       primitives for small groups of facial features that often move together (such as wiggling
   173   174   175   176   177   178   179   180   181   182   183