ece 791/792 progress report project title: the goddard projectunh.edu/ece/department/senior...
TRANSCRIPT
ECE 791/792 Progress Report
Project Title: The Goddard Project
Team Members: Robert Galli, Cassandra DeNunzio, Samuel Cordeiro,
Kevin Tierney, Cameron Perl, Andrew Felicetti
Faculty Advisor: Dr. Thomas Miller
Courses Involved: CS 410, ECE 651, ECE 562, ECE 617, ECE 618, ECE 548,
ECE 714, ECE 757
Project Completion Date: April, 2014
General Problem Definition:
The goal of this project is to design and build a robotic dog modeled after Goddard from the hit
90s TV series, The Adventures of Jimmy Neutron Boy Genius. Sheet metal will be used for the
body of the robot in order to keep the frame lightweight. The sheet metal will be welded together
for structural support. Goddard will travel on four wheels powered by DC motors using
positional feedback. The robot will use a Raspberry Pi as its master device in order to control the
robot, but there will most likely be other slave devices such as the Arduino that help command
the robot, as well. All circuitry, microcontrollers, and motors will be hidden in order to preserve
the integrity and appearance of Goddard. Essentially, Goddard will act and behave as an ordinary
dog from barking, to playing fetch, to being a great companion and friend. Fundamental goals for
the project include design, implementation and testing, and project evaluation due to the nature
of senior project. All members of the team will gain hands-on experience in mechanical design,
electrical design, motor execution, and programming. Successful project completion will yield a
fully functional robotic dog that will be presented and demonstrated at the 2014 University of
New Hampshire Undergraduate Research Conference.
Implementation and Testing:
In order to meet our goals for this project, our team will need to develop a comprehensive plan
and implement it with discipline. Our team has been meeting weekly since the beginning of
September and plans to continue this schedule for the rest of the academic year. It is important
with a large team of six members to meet frequently and discuss how our individual portions of
the project work together to form a greater whole. Meeting minutes are taken and uploaded to
SkyDrive as well as other research and documentation that are of interest. This process
concentrates the information related to the project for anyone on the team to access whenever it
is necessary. On top of weekly group meetings, sub-teams will also meet weekly and each
member will work on his or her own time to accomplish a distinctive function of the robot.
Goddard will need to receive, interpret, and act upon several different voice commands.
Additionally, our robot will need to perform functions autonomously without user interaction.
Goddard will require sophisticated logic in order to meet these criteria. For this reason, our
group has opted to use a Raspberry Pi as the master device in our control system. The Raspberry
Pi is a fully functional Linux computer that can run various open source code libraries and has a
large support community. The Raspberry Pi has 26 GPIO pins that will be used to communicate
with the Arduino Uno as a slave device. The Arduino Uno will be connected to our sensor
network and motors. The Raspberry Pi has more processing power and memory than either of
these slave devices. Ideally most of the computation will be run on the Pi. When the
computation is done, the master device will send a command to the appropriate slave device.
The slave devices will also be able to interrupt the master device. In the case of the motors, the
master device will need positional feedback in order to determine future movements. In the case
of the sensor network, the master device will need to know the values of Photo diodes in order to
determine the distance Goddard is from potential obstacles.
The Arduino Uno will be used to control most of the functions and operations of Goddard. Some
of these functions include tail wagging, barking, LED lights and simulated brain activity. The
reason we are choosing the Arduino Uno is because it is easily programmable and there is a wide
range of open source libraries. Some other advantages of the Arduino Uno include several
input/output pins, low power consumption, and compact nature. The Arduino Uno will also be
used to control the motors using positional feedback.
Programming Software:
Our project relies on several free software components. We will be utilizing NodeJS which is a
public domain web server based on JavaScript which is often used in data intensive real-time
situations. NodeJS will allow us to communicate with Goddard quickly and efficiently. Wolfram
Alpha is a public web source advertised as a “computation knowledge engine” and will work to
provide an answer for just about any question ranging from mathematics to celebrities. Wolfram
Alpha will essentially be Goddard’s brain and knowledge base. The open source software,
eSpeak is a speech synthesizer that will allow Goddard to speak. Google Translate is used in our
project to make Goddard even more intelligent by making him multilingual.
Control System:
Figure 1. Control System Block Diagram
Structure: Sheet Metal
Main Controller: Raspberry Pi
Output Control: Arduino
LEDs
Motor Controller:
Arduino
Two DC Motors for Movement
Additional Movement
Motors
Misc. Action Control: Arduino
Fetch
Bark
Sensor/ Feedback
Control: Arduino
Sonar Range Finder
Photo Diode Sensors
Battery Source: Controllers,
Motors
Figure 2. Raspberry Pi Model B
Figure 3. Arduino Uno
Project Plan:
We have divided the building phases of the project up into tiers. The first tier includes the design
and construction of the robot’s exterior and also its general movement. It is important that the
first tier is completed before moving on to other development phases because it is the intrinsic
foundation of the project. Goddard's body must exist before it can be programmed to perform
actions and respond to commands. After the first tier is completed the following tiers involve
programming the microcontrollers and building the sensor network. Individual group members
working in parallel will do these tasks. Our team is rather large and thus will be broken into sub-
teams to carry out individual functions of the robot. For example, one sub-team will work on
programming Goddard to speak and play audio while another sub-team will work on processing
data from the sensor network. As long as the tasks are independent of each other, the project can
easily be broken up into parts that can be done in parallel.
Thorough testing of the robot will be conducted before moving to the next tier. Goddard’s
movement and motor controls will be tested and once he is able to travel smoothly and be
controlled then the first tier will achieve completion. Testing will include a power
characterization of the servo motors, analysis of positional feedback data and stress testing of the
frame and body. Subsequent tiers will be tested in a similar manner. Once the robot’s function
has been demonstrated for that tier, it will be granted success and the sub-team can move on to
completing another task. Also, when new tiers are completed our group will need to regression
test earlier tiers in order to ensure we haven't broken any of the core functionality.
Project Tiers:
Tier One:
CAD Drawing of Body
Completion of the Body Structure
Controlled Movement (Wired)
Basic Goddard Features
Bark
Lights
Tier Two:
Basic Actions
General Acknowledgements
○ Stay
○ Come
○ Bark
Wireless Interface
Basic Proximity Awareness
Tier Three:
NodeJS Server
Voice Controls
Speech to Text Software
Text Parsing
WolframAlpha Integration
Text to Speech
Autonomous Movement
Tail Wag
Jaw Movement
Tier Four:
Fetch
Facial Recognition
Projector
Project Roles:
Cassandra DeNunzio Executive Project Manager
Programming Specialist
Robert Galli Vice Project Manager
Pi Specialist
Head of IT
Kevin Tierney Motor Drive Architect
Electromechanical Process Manager
Andrew Felicetti Motor Drive Architect
Program Developer
Lead Project Aficionado
Samuel Cordeiro Electromechanical Process Manager
Mechanical Drafter
Cameron Perl Welding Expert
Mechanical Design Engineer
The mechanical processes of the project will be handled mostly by Cameron Perl and Samuel
Cordeiro. Samuel is in charge of creating all necessary CAD drawings and Cameron Perl will
work to turn those designs into fruition. They are both accountable for the foundation of the
robot and its main frame.
Andrew Felicetti and Kevin Tierney will be mostly responsible for motor control of the robot.
This includes movement, direction, and an autonomous drive feature. Both team members will
work with the positional feedback of the motors and the Arduino to properly control Goddard’s
movement.
Cassandra DeNunzio and Bobby Galli will handle the majority of the programming and
microcontroller networking of the robot. They will both be liable for the functionality of
Goddard as a life-like dog and pet. They are in charge of Goddard’s ability to respond to voice
commands and carry out certain voice commands.
Once team members have achieved their main responsibilities listed above they will move into
programming the microprocessors to carry out other functions of the robot. The goal is to build
this project from the ground up and keep adding as many features that time allows to make
Goddard as functional as possible.
Revised Timeline:
5-Dec 25-Dec 14-Jan 3-Feb 23-Feb 15-Mar 4-Apr
General Acknowledgements
Wireless Interface
Proximity Awareness
NodeJS Server
Voice Controls
Autonomous Movement
Fetch
Facial Recognition
Projector
Body Assembly
Revised Budget:
Item Quantity Price
8 ft2 Sheet Metal 22 gauge
1 $32.00
2 ft2 Sheet Metal 16 gauge
1 $18.00
3 ft x 3/16'' Round Stock 12 $30.00
4 ft2 Sheet Metal 16 gauge
1 $18.00
Arduino Uno 2 Donated
Maestro Mini 1 $39.95
Raspberry Pi 1 Donated
PiHub 1 Donated
Battery 2 $200.00
Battery Charger 1 $30.00
Motors, Driver, and Encoder
4 $150.00
Wheels 4 $50.00
Jumper Wires 1(50pc) $10.95
Sonar Range Finders 4 $20.00
IR LED 1(20pc) $7.87
IR Beacon Transceiver 1 $27.95
AA Batteries and Charger 1(5pc) $13.99
Voltage Regulator 3 $3.75
Logic Level Converter 2 $16.00
Microphone 1 $30.00
Speakers 1 $15.00
Acrylic Dome 1 $10.00
LEDs 9 Donated
Total: $723.46
Movement Progress:
Modifications have been made from the original proposal after further research into the torque
and power the motors propelling Goddard would need to have. Originally, Servo motors were
selected as the driving motors for Goddard for the ease of use and compatibility with the mini
maestro and it’s built in software. However, servo-motors did not meet the new minimum power
requirements. It was determined that a brushed DC motor with an encoder for feedback would
be the best choice to drive Goddard. The 12 volt DC Metal Gearmotor with a 64 CPR Encoder
with a 29:1 gear ratio was selected as the best motor use. At 12 volts the motor operates at 350
RPM with a 300mA free run. Two of these motors have been ordered and are currently being
programmed for desired use and bench tested. In addition to the two motors, several parts have
been purchased to make the motors compatible for Goddard. These parts include two Aluminum
L-Brackets for mounting the motors, two Aluminum Mounting Hubs to allow tires to be attached
to the motors, two 90x10mm black wheels and a Dual MC33926 Motor Driver. The purpose of
the motor driver is to provide protection for the motors while delivering power from the battery
and interpreting logic commands from the microcontroller. The motor driver allows for more
accuracy and customization for controlling motor speed and direction. The Mini Maestro will no
longer be used to control the driving motors because it only is used as a servo motor controller.
Instead, we will use the Arduino Uno to control the DC driving motors. The Arduino Uno is
compatible with the motor driver and together they will be used to control Goddard’s movement.
Currently, the motors are connected to the motor driver and using a function generator as a
source for power. All the motor driver’s pins have been soldered allowing the motor driver to be
connected to the Arduino.
Figure 4. DC Motor with Encoder Figure 5. 90x10mm Black Wheel
Figure 6. Dual Motor Driver
Programming Progress:
We have configured a Raspberry Pi with SSH so it can be programmed remotely. Next, we set
up a NodeJS server. This enables us to control Goddard remotely through any device with a web
browser and microphone. The server was tested by configuring a web page and proving that if
text is typed, the Raspberry Pi will receive it and parse it to determine which command has been
issued. We also created an HTML page that launches the microphone app on Android phones.
This will eventually replace the text input that is currently on the website.
The NodeJS app on the Pi connects to Wolfram Alpha giving Goddard the ability to think. We
wrote a shell script to do text to speech conversion using Google's translation engine.
Unfortunately, the voice was female so the shell script was reconfigured to use eSpeak instead of
Google.
We ran into several problems configuring Audio on the Pi. The Pi defaults to outputting audio
via HDMI. A long time was spent changing this to default to the headphone jack so that we
could use text to speech with speakers. The next issue was was that although we could play .mp3
files, we could not hear any audio with the .mp3 file received from Google translate. The issue
was either a PulseAudio or bad MPEG decoders (specifically ffmpeg). Now, we can run "node
prompt.js", type in any question, and the Pi will read back the answer returned from
WolframAlpha. This works on almost every query attempted.
We have also done extensive research on Arduino programming, NodeJS, HTTP, Wolfram API,
Raspberry Pi/Arduino interfacing, infrared beacons, HTML 5 (microphone input), speech to text
and text to speech conversion.
While most of our accomplishments in programming so far are tier 3 goals, we found it
important to first configure the Raspberry Pi as it is essentially Goddard’s brain. Also, we intend
to have Goddard carry out commands via voice communication, so we figured we would start
directly at the point of execution to begin tackling our goals and objectives.
The next steps as far as programming involve remotely triggering Goddard to talk, coding speech
to text, and focusing heavily on interfacing the Arduino Uno with the Raspberry Pi. We have
already begun learning how to use the Arduino Uno with various practice examples and will
soon be ready to integrate our master and slave devices together.
The Arduino Uno is primarily responsible for operating Goddard’s sensor network, and over the
Winter Break Cassie and Bobby will work to order sensors, incorporate them into the design, and
program decision making actions based on Goddard’s external environment.
Structural Progress:
For the structure of Goddard the group had decided on using light weight steel sheet metal.
Using this material meant that the finish product would be light enough to be powered by small
DC motors but would also be sturdy enough to easily contain all of the components necessary for
Goddard’s functions, including the heaviest component, the batteries. In the proposed budget the
team had set aside approximately one hundred dollars to structural material cost, however a
small stock pile of sheet metal was recovered in the workshop of Cameron Perl. This extra metal
reduced the amount of money needed for the body of Goddard to approximately twenty five
dollars, freeing up funds for use in other technologies. Along with the MIG welder being used a
new spot welder will be used for the joints that will be seen from the outside as it produces a
much cleaner looking weld with no extra metal being added to add to the total weight.
The current progress of the body is close to completed. The major part being the body is
finished. It is a rectangular prism measuring 18x12x8 in. with a hinged top for access to the
internal components. The head, because of its complex shape is in the process of being shaped
using a variety of tools including an English wheel and planishing hammer. Also in the head
needs to be space left for; an acrylic dome to showcase Goddard’s brain, an array of LED’s, eye
stocks which is where the forward facing sensors will be placed, and a tongue.
The other smaller pieces of Goddard that still need to be completed are his tail, foot cups, legs
and neck. The legs and neck will be made of a simple and lightweight round stock structure
covered by expandable rubber tubing for the realistic look. This design will allow for a sturdy
base while concealing the wires running to Goddard’s feet and head. The tail is a simple bent
cone shape that will contain a mechanism to allow for wagging. The foot cups needed to be held
off until the motor and wheel dimensions were confirmed so that the motors and wheels will be
contained within the foot cups. The parts have been ordered and arrived so the construction of
the feet will be soon to come. Also the feet will be easily lifted off the motor/wheel assembly,
thanks to the rubber tubing to allow for access to the driving assembly.
Now that the driving parts have been ordered the completion of the body will soon follow and
the plan is to combine the wheel assemblies with the body and have Goddard moving over the
break. Once the structure is complete and no more welds need to be made, Goddard will adorn a
new paint job making him look exactly like the iconic dog from TV, as shown in Figure 7.
Figure 7. Goddard, from Jimmy Neutron Boy Genius
Summary of Future Plans:
Kevin and Andrew will continue coding the Arduino to deliver appropriate commands to control
the motors and work on analyzing the encoder’s signals to eventually provide positional
feedback from the motors.
We plan to focus on interfacing the Arduino and Raspberry Pi over Winter Break. Bobby will
continue to work on text to voice and voice to text conversion and Cassie will design and build
the sensor network that Goddard will use to navigate.
Sam will spend his future efforts making sure all devices receive the right level of power and
designing circuitry with voltage regulation to ensure that this happens. He will also assist in
equipping Goddard with the appropriate sensors.
We plan to meet as a group at least twice over break, as it is paramount that a large group
remains focused on the same goal. At the group meeting Cam will be able to make sure that the
body fits well with the motors. Bobby and Cassie will also be able to test the microcontrollers
and sensors out with Goddard’s body. We will validate that the motors work well with the
sensors for proper navigation and environment awareness. These meetings will be concentrated
on bringing the various components of our sub-projects together into a single, smart robot.