a DIY (Do it Yourself) robot aspiring to help children with Autism recognize and express emotion. (The project is a preliminary exploration executed over a few weeks and will continue to be developed and researched.)
MEmote is an affective mobile robot that will also accept remote control signals to effect it’s behavior and emotional state. Emotional state is represented by a coordinated language of light, movement/gesture (and eventually sound). This affective display allows the robot to communicate its current status* and intent* to viewers.
*status = angry, sad/scared, curious/confused, happy
*intent = to attack, to be alone/escape, to discover, and to play (dance)
The robot assumes a natural disposition or emotional predisposition as a function of the ambient light in the room and its sensed proximity from others and objects. The emotional state is governed by a set of rules that allow it to react to its environment in an emotionally representative pattern. The environment is represented by a combination of the robot’s proximity to objects and the light levels in the room. The child will have a light wand that the robot will follow, thereby making the child most likely be next to the robot. The robot will wonder towards the brightest point in the room until it is close enough to sense a presence. Once the robot senses a presence, it will stop at a safe distance and bounce persistently. When the child steps into the robot’s personal space, the robot will run backwards to avoid being stepped on. Once the child is out of the robot’s sensing range it will continue to follow the direction of the light. Light levels work in combination with the proximity sensor on the robot to determine the mood of the robot. The mood is represented by combinations of gesture, movement and light-color to represent 4 possible emotional states.
The emotional states govern the way the robot will behave in relation to the light levels in the room and proximity the robot is to objects (or hopefully children). The robot will always follow the brightest point of light in the room, but when it senses really bright light or “light in it’s eyes” it will become angry and when it senses the darkest light it has ever seen, it will become sad. Though out the ambient light level or “when the light is not in his eyes” her wavers between happy and curious depending on whether he detects a presence. When he is in ambient light and detects a presence he is happy/ Excited, glows green light. When he does not detect a presence however he is curious and glows yellow wandering near objects at a safe distance. If it becomes very dark and becomes too close to something it will become “scared/sad ” and glow blue while running backwards. There is a total of nine possible behavior combinations.
MEmote version 1:
The Future of MEmote
The next generation of MEmote will include a controller that will be combined with the light wand. When a child engages with the controller she or he may override the robot’s assumed emotion and chose the emotional state they would like to communicate. The controller will have a button pad with iconographic faces and an color-changing light (RGB LED) that takes on the color of whatever mood the robot is expressing.
The robot will maintain that mood in spite of the levels of sensed presence and light levels until the controller is no longer being used and MEmote returns back to autopilot. He will still however follow the brightest point of light. Once the remote is no longer being played with the robot will cycle back through the emotions to the self-governed state. For example if the child leaves it on mad and then stops playing with it… it will slowly become sad, then curious, happy and return to autopilot.
How is MEmote made?
This robot and controller are constructed out of laser-cut snap-together (at this point slide together) acrylic, electronic components including and Arduino and fabric or fur.
The platform drawings, wiring diagrams, and Arduino code are all freely available online. You can customize your robot to fit your personal needs with your own choice of motors, wheels, and sensors.
Inside of MEmote…
How does MEmote work?
How does MEmote see light?
He calibrates to the light levels of the specific room. MEmote always starts off mad because the the only light he has seen so far is also the brightest light he has seen. By shining a brighter light such as a light wand directly on the light sensor (photoresistor) on his head he will then recognize the ambient light as the medium light level. If you then cover his head or shut off the light he will recognize the minimum light level. MEmote divides sensed light into three possible levels: max bright, medium light and minimum light. He then choses his behavior based on which of these three levels he senses.
How does MEmote follow light?
He follows the light by using two light sensors on the right and left of his body to control the motors steer the wheels. Each light sensor is associated with the wheel on the opposite side of the body. For example, if the light sensor on the left senses the most light the motor on the right will go faster thereby steering the robot towards the left. This method allows the robot to always drive towards the brightest light in the room which is likely to be the light wand/controller.
How does MEmote know when I’m close?
MEmote senses presence by using an infrared (IR) range finder. The range finder shines IR light in front of the robot and is able to gauge whether something or someone is in front of him by the amount of IR that is reflected back. When MEmote senses a presence he will stop and bob, but when you get to close, and he senses brighter IR levels, he will run backwards.
How does MEmote move?
MEmote bobs by using servos, a special kind of geared motor that will turn to a specific angle rather than at a certain speed. When he senses changes in presence and light levels the program calls a specific angle and causes the servos between the dome and the base to change angles allowing him to move. A servo in the dome also changes angles to raise and lower his eyelid and antenna.
Build your own MEmote!
Anyone can build a MEmote by following the directions and using the file resources available online. Above you will find the pdf files for cutting MEmote out of acrylic, the code you will need for his behaviors, electrical schematics and material list.
You will need…
MEmote cut-out pieces
2.5″ x 4″ cardboard eyelid
4 sticks of hot glue
4 6″ zip ties
4 – 4″ x 3/8″ round aluminum tubes
2 – 6″ x 1/4″ round aluminum tubes
2 – 1.5″ x 1/4″ round aluminum tubes
2 – 4″ angle iron with holes
2- rubber bands for wheels
10 – 3/16″ bolts and matching nuts
10″ – 12-strand ribbon cable
20″ – 30 AWG solid core wire
4 colors x 48″ each of 30 AWG stranded wire (RGB LEDs)
6 – 2 pin (button, motors, photoresistors) 100 mil Molex connector housings
2 – 4 pin (RGB LEDs) (2-5 pin) – 100 mil Molex connector housings
20 – female header pins
32 – brake-away vertical 100 mil headers
6 – 220 ohm resistors
3 – 1K resistors
2 – RGB LEDs
2 – .01uF capacitors
2 – 6v DC gear motors
3 – photo resistors
Extended range finder
3 – HS-425BB servos – servocity.com
9v battery holder
4 AA battery holder
4 – AA batteries
2 x 10″ – 3/8″ shrink tubing (cover antenna)
8 x 1/2″ of 1/16″ shrink tubing (RGB LED leads)
*Since MEmote is a mobile robot and will be subject to a great deal of vibration which may shake wires on a breadboard loose, we suggest moving directly to a Protoboard. For less experienced individuals you may plug the wires into the breadboard instead, but the robot will be more likely to malfunction.
1. The board
Assemble protoboard according to schematic provided. Solder headers to one end of ribbon cable. Crimp pins to opposite end to allow connection from protoboard to Arduino.
Solder on H-Bridge, resistors, and header pins onto protoboard. Make connections between components according to schematic.
Solder extension wires onto the RGB LEDs, photocells and motors. The four prongs of the RGB LEDs will need to be soldered with flux and very 30 AWG stranded wire so that they will fit in the aluminum tubes. Use a different colored wire for each prong. Heat shrink over each individual LED pin to prevent shorting. Slide wires into 1/4″ aluminum tube. Heat shrink over the tube leaving the LED exposed.
For each item crimp on connector pins and slide on connectors. Solder capacitor to motors.
3. Button and Batteries
Solder the switch such that one pole goes between the 9V battery and Vin on the Arduino and the other pole goes between the AA battery back and motor power on the protoboard.
4. Assemble the base
Assemble the base of the robot by placing the two large oval pieces together.
Mount wheels to motors against angle iron. Bolt angle iron to the base of the robot.
Velcro Arduino, protoboard and batteries to the base. Hot glue button in slot.
5. Attaching the servos and range finder
Drill two 3/16″ holes t in your servo arms. Bolt servo arms to the linkages then attach servo arms to servo with screwdriver. Zip-tie servo to base laying flat with the arm towards the center edge of the robot. Drop photocells and range finder into slots. Zip-tie range finger and use electrical tape on the photocells.
6. Building the dome of the robot.
Slide ribs into the base of the dome. Bolt antenna and eye elbow to servo. Zip-tie servo to center plank. Snap in eye and attach eyelid to elbow on servo. Hot glue antenna inside of servo antenna arm. Use electrical tape to affix photoresist to the top of the dome. Run wires for servos, LEDs and photocell down the inside of the dome towards base.
7. Connecting the dome of the robot
Use 3/8″ aluminum tubes as axils for the linkages between the dome and the base. Connect the linkage from the dome to the linkage bolted to the servo.
8. Connecting it all
Run all wires into the base, leaving slack in the wires to the top so that the head can bob freely. Plug the connectors into the corresponding head pins on the protoboard.
9. Upload code
10. Set robot on the floor before turning it on!
The Process of Designing MEmote
MEmote was a long process of cutting out pieces, putting them together, and taking them apart again.
I built and rebuilt MEmote with Xacto blades and a laser cutter at least 8 times.
<Pictures of cardboard, foam core and acrylic physical iterations>
Before there was MEmote… prior work
<Background and Prior art>
Creator Comments …Things to change
MEmote was initially held together mostly with zip-ties, hot glue and tape. The latest iteration has since been bolted together. The linkages are much stronger with the bolts and the robot is able to move much more smoothly
The dome was off balance due to the servo. To resolve this I taped batteries on the other side of the head to balance it. In the future I may use two servos and make two eyes so that it is more human-like.
The slide-together joints needed to be held together with hot glue. To resolve this in the future I will include snap-together joints.
Acrylic may not be the best material for a toy robot. It is prone to cracking and does not hold up well to abuse by children. In the future I think I may use sheets of ABS plastic.
Currently MEmote can only run a few minutes before the motors stop responding, but you shut him off for a few minutes and turn him on again he works great. It is possible that the H-bridge is overheating.
While MEmote was inspired by the recent influx of robots for children with autism, deeper research reveals that while he is going in the right direction he is missing some critical considerations. MEmote is not very anthropomorphic. It would be better for him to have more human-mapped features by which the child could learn to recognize emotion. MEmote would also benefit from responding to appropriate interactions. For example if he were sad and the child went over and pet him, he would become happy again. MEmote would probably also gain a great deal from sound.
While there are many ways that MEmote could be improved upon it is important to keep in consideration that he was conceived and built in a few weeks. The project will continue to be developed with future research.
Cornell Wright and Steven Brudenell. There is no way I could have gotten MEmote working so quickly without their help!