Mr



University of Florida

Department of Electrical Engineering

EEL 5666

Intelligent Machines Design Lab

Mr. Firefly

by

Steven LaPha Jr.

Instructor: Dr. Antonio A. Arroyo

December 13, 2000

Table of Contents

Abstract 3

Executive Summary 4

Introduction 5

Integrated System 5

Mobile Platform 6

Actuation 6

Sensors 6

Behaviors 11

Conclusion 12

Documentation 13

Appendices 14

Abstract

Mr. Firefly is a robot based on the idea that everyone can use an extra hand around the house or office. This robot will also provide a simple natural interface so that anyone can easily use the robot with little preparation. The robot will also provide an advanced platform for a variety of programs to create a variety of different functions without many hardware changes.

Executive Summary

Mr. Firefly is an entertainment and personal assistant robot. The main purpose of Mr. Firefly is to provide a base that can be easily upgraded with different programs to provide various entertainment and personal assistant abilities.

Mr. Firefly is outfitted with bump switches, infrared detectors, motion detectors, an RF transmitter, and a speech synthesizer.

The bump switches and infrared detectors allow Mr. Firefly to avoid hitting obstacles or to correct himself when he does. This follows Isaac Asimov’s first and third laws of robotics, to prevent the injury of humans from the robot, and to protect the robot’s own existence. The two infrared detector/emitter pairs are placed in a cross-view pattern, attached with a type of Velcro so they can be adjusted.

The three Motion detectors placed at 120 degrees from each other give the robot a social behavior, it allows him to locate human movement and go toward it. These help it interact with humans. This will be a useful behavior in the case where the robot could be programmed as a pet. If the robot is to be used like a personal assistant it can follow its “master” around to be at his call.

The voice synthesizer provides a way for the robot to communicate with its owner. The voice synthesizer can be used to say anything as it takes in ASCII text and outputs near perfect speech. For a pet program it can be used to bark, or meow, or even chirp. For an assistant program it can say a schedule, and even has the ability to dial DTMF tones, so it could even hold phone numbers given the proper programming.

Additionally there is the RF receiver, voice recognition, and LED face modules, which at this point were not added due to some problems with the remote board and programming deadlines. These will allow the robot to respond to human commands, and interact with a face that provides human to almost human interaction.

Introduction

The design of Mr. Firefly is based around the home or home office. Mr. Firefly is like a personal secretary. It would allow the user to manage phone calls, and to keep track of the day’s events. Mr. Firefly also provides a friendly human to “almost human” interface. I feel this is most important, because it allows people to get used to the idea of working with robots without having to talk to a box. Perhaps this will even smooth the transition to the possible future of androids.

This project has one main objective, to create a helpful robot that is easy and almost natural to use. There are a few parts that accomplish this objective on this robot project. The robot should respond to a set of voice commands thus freeing the owner from some form of remote or having to touch the robot. To increase the compatibility of the robot with the user it should also have a voice synthesis system to allow it to speak to the user increasing the human like interface, and a display as a “face”. The robot will also interact with the telephone. This will let the user use the telephone through the robot, hands free, also reducing the need to find a nearby telephone. Also the project should allow for other types of software programs to be downloaded to the robot changing it’s major function. One example is by downloading new code it should be able to turn into a robotic pet without need for too many additional sensors if any. Through each part of the project the coding should be done so the robot will be entertaining in it’s final result, making it appealing to the general public as well as the user.

The integrated system of Mr. Firefly will use a variety of circuits to perform the voice synthesis and recognition as well as the display. The mobile platform will be similar to the Talrik platforms, rolling on two motorized wheels in a tricycle fashion. Actuation will be provided through mostly two servos and additional parts to create the various functions. A variety of sensors will allow the robot to move autonomously and behave appropriately. The behaviors will allow the robot to interact with humans in a way so that it acts more as an animal or human than a robot. The robot will also go through a series of experiments to test each of the working systems and integrate them into the circuit.

Integrated system

Mr. Firefly’s system will work much like a star network, having one central processor that sends and receives information though the processor. In this system, for example, the voice synthesis will not have any contact with the voice command system. The main components will be a Motorola 68HC11 processor, voice synthesis control system, voice recognition control software, display control system, and sensor interface controls.

[pic]

Mobile platform

Mr. Firefly’s platform relies mostly upon the design of the TJPro and Talrik frames. The robot will roll around on 2 primary wheels controlled by servos, with a third nub to balance the robot. The main frame was created using 2 types of plastic, a flexible yellow for the main disk, and a rigid black plastic for the body. The design is similar to the TJPro but larger, and with some modifications.

[pic]

(Figure 1 - Platform parts)

Actuation

The majority of the actuation in Mr. Firefly will be to move the robot around and controlling its behaviors. The main drive functions will be performed by two servos controlling 2 wheels. The servos were hacked using the IMDL/Mekatronix method for continuous rotation.

To try to center the servos (adjust the potentiometers so they are equal) I first tried to let the servo adjust itself by moving the servo using the motorp command and then setting it back to 0. The servo commands probably would have fixed this problem but at the time I didn’t know about them. I adjusted the potentiometers so that they resistances were balanced at “center”.

Sensors

The behaviors of Mr. Firefly will depend highly on the various sensors. Voice recognition will be used to deliver commands to the microcontroller. Infrared detectors and LED’s will be used for collision avoidance, and give approximate distances to nearby objects. Bump switches will be used to determine when the robot has come into contact with some object. Motion detecting of some sort will be used to guide the robot toward its user or toward the nearest human activity. Shaft encoders will be used to try to keep track of how far the robot has traveled for future programming, and possibly used to guide it back to a recharging station.

Bump Switches

I used 6 bump switches, at about 60 degrees apart. The front one, left, right and all the back were separated from each other using the voltage divider mentioned in class (also pictured below).

[pic]

(Figure 2 - Converting bump switches to an analog value)

|Switches |Low Analog Value |High AnalogValue |

|Front |5 |30 |

|Right |45 |55 |

|Left |85 |95 |

|Front and Left |100 |105 |

|Front and Right |60 |70 |

|Back and any other |200 |255 |

(Table 1 - approximate values for bump switches)

Infrared Detector Sensor

For avoiding obstacles I used a set of 2 infrared detector/emitter pairs. These were created by collimating the Infrared diodes and gluing them so they face the same direction as the detectors. These have a type of Velcro attached so they can be attached to the main disk, but still remain movable. The type of fastener I used works like Velcro but each side is composed of mushroom shape hooks, this allows it to be fastened to itself and is also much sturdier than regular Velcro, and it has an audible click when fastened tight. The values from the detector range from 85 to 255, I chose to use 90 and 100 as limits for when it detects an obstacle. At 90 it turns very gradually, at 100 it turns abruptly and goes in another direction dependent on the angle it makes with the wall.

[pic]

(Figure 3 - Infrared detector emitter pair)

Motion Detector Sensor

One of my special sensors was a set of 3 motion detectors. With the sensors, the robot should be able to navigate toward human movement. When it detects movement it will rotate toward the movement and then go forward. Ideally without any other people in the area, it should be able to follow the user. This gives it a sociable behavior much like a pet or some humans.

I bought the motion detector modules from Skycraft of Orlando. They had no pinouts so I had to use the pinouts of the chips on the inside to find power and ground. The module runs on a 3.3V supply, but has it’s own voltage regulator so it runs on 5V power. The pins turned out to be, from left to right in the picture of the circuit below, ground, signal, and power. I hooked this up to the analog port directly to see what kind of response I would get. The graph below shows the results, which held true for at least 8 feet.

[pic]

(Figure 4 - UN-hacked Motion detector output)

The module acted like a permanent switch staying at about 2 volts then going to around zero and staying there until reset. This would be good for cases where only one movement is needed to be recorded. However, my robot needed a continuous signal to detect heat without being reset. I found some pyroelectric detectors are powered by 5V and give out a continuous signal of 2.5V with no motion, and when motion is detected, the voltage goes to 5V then to 0V, or vice versa dependent on direction. I placed an oscilloscope on the various legs of the chips, which would be easiest to connect to, and simpler then having to search through the surface mount and traces on the opposite side.

I tested each of the pins and got various heat related signals, I chose pin one of the Motorola chip because it seemed to be the best response for what I needed, and gave a good distance for detecting the heat. To make it easy I clipped the original signal pin and attached the first pin of the Motorola chip to that signal pin with a soldered wire. This would make the module almost identical as the original, only giving a continuous signal output. Due to the nature of the TJPro board I had to modify the wires leading to the detector from the board so, I could get the proper signal on the proper wire. Below is a diagram of the circuit after being hacked, the gray wire is the hacked signal being brought out to the connector. After seeing how the signal changed with the two variable resistors, I choose to keep them as they were from the factory, all the others limited my range of heat detection. Notice the Plastic housing on the pyroelectric detector this gives the detector about 180 degrees of freedom.

The chart below shows the values I received for different distances. This shows that I get a good range of values, which can be used to show the robot that heat is present. To get the data for the chart I used a simple analog recording program that sends the data to the terminal window in ICC, which has a capture option. I used excel to take that list of comma separated values and create the graph of data. My program is listed in the appendices as Analog1.c.

[pic][pic]

(Figure 5 - Motion detector circuitry) (Figure 6 - Hacked motion detector data)

These motion sensors tend to be unpredictable at times. The output depends highly on the settings of the two variable resistors, and since I have no data, I set them to be the same as the best working one. This seems to be with the resistors set at almost zero.

RF Transmitter and Receiver

In my final design I could not get the RF communication working as I could not get the remote board working. The RF modules were from Reynolds Electronics

(). I did test the RF modules by hooking the serial data out of the robot board to the transmitter, and connected the receiver module to the serial cable connected to the COM board to the computer. I used the analog displaying program on the robot and kept the speed at 9600 on the board. The two boards were separated by about 3-4 inches but had no antenna. The data was almost exactly the same, at the beginning of every line there were some errors, but at a lower speed and with an antenna the data would probably be a lot better and able to go the distance of 400+ feet (as per the data sheet).

[pic]

(Figure 7 - RF modules – from Reynolds Electronics datasheets)

Voice Recognition

Additionally without a working remote board, the voice recognition module could not be used. I first tried making my own voice recognition module. Circuit Cellar INK had an article in their February 1998 issue by Brad Stewart. This one claims to offer 16-word voice recognition for around $5. This one uses a 67HC705 and some amplification circuitry. I had little experience with the 705 and could not alter it to be used on the 68HC11 so I decided to try that when I had more time to work on it.

I eventually bought the Voice Direct 364 from Sensory Inc. (). This module offers 15-word recognition in stand-alone mode and up to 60 words if controlled with a microprocessor. The stand-alone mode requires only a few switches, a speaker, microphone, and LEDs or some output reading device for eight bits of data. The device also has voice prompts making it easy to use.

Additional modules

Speech Synthesis

To create a more realistic robot I purchased the RC8650 Voice Synthesizer from RC Systems (). I was trying to create a more humanistic interface between the robot and it’s owner. The synthesizer also has many features including: 7 voices, DTMF tone generator, variable pitch, speed, reverb, and on board voice storage.

All of the controls can be delivered like the speech via a serial connection, or an 8-bit I/O interface. Even volume can be adjusted via these communications. The amount of features made this board very promising in that it could provide much more with minimum programming. The board even has it’s own buffer so it can analyze the speech data and pronounce the words properly, most words it correctly pronounces. There is also a way to change how it pronounces any word.

To interface the board, I connected the serial out of the SCI of the TJPRO board to the Serial input of the voice synthesizer. This meant that I could say anything simply by using a printf statement in my code. This helped when debugging my system as I could have it tell me what mode it was in. One problem with loops is that it tends to repeat what it says a few times if not handled properly. Also when using ICC, the speech tends to isolate itself from the other commands, so when designing a demo involving the speech and the motors, all the motor commands ended up running at once and the speech continued over the speech. For my demo with this problem, I choose to run the motors first and then have it do the talking.

LED matrix display

To provide a better human response to the idea of a robot I thought the idea of a face would make it more like a human. I got the idea from the October 2000 issue of Nuts and Bolts. In this article, the person creates an 8x8-display face using the Maxim MAX7219 display driver (). This can drive 8 seven-segment displays, or an 8x8 matrix. These chips have information in the datasheets that allow it to be hooked up to an SPI system. This made the displays easy to use and provided all the scan coding needed to keep the display lit. Below is the wiring diagram, for the opposite side I switched the columns so I could get a mirror image and minimize coding.

[pic]

(Figure 8 - LED matrix wiring diagram)

Due to time delays, I did not get around to programming the display so I left that as a future improvement. It should be simple to code but at this point, I felt it was best I work on the sensors before working on advancements.

Behaviors

The major behavior of Mr. Firefly is that of a servant, following his master around responding to commands. It should be able to answer the telephone on command. In addition, it should read various groups of information upon command. When left alone it should go into sleep mode if no activity is around for it to follow. Every so often it should wake up check for activity, then go back to sleep until it finds activity.

Additionally I hope to add the programming to the robot, so that when not needed as a servant and has run out of other entertainment, it can become a pet cat or pet dog in a limited capacity. In this mode, it would continue to go toward activity, barking or meowing, and responding to certain sensors. This mode would be mostly for the purpose of entertainment and to blend in more than a box just following the user around.

The “following” behavior also called a “sociable behavior” to perform this I will use the motion detectors. The robot will get a rough estimate of where movement is by receiving a signal from one of three motion detectors placed at 3 points on the robot. When one is triggered it will rotate in that direction some limited amount and continue its normal forward motion. If a person continues to move the robot should adjust itself accordingly. If the person does not move, yet the robot is moving this should trigger the sensor as well allowing it to locate any person in a room. This robot will not follow just it’s user, it will go toward any large heat source. This is one of the problems but assuming there are no radiators in the room, and the robot is limited to a small area this shouldn’t be a problem as it will only be “friendly” to all people not just the user. This behavior can easily be used for a program to turn the robot into a pet dog or even a security robot. This behavior has a variety of uses, which will allow changes in the program for many uses.

The communication uses the two RF modules to send or receive data depending how it is connected; they are connected to the SCI lines and the COM boards.

Currently the robot has collision avoidance, collision detection, through RF can be set up to send data to a computer terminal, and to move toward heat.

Conclusion

At the end of this term, Mr. Firefly is a partial success. Mr. Firefly can now move around avoiding hitting into obstacles or adjust himself when he does hit an object. Mr. Firefly can also move toward humans in a very rough manner. Mr. Firefly is also able to speak any programmed words. Presently he makes comments to what happens to him, he says “Ouch” when he hits a wall, tells the people around him where he is trying to go toward with sayings like “hey you on the right.” Basically, for now he acts like a talking pet dog, following his master around and “barking” comments.

I hope to further advance this robot to its full potential. If I can get the single chip board working I should be able to add the RF, and voice recognition. With some more programming time, I should be able to add the LED matrix display.

Documentation

Deagan, Tim, Prosthetic Sarcasm with Emoticons for Speech, Nuts and Volts, October 2000 pg. 10-14.

J.L. Jones, B. A. Seiger, A. M. Flynn, Mobile Robots Inspiration to Implementation, Second Edition. A K Peters, Natick, MA, 1999.

Martin, Fred, The 6.270 Robot Builders Guide. MIT, 1992.

Mekatronix TJ Pro Manual, 1995.

Mekatronix MSCC11 Manual, 1995.

Stewart, Brad, Low Cost Voice Recognition, Circuit Cellar INK, February 1998.

Datasheets for the RF modules, Max7219 chip, LED displays, Speech synthesizer, Voice direct 364.

Special Thanks To

Dr. Arroyo

Dr. Schwartz

Rand Chandler

Scott Nortman

All the fellow IMDL students

Gail and Steve LaPha

Maxim semiconductors

Without their help, support, and patience my robot would not have been possible.

Appendices

Appendix A

Diagrams of the main systems and wiring (not all wires shown)

[pic]

(Figure Remote board layout)

[pic]

(Figure Main board layout)

Appendix B

Price list of major parts

|Part |Purchased from |Price |QTY |Total |

|Servos |Mekatronix |$10.00 |2 |$20.00 |

|TJPRO board (asmb) |Mekatronix |$65.00 |1 |$65.00 |

|IR detectors |Mekatronix |$3.00 |3 |$9.00 |

|IR emitters |Mekatronix |$1.00 |3 |$3.00 |

|MSC11 board |Mekatronix |$10.00 |1 |$10.00 |

|Voice Direct 364 |All Electronics (Sensory Inc.) |$50.00 |1 |$49.95 |

|LEDs |All Electronics |$.15-$.50 |4 |$1.30 |

| | | | | |

|LED 8x8 Matrix |Hosfelt |$1.00 |2 |$2.00 |

| | | | | |

|Max7219 display chips |Maxim-IC |$0.00 |2 |$0.00 |

| | | | | |

|RF RX/TX |Reynolds Elec. |$10.00 |2 |$20.00 |

| | | | | |

|Resistors and Misc. |Skycraft and Electronics plus | | | |

|Antenna |Skycraft |$1.00 |1 |$1.00 |

|Plastic sheets |Skycraft |$1.00 |3 |$3.00 |

|Motion Detectors |Skycraft |$3.00 |3 |$9.00 |

Appendix C

Code for Mr. Firefly

Analog1.c

/********************************************************************

* Title: analog1.c *

* Programmer: Steven LaPha Jr. *

* Date: 10/24/2000 *

* Version: 1.0 *

* Description: To log the data received from any analog *

* sensor hooked up to the analog(1) port *

* on the tjpro board. *

********************************************************************/

/*********************Includes**************************************/

#include

#include

#include

/********************Constants**************************************/

#define sensorval analog(1)

/********************Main program***********************************/

void main (void)

{

int sense, i, j, k;

init_analog();

*(unsigned char*) 0x7000=0x07 ; /* turn on IR emitters*/

printf("Analog Values of Sensor");

j=1;

while (1)

{

sense = sensorval;

printf("%d,\t %d,\n", j, sense);

for (i=0; i ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download