Monday, June 10, 2013

EEG Interface

[caption id="attachment_144" align="aligncenter" width="300"]EEG Headset Emotiv's EEG Headset[/caption]

I have been awaiting the arrival of this EEG (electroencephalogram) computer interface for a few weeks and it has arrived today! The company that makes this technology is Emotiv and you can purchase your own headset very easily. Check out their website for a tour of the device and to understand how it works.



My Goals with EEG


The main use for this headset is to interface your own brainwaves with a computer. What this means is that you can actually control software (which can manipulate hardware) through your thoughts, emotions, and facial movements. The implications for me using this device are huge because I deal with assistive technology. I'm afraid there will be quite a learning curve with this device, however my first goal will be to control my Robotic Feeding Arm with my thoughts (this would obviously replace the two push-button interface).

I'll keep the blog updated with any progress I make towards obtaining this goal.

Tuesday, June 4, 2013

Much Needed Feedback from a Hobby Servo

[caption id="attachment_128" align="aligncenter" width="242"]Hobby Servo Figure 1. Hobby Servo[/caption]

Background Information


Hobby servos do not give you position feedback. They are selfish. The only feedback they have is internal and the manufactures do not give you access. This internal feedback tells the servo if its current position does not match the desired position (desired position is set by you).

What does this mean?? It means that the only way you can know a servo's location is by sending it somewhere then remembering where it is you sent it. Well of course, you could just look at the output shaft (figure 1) and eyeball its position, but an end-user shouldn't have to nor can you utilize this visual reading in code real time.

Configuring hobby servos in a system (this happens usually when the system is powered on) means there's going to be a potential moment of chaos as the servos are first sent to a known position (from an unknown position.... hence potential chaos). Imagine you wake up in the middle of the night and you need to use the bathroom. First step is to get out of bed, but assume you don't know where you are until you get out of bed... you kinda flail around to achieve your desired position in a fit of insult to your intelligence. That's what it could look like depending how far away the servos are from the configuration setting. Let's avoid this by modifying the servo.

In a Nutshell


By soldering a wire to the wiper of the potentiometer you now have position! There are four wires seen in figure 2: black (ground), red (to power servo), yellow (pwm signal), and now white (voltage reading from pot). The white wire that I attached to the servo is an output lead that can be connected to a device that takes voltage readings. The voltage reading will vary as the output shaft (connected to the pot) rotates which results in you knowing the position of the output shaft.

 

[caption id="attachment_129" align="aligncenter" width="192"]Tap to the Wiper Figure 2. Tap to the Wiper[/caption]

Implications


1) Knowing the position from the servo at start up can allow you to configure the servos so that they never behave erratic. 

2) Implement a 'record mode' which will remember servo positions over time. In other words, you can actually drag the robot around and the chip/computer will remember what you did.

3) I'm not convinced yet, but having voltage measurements on the output-shaft position, velocity can be set/controlled since angular velocity is radians/second. Without feedback you can only adjust velocity through software increment control (which really isn't controlling velocity).

I'm sure there's more but those are the top three I will experiment with.

Technical Aspect


To assess the accuracy and ability of converting the wiper reading to position, I set up an data gathering experiment:

1) A PIC micro-controller sent the servo through 1800 different PWM signals (600 to 2400 increment by 1 each iteration).




[caption id="attachment_132" align="aligncenter" width="300"]Setup for experiment Figure 3. Setup for experiment[/caption]

2) Through each iteration, the wiper data (hooked up to an ADC) was sampled and sent 10 times to a laptop through serial communication. Each serial packet's data consisted of the 10 ADC wiper readings along with the PWM signal value.




[caption id="attachment_131" align="aligncenter" width="300"]Data being sent from controller to laptop Figure 4. Data being sent from controller to laptop[/caption]

3) Using Linux, the data was received and organized into a file stored on the hard drive. Each packet received was broken down by averaging the samples into one data point and stored with its corresponding PWM signal. Click image for a closer look.




[caption id="attachment_130" align="aligncenter" width="113"]File created from data collecting Figure 5. File created from data collecting[/caption]

4) The file's data was imported into Matlab where the information was analyzed (figure 3). The blue plot shows the actual data and the red line under it is the linear curve that was fit. The blue line looks overall linear which means the ADC value will be a good indication of where the servo is. The reason for the data not being more smooth is because the servo itself has an 8-bit chip which is only capable of 256 positions (0.705 degrees per step), where I put it through 1800 positions (0.1 degrees per step). The equation listed is the linear equation for the fit. This equation can be used to determine the PWM signal needed to address a certain position.




[caption id="attachment_133" align="aligncenter" width="530"]ADCvPWM Figure 6. Data plotted with curve fit[/caption]

 Conclusion


The experiment was successful and determined that this technique of modifying hobby servos can be used to gain some of the advantages more expensive servos offer. Despite the data showing promising results, the real tests will come with application.

This experiment already encompassed the first implication, knowing where the servo is when power is turned on. The next experiment to conduct (done partially already) is with the second implication which is recording data from me turning the servo shaft with my hand then having the servo repeat the movements on its own.

Tuesday, May 21, 2013

And it begins again...

[caption id="attachment_118" align="aligncenter" width="300"]RFA Box Robotic Feeding Arm Base[/caption]

My current goal is to build my third robotic feeding arm. The first one is at the Franciscan Hospital, the second is in my possession but was used to compete in the Cornell Cup. This third device will be used hopefully to compete in RESNA student design competition in June. Despite competitions, the school will want to have one to display in the ECE office as a show piece to incoming students/parents.

As I receive more funding, future robots will be built to try out new designs and platforms. Just today I got invited as a semi-finalist (from 70+ applicants) to an interview in hopes to be a finalist for the Sandbox Summer Accelerator! If chosen, I will have the opportunity to kick-start my business over the course of this 12-week program that ends with $30k in cash prizes.

Looks like this could be a busy summer.

Wish me luck!

Monday, May 20, 2013

Friends of Kevin Radio Interview

Earlier this morning I had the pleasure of speaking on air with Kevin Wilett who is a host for WSMN 1590. I first met Kevin during the Sandbox High Growth/Tech Pitch Contest I blogged about earlier this month. Kevin attended the contest as a social media expert giving advice to contestants who needed ideas/help managing sites like Facebook, LinkedIn, Twitter, etc... Through Emil, a sandbox marketing manager, I was invited to go on air where I was asked a series of questions regarding my robotic feeding device and my experience doing the contest.

Please listen to the interview here: Friends of Kevin Radio Interview

Sunday, May 19, 2013

Graduation! part 1...

[caption id="" align="aligncenter" width="576"] Graduation Day[/caption]

One of the biggest accomplishments of my life so far has been graduating college with a degree in Electrical Engineering (with a minor in robotics). It certainly proves that perseverance trumps pure intelligence alone. Ignorance is what set me sailing towards this degree as I sat in front of my computer 4 years ago and said, 'hm, I'm going to be an electrical engineer' then proceeded to Google 'what is an electrical engineer?'.

I was attending North Shore Community College at the time and was doing quite well (to put my abilities in perspective though, in high school, if you organized my graduating class in ascending GPA order, you'd find me spack-dap in the middle). Turns out people have unlimited potential, but some choose to keep it dormant. I did, until fear of not succeeding in my degree caused my social life to go out the door and ended up spending any free time studying.

Turning a long, arduous story short, I graduated Cum Laude and am wearing that yellow stole because I was the president of Eta Kappa Nu (HKN), the electrical and computer engineering society at the University of Massachusetts Lowell. The blog post titled 'Graduation! part 2...' will come next year when I finish my graduate studies in computer engineering. Here's to perseverance!

[caption id="" align="aligncenter" width="490"] Degree in Electrical Engineering[/caption]

 

 

Saturday, May 11, 2013

Sandbox High Growth/Tech Pitch Contest

On May 9th I gave a 2 minute pitch in front of a panel of judges. The pitch I gave was based on the robotic feeding arm concept. I took 2nd place overall out of an original 50+ applicants. The money I won will go towards developing more user interfaces for my robots. I am currently looking into Emotiv's EEG headset. For more information on the Sandbox and to see the other contestants, you can visit this website: High Growth Pitch Contest




[caption id="attachment_56" align="aligncenter" width="625"]2nd Prize Winner 2nd Prize Winner[/caption]

 

Wednesday, May 8, 2013

Cornell Cup

Since September of 2012, Team ARM (Autonomous Robotic Mechanism) has been designing and building a robotic feeding device to compete in the Cornell Cup. The Cornell Cup is a student design competition sponsored by Intel. Many Universities throughout the nation apply to compete in this competition that is held annually at Walt Disney World's Contemporary Resort. My team was 1 of 30 final teams chosen to fly down.

[caption id="" align="aligncenter" width="512"] Here at the Cornell Cup in Walt Disney World[/caption]

[caption id="" align="aligncenter" width="470"] Badge for Cornell Cup[/caption]

[caption id="" align="aligncenter" width="470"] Presenting ARM[/caption]