Moving the cursor via OpenVIBE, ongoing tutorial for beginners

bryanbeusbryanbeus Spanish Fork, UT
edited February 2016 in Software
I'm starting this thread to log my ongoing effort to be able to move my cursor via my OpenBCI setup.

At the end of each of my posts I'll state what questions I'm working on and if any more advanced users can help plug things along, that will be most appreciated and beneficial for everyone who reads this later on.

For starters, here is where I begin.

* Working with Windows 8.1
* My computer is a Cintiq Companion 2 made by Wacom
* I have both an 8-bit Arduino compatible set and a 16 R&D set in the mail
* No programming knowledge to speak of. (A bit of html, so I get the idea of it. But when it comes to actual play, I'm lost.) Consequently, I will be explaining in plain detail what I discover along the way so that other beginners can get answers to their questions
* I have already successfully installed and run the OpenBCI Arduino program via the complete Getting Started tutorial doc

* As a part of this process I will be creating a more versatile 3D printable headset using Autodesk Maya that has more locations available on the 10-20 system

My ultimate goal is to be able to move my cursor using brainwaves well enough to draw a simple smiley face in Photoshop.
At the September 2015 Salt Lake City Comic Con I will be presenting my research in a 45-minute presentation, where I will discuss with fellow artists and creatives the way that EEG and BCI interfaces are affecting creativity.
If I can successfully pull this off, I will do a short live demo as a part of the presentation using my OpenBCI headware.
The presentation will, naturally, contain a much wider portfolio of examples from other examples and creatives. I will simply include my own research and discoveries as a part therein.

Any and all help in the process of creating this is greatly appreciated.

If anyone with considerable knowledge of EEG BCI wants to collaborate on this, I would be willing to invite you as a guest participant in the presentation at Comic Con, provided that you're serious about being involved. You'd be welcome to speak to the audience, tell them about yourself and what you're accomplishing, and then share a brief part of how you've been involved with this Open-Community project.

Thanks for making OpenBCI great!
«1

Comments

  • bryanbeusbryanbeus Spanish Fork, UT
    edited July 2015
    Tonight as I begin this journey I start with a few tip-offs from @wjcroft and @ZimtCreme.

    Moving a cursor via EEG is no small task for a beginner (but, from what I now gather, would not be overly difficult for a more experienced user).

    All of this information is presented while in the process of discovery. I'm bound to get a few things wrong. Keep reading to later posts and you should find corrections.

    The first step along the way is to get familiarized with OpenVIBE.

    OpenVIBE is a free program that can take the information that your OpenBCI headset gathers and use it to tell your computer to do things.

    Among those things are creating visuals of brain activity, recording your EEG sessions, and more.

    Most relevant here is that it can work in conjunction with the programming language called Python.

    As of now, my understanding is that an experienced user can use these three elements--Python, OpenVIBE, and an OpenBCI headset--to make your computer act in the way you desire.

    Assuming that you can get the OpenBCI GUI working properly, head over to the OpenVIBE website and download the software. You'll find plenty of tutorials for the installation there already.

    The good news is that, as of this post, OpenVIBE has a driver built-in that supposedly connects your OpenBCI set without too much knowledge.

    The bad news is that OpenVIBE lists it as "unstable" (I don't know why) and that you'll have to tweak a few things to make it work. I know what one of those things is and will mention it next, but some of those tweaks I have yet to discover.

    The first tweak that I discovered deals with the COM port on windows.

    (For you Mac users, you'll need to deal with the /dev/ USB port files. I don't have answers, but as you goof around you should be able to figure this one out on your own. Once you do, please post how you did it down below!)

    Go to Control Panel-->Hardware and Sound-->Device Manager

    Look down through the list until you find "Ports (COM & LPT)"

    Inside this subdirectory you'll see "USB Serial Port (COM[#])"

    The # will be unique to your computer.

    This USB Serial Port thing is your OpenBCI bluetooth dongle.

    The word COM refers to old-school computer talk. A COM port was the actual spot on your hardware/computer where you would plug in a device, such as a printer etc.
    There used to be only a couple COM ports, because your computer only had so much physical space on it.

    As computers have advanced the need to have an actual, physical port that responds to any particular COM # became unnecessary. Consequently, dozens of COM ports are now available, and different aspects of your computer will use them regardless of whether or not you have an actual device plugged in.

    Here's the deal. OpenVIBE only recognizes COM #'s between 1 and 16. In my case, my computer automatically assigned my bluetooth dongle to the #17. Why, I don't know. But it doesn't matter, 'cause you can fix it.

    Right click on USB Serial Port and click on Properties.

    Then click on Port Settings and Advanced.

    At the top of the dialogue box you'll see a pull-down menu for the COM Port Number.

    Change that to the lowest number possible.

    For me, COM1 was available.

    Click OK and now close all those windows.

    Now, assuming that you've installed OpenVIBE, let's try and get it communicating with our OpenBCI headset.

    Open the application called OpenVIBE Acquisition Server.

    You'll get a pop-up box.

    The first pull down menu is Driver.

    I think the default is set to "Generic Oscillator" or something like that.

    Click on that pull-down menu and find OpenBCI.

    (Here you'll note that, at this time, it's labeled as "unstable." Don't know why, yet.)

    Once you've selected that, click on Driver Properties right next to it.

    You should see a box labeled Device with a box next to it with \\.\COM[#]

    Change that to your COM port #, click Apply, and then close that window.

    Now click on the "Connect" button, wait for the OpenVIBE acquisition server to start communicating with your OpenBCI kit, and then click Play.

    It will take a few seconds to connect, so be patient.

    Soon you should see blue bars appearing at the bottom of the pop-up box for the OpenVIBE acquisition server. They appear under the words "Device Drift."

    If you see the bars wavering back and forth, that's a good sign.

    The next thing you need to understand is the 10-20 system.

    There is a fantastic tutorial found on YouTube here.

    It will teach you how to measure your head so that you can place your electrodes properly.

    Skip the first few minutes and watch just a minute or two in the middle. You'll see a nurse measuring out the crown of a bearded man's head. Just get the idea of what's going on.
    She's measure out certain locations on the head based on common features that all human beings share.
    We'll connect our electrodes to a few of those specific locations further on in this process.

    Don't bother watching the whole thing just now. Once you've got the idea you can move on.

    To move your cursor with your brainwaves you'll need to decide what kind of brainwaves you'd like to measure.

    Ultimately, as our goal here is to draw a smiley face, anything that conflicts with our visual creativity is undesirable.

    However, there are several options in gathering brainwaves that utilize flashing lights. These options are much easier to use than simply "focusing on a certain kind of thought," and so we'll probably end up using both along the way.

    Let's talk about the flashing light method first.

    When you look at a light that's flashing consistently at a certain frequency the visual part of your brain will go into sync with that frequency without any conscience effort on your part.

    This is great, because if you were to look at a light that's flashing at say 5hz, the back of your brain will start creating a 5Hz wave (or, it will also emit waves in multiples thereof, i.e. 10Hz, 15Hz, etc.).

    These waves are known as SSVEP and it's easy for OpenVIBE to detect them.

    You can get a more detailed description here.

    You can also see a cool demo of developers using SSVEP to play chess.

    The next kind of wave we'll consider are those of the parts of our brain that deal with moving our limbs.

    If you were to put a little girl's plastic headband on, that headband would (basically) cover the part of your brain that deals with moving your physical body.

    At the top of your head is the part of your brain that deals with feet. Coming down towards your ears you have the parts that detail with your hands, facial expressions, jaw, and tongue, and larynx respectively.

    As I understand it right now, later we will be able to place electrodes on our heads in these areas, then think about moving a limb and the brain will create a corresponding brainwave.
    Our OpenBCI headset picks this up, sends the info to OpenVIBE, which then detects the brainwave and sends it to our Python code to tell our computer to start moving the cursor.

    If you like, right now you can scan over this great tutorial (for more advanced users) and get an idea of what we're trying to do.

    It's too advanced to really dive into it right now, but should give you an idea of where we're going.

    This tutorial was put together I believe by @jfrey .

    Now, there's one other kind of brainwave that @ZimtCreme mentioned that might come in useful later, but I don't yet know for sure.

    It's called the bereitschaftpotential.

    Supposedly this is a popular brainwave to use in this kind of EEG BCI situation. But we'll see how it goes.

    That's the summation of what I've accomplished today.

    Here are the things I'm currently trying to figure out. If you have answers and can help, that will be great!

    * The first question I have is: What am I missing in terms of connecting OpenBCI to OpenVIBE?
    I understand that there are things I need to do in order to have OpenVIBE acquire all 8 (or even 16) channels. What are these things?
    What do I do to tell the OpenVIBE Acquisition Server to look for a certain brainwave range? I ask because it looks as though the default settings in OpenVIBE Acquisition Server don't pick up the appropriate range.
    What other settings in OpenVIBE Acquisition Server do I need to change before we head over to the OpenVIBE Designer?

    * Second, as a general guesstimate, how much Python knowledge do you, any experienced users reading this, think we'll need? Are there any scripts available already? Or will we have to find a way to come up with something custom?

    * Third, why is the OpenBCI driver in OpenVIBE labeled as unstable? Is there anything we need to be concerned about?

    * Fourth, and finally, looking down through the tutorial by @jfrey, at a quick glance (I'm now looking back over it after several hours of learning in other areas) it seems like we won't need much programming language at the outset.
    But am I wrong?

    Thanks for any help. Love this stuff!
  • Hi,

    You have an ambitious project in there ;)

    In order to move a cursor you need 2 degrees of freedom (horizontal / vertical), which makes 4 classes (left / right ; up / down)... which is a lot for a BCI. Since motor imagery is more about triggering something (traditionally you detect an event when a movement stops with a "beta rebound", it's not something you measure *while you do the movement*), maybe you should go with SSVEP instead. Oh, and there is a *5th* action, which is actually paint something (ie mouse click). Maybe you'll have to think of something to reduce the number of classes (random thought: could be a trick like "toggle the paint when the cursor stops moving for XX seconds,).

    Open(BCI+ViBE) and SSVEP is the next tutorial I plan to do, but I won't go into much details because I'm dealing with my own OpenBCI / OpenViBE project right now and my deadline is near... and I have to actually test this combination.

    Very quickly:

    * connecting OpenBCI to OpenVIBE: just one box to check in the driver's properties of the acquisition server. After that all the "brainwave range" thing occurs in the *designer*, the graphical interface, using temporal filters. Nothing else to change in the acquisition server, except if you are using a subset of the channels.

    * python knowlege: not much, or not at all, depending on what you want to do. To move the cursor, you can just use the OpenViBE box that launches executable files; there must be a program that you could call to control the mouse -- see my tuto about motor imagery about the one-button game for a similar example. As for the interface to give feedback to the user (eg blinking squares), you could use something like LSL -- a network protocol -- to transmit stimulation (aka events) between OpenViBE and an external program. There is python bindings, C#, C++, ... you name it. For higher-level programming I have on github libraries for Processing and vvvv. There is also OSC and raw TCP in OpenViBE.

    *  OpenVIBE labeled as unstable: well, it's just because it's a new driver, that was not much tested before release... and also because the guy who implemented it is not an OpenViBE dev guru (I'm talking about me, so it's okay if I trash myself :D). As far as I'm concerned, though, this driver is as reliable as other methods around there.

    Good luck with your project, I'll try to watch your progress; don't hesitate to report any issue. You "diary" could be a very useful use case :)

  • wjcroftwjcroft Mount Shasta, CA
    For reference, here's the earlier related thread started by Bryan, mentioning SSVEP, OpenViBE and EOG,

    http://openbci.com/forum/index.php?p=/discussion/466/moving-cursor-with-brainwaves-need-some-help


  • bryanbeusbryanbeus Spanish Fork, UT
    Fantastic help, @jfrey . Thanks!

    Right now I'm 3D modeling a headset for the extended 10-20 system, or 10-10 system.

    Open question:

    What's the difference between the 10-20 system, extended 10-20 system, and 10-10 system?

    My understanding right now, after all the research I could do, is that the extended system is simply placing the electrodes at 10% distance throughout--simply put. (I understand that there's a little more to it than that, namely in where you put the extra electrodes and where you don't.)

    (The nasion is the indent in the nose and the inion is the protuberance on the back of the skull. They're the landmarks that we use in setting up the 10-20 system.)

    Is it just that? Or do we change anything else?
  • wjcroftwjcroft Mount Shasta, CA
    There are a lot of maps on the web for the 10-10 system. Another cool resource that you can see on Jeremy's posts is the g.tec g.GAMMAcap. Which has holes at all the 10-10 locations. It's an elastic cap, where the Medium size fits most adult heads.

    The g.GAMMAcap plus the FRI dry electrodes, can provide a 'headset' / cap that fits a wide variety of adult heads. The printed headsets are not as generic.

    The FRI electrodes can also be injected with gel if you want to go for a wet system.
  • bryanbeusbryanbeus Spanish Fork, UT
    Thanks @jfrey and @wjcroft for the very helpful feedback. The comments were a big boost in making the next step forward.

    I'll write a more detailed journal entry soon.

    But for now I wanted to ask you a few questions, @wjcroft, as I'm shifting headset strategies to use the "velcro saline sensors" that you mentioned in other posts.

    Thanks for putting it out there, by the way. Seems really really useful.

    If you can find time to answer these questions, and if you like, when I write my final
    description/instructions of the "creating the headset" part of my
    experience here I can write them in such a way that you can simply
    copy/paste them into your web page at the bottom as a Q&A answer.

    I'll explain later to future eeg-novice reader why @wjcroft's method seems like a better approach than 3D printing a headset.

    The questions:

    1 - The ear clip that you have with the silver buttons, what would you recommend as an ear clip for those who don't want to do the silver button approach? Is there a medical ear clip (with a non-irritating amount of pressure) that will hold the gold cup electrode?
    I did see @jfrey's ear clip here:
    https://github.com/jfrey-xx/OpenBCI_3DPrint_misc/blob/master/stl/ear_gold_v2.stl
    However, I don't know that it will have ample room for the chamois cloth. And, @jfrey, how comfortable is it? Looks like it might get irritating in sessions that last 2 hours+. ?

    2 - With the KCl saline solution, how much KCl do you put in the water? You mentioned something about the Geodesic recommendations, but I couldn't find anything on their website nor elsewhere via Google.

    3 - What's this about the contact lens cleaner? How much do you put in?

    4 - How necessary is the contact lens cleaner to the mixture? If I wanted to save costs, being a beginner and just experimenting, what will happen if I skip the lens cleaner? What exactly does the lens cleaner do in the solution? Just a disinfectant, or more?

    5 - The fact that the OpenBCI board is so vulnerable to being touched by conductive materials is frightening (and not to mention all the other worries about dropping or bashing it). Last thing I want is to fry my board by accidentally spraying a few drops of KCl on it, or having a drop drip onto it from my head.
    Do you have any kind of protective casing for the board?
    If not, has anyone created a 3D-printable protector for the board (and the bluetooth dongle, for that matter)?
    Would a protective casing inhibit the data communication/reliability?

    6 - The bag of KCl I'm purchasing from Amazon has a warning about getting it into your eyes. I'm no chemist and don't know if this is a serious worry, or if it's just as dangerous as getting shampoo in your eyes.
    Having wet KCl on your head sounds a little dangerous, consequently. Is it, though?
    Do these chamois's drip down your head at all?
    Maybe the "ShamWow" effect keeps it from dripping?

    7 - The directions for cleaning left me with a question or two. For one, the cleaning directions were in regards to the silver buttons. I'm assuming they're pretty much the same for the gold-cup electrodes? You just drop them in lukewarm water, swirl them around, and let them dry?

     8 - The amp. Do we need an amp, if we have the most recent OpenBCI board? Or can we just plug the regular gold-cup OpenBCI electrodes in the way we did when we were using 10/20 Paste?

    9 - If we do need an amp, what kind/brand would you recommend and where would we purchase it?

    10 - When describing the application of the velcro to the back of the chamois pocket, you say to attach the soft side of the velcro to the pocket. This confuses me, because from what I understood, the headbands are supposed to be the soft side, and the back of the silver buttons were the sharp/hooked velcro side. Why do the chamois pockets not have hooks on their back, but loops? And where does the hooked velcro go that holds the gold cups to the headband, if not on the pocket?

    11 - (I feel like someone's probably answered this elsewhere, but I haven't seen it in all my searches) What is the corrosion rate on these gold-cup electrodes when using the saline solution? Do these also last only about 30-40 sessions before they need replacing, or do they last longer/shorter?

    12 - Where did you get that clamp/clip for the OpenBCI board--the one in the photo that holds the board to the shirt? It looks like a 3D printed file.
    I might modify it to make a also be a protective case, if it's openly available.

    Finally, one question that I have in general:

    13 - While trying to figure out the 10/20 measuring system I came across one inconsistency in the different instructions.
    Are O1 and O2 up 10% from OZ? Or are they on the same line?
    The video I mentioned above doesn't say thing about going up 10%.
    But this step-by-step pdf file says that you do.
    And these are the best diagrams I found, but still to an inexperienced medical eye one can't really tell.

    Thanks, guys! Hopefully the answers here will help others. Feel free to copy/paste anything I say.
  • wjcroftwjcroft Mount Shasta, CA
    edited August 2015
    Hi Bryan, sorry for the delay answering your questions, I interspersed some replies below.

    > 1 - The ear clip that you have with the silver buttons, what would you recommend as an ear clip for those who don't want to do the silver button approach?

    See this thread for some ideas,


    Also,


    There are a whole range of these. Kind of a typical setup is with two cup electrodes facing each other, via a spring loaded clip. Also checkout the recent thread,


    > 2 - With the KCl saline solution, how much KCl 

    The Google Sites page now has an added section on mixing the solution.


    > 3 - What's this about the contact lens cleaner? 

    Sorry for the confusion, Emotiv uses lens cleaner as their saline. The solution you mix contains the same disinfectant, if you follow the instructions.

    > 4 - How necessary is ...

    Disinfectant is optional, but just a safeguard if you share your headset with other people. If you just use lens cleaner as your saline (not mixing your own), then you have that feature already.

    > 5 - Do you have any kind of protective casing for the board?

    If you use the spray bottle approach and are not over zealous, I've not had any situation where the OpenBCI board was endangered with sprays or shorts from drips. 

    > If not, has anyone created a 3D-printable protector for the board (and the bluetooth dongle, for that matter)? Would a protective casing inhibit the data communication/reliability?


    > 6 - The bag of KCl I'm purchasing from Amazon ...

    potassium chloride is just as safe as sodium chloride, nothing to worry about.

    > 7 - The directions for cleaning left me with a question or two. For one, the cleaning directions were in regards to the silver buttons. I'm assuming they're pretty much the same for the gold-cup electrodes? You just drop them in lukewarm water, swirl them around, and let them dry?

    Yes if you're using gold cup electrodes in the pockets, you don't need to remove from the pockets, just rinse a couple times and let dry.

    > 8 - The amp. Do we need an amp...

    No, the electrodes plug directly into OpenBCI, or via touchproof adapter plugs.

    > 10 - When describing the application of the velcro to the back of the chamois pocket, you say to attach the soft side of the velcro to the pocket.

    If the pockets are glued to the soft side (loops) of the velcro, then the hooks are on the opposite side of the pocket and mate with the headbands, which have soft facing in.

    11 - (I feel like someone's probably answered this elsewhere, but I haven't seen it in all my searches) What is the corrosion rate on these gold-cup electrodes when using the saline solution? Do these also last only about 30-40 sessions before they need replacing, or do they last longer/shorter?

    The gold cup electrodes will last for many many sessions until the plating starts to chip or wear off. The Ag-AgCl buttons have a much thinner plating of silver chloride, which wears off after about 40 sessions, typically. That's why the buttons need replacing periodically.

    > 12 - Where did you get that clamp/clip for the OpenBCI board--the one in the photo that holds the board to the shirt? 

    The clip holding the OpenBCI board to the shirt, comes from one of those conference badge holder clips. Similar to these. Clip to grip shirt on one end, loop of vinyl with snap on other.


    Finally, one question that I have in general:

    > 13 - While trying to figure out the 10/20 measuring system I came across one inconsistency in the different instructions.  Are O1 and O2 up 10% from OZ? Or are they on the same line?

    Same horizontal line; on the circumferential "hat band".

    ----

    Good questions and sleuthing, keep us posted.

    William

  • bryanbeusbryanbeus Spanish Fork, UT
    @wjcroft

    Thank you very much! This all very helpful.

    My Shamwow order gets here tomorrow, so I should be able to finalize everything at that point and sum up the creation process.
  • bryanbeusbryanbeus Spanish Fork, UT
    edited August 2015
    Thanks to @wjcroft and @jfrey I've been able to get all the answers I need, for now, about creating a headset.

    I haven't fully assembled it yet, so I will still discover a few things when it's done.

    But I'm moving into learning how to use OpenVIBE today, and I want to record all my thoughts about headsets before I forget them.

    So, some words on headsets for beginners.

    When I first purchased my OpenBCI 8bit board I assumed that it would be enough for me to get what I needed.

    However, upon completing the introductory tutorial I immediately knew that getting into and out of the EEG electrodes was going to be so time-consuming that I would likely not be able to use the device consistently.

    Without being able to use it consistently, the kind of research I want to do with it would likely not progress.

    The kit wound up sitting on the shelf for several months while I waited for the Spiderclaw V3 to come out.

    The Spiderclaw V3 is a 3D printable headset that integrates natively with the OpenBCI kit.

    You can see details and photos of it here.


    (The headset was renamed to "Ultracortex," which is actually pretty cool when you stop to think about it. Ultra as a root word means "above" or "beyond," and "cortex" is the name of the outer layer of the brain. Cool.)

    Well, when it finally came out I was pumped and ready to go with it, but quickly found that it has limitations.

    There are two big ones: lack of customization options and print-volume.

    First, concerning customization, the headset as you can see only works with the regular 10-20 system.

    This is usually fine, but what if you need to connect the electrodes to your head with a different set up?

    There's actually an expansion of the 10-20 system, logically named "The 10-10 system," or "10-20 system extended."

    Basically, all it means is that you put electrodes in between all the ones you had earlier. Pretty simple.

    And, in order to follow the instructions given in the tutorial by @jfrey, we're going to need to connect to certain spots on the 10-10 system.

    Well, the downside to the Ultracortex is that it's designed such that you can only connect the electrodes to the 10-20 system, and to nowhere else.

    More troublesome is the fact that the structural bars of the Ultracortex actually *cover* areas of the 10-10 system. That means that in order to put an electrode on a spot in the 10-10 system, you might have to actually squish the electrode in between the Ultracortex and your scalp.

    Ouch?

    When doing long sessions, this may or may not become uncomfortable. I can't tell without actually having one.

    Now, I downloaded the Ultracortex model and pulled it into Maya (a software that has 3D modeling capabilities) and tried to see if I could make adjustments.

    Maybe I could add more holes and structural bars until it fit the 10-10 system?

    The 3D file, however, is far too complex and temperamental in its digital makeup for me to want to play with it.

    I tried building my own, but after a few hours decided that I was probably reinventing the wheel. So I went looking for other ideas.

    After searching through dozens of posts, websites, webstores, etc, I came across this design invented by @wjcroft, and it caught my attention.

    "Velcro saline sensors"

    @wjcroft has done an excellent job of explaining his idea.

    I am a complete beginner, so it still took me a two or three read-throughs before I really understood everything.

    All the questions I had I posted above. Thanks for answering them, @wjcroft.

    Here are the reasons why I'm going this route, instead of printing a 3D headset file.

    1 - It's highly customizable. The versatility of the velcro system creates limitless options for placement.
    2 - It's more comfortable. (I've already put together part of it and it is very soft on the head. Wearing it for hours won't be a problem.)
         * A brief note: Between deciding not to use the 3D print file and later discovering @wjcroft's invention I briefly entertained the idea of hiring a friend to simply sew together an EEG headcap for me, into which I would then attach my electrodes myself (maybe through 3D printing some little electrode holders that @jfrey invented.)
         She was willing to do it, too, for a very reasonable price: $20.
         That is a far cry better than the other headsets I've seen, such as the g.Gamma cap, which I've heard costs $230 and doesn't seem to do anything special.
         So, if you would prefer to go the route of finding a head cap, you might post around on Facebook etc. and see if you can find a friend who will do it for you.
         I decided not to go this route, however, because of what @wjcroft mentioned at the beginning of his Velcro Saline Sensor's page--that using such caps for extended periods can cause discomfort.
         My long-term intentions in EEG (beyond the scope of "drawing a smiley face in photoshop") will likely include sessions that last 2+ hours, so finding a comfortable solution is better for me. Whatever works for you, though!

    3 - Low cost investment. I'm still very new to the EEG community, and I don't want to be shelling out cash for things that I may not need a month or two down the road.
    The set up that @wjcroft invented cost me somewhere between $40 and $80 on Amazon, not including shipping. (I have an Amazon Prime membership, which means that shipping was free.)
    I'd have to go back and check how much it was exactly, because I had it mixed it with other unrelated items.
    But, bottom line, it's cost effective.

    4 - I can do it myself. No need to trek over to a 3D print shop and have to communicate what I'm trying to do to someone, then wait for it to actually go through. With this chosen method, once the stuff arrives you can set the velcro headset up in no time.

    One thing I should add is that for the spray bottle in the velcro headset setup I purchased a travel-ready bottle.
    You can see it here: http://www.amazon.com/gp/product/B006XDJCCU?psc=1&redirect=true&ref_=oh_aui_detailpage_o01_s00

    I purchased this instead of the larger bottles because I wanted something that can go in my backpack without my having to worry about it spilling. (Even then, I'll still likely put it inside of a Ziplock bag.)

    Lastly, there are still two things I'm going to print:

    1 - An ear clip for the gold cup electrodes.
    @jfrey made this as a modification he saw somewhere else. I haven't printed it yet, so I don't know if it's comfortable. We'll find out.

    2 - This OpenBCI board protector that clips to your belt.

    You can download the files here.
    https://github.com/OpenBCI/MemoWave/tree/master/OpenBCI/STL/Belt-Shield

    Click on each one of the files and it will take you to a page within where you'll see a 3D rotating image of the pieces that make up the belt buckle.

    To download the files, you click the button labeled "Raw."

    Confused me for awhile.

    I don't know that I'll actually be clipping it to my belt. But I do appreciate the idea of having some protection.

    There's always the danger of accidentally smearing some paste on your board, spilling saline solution, or even just having one of those sparks from your finger that you get walking across carpet happen when you touch your board, which would then be permanently fried.

    I might modify that belt clip eventually and post it here. We'll see.

    Ahh, one final thing...

    So, originally I was working with the simpler 8bit OpenBCI board, which can measure 8 channels.

    But I have a long term interest in EEG and I want to have be able to measure more channels.

    Furthermore, in this simple tutorial, @jfrey mentions that it's best to have 16 channels placed around the "motor cortex" on your head so that you can get more accuracy.

    This may or may not be fully necessary. It looks like from the tutorial that you might get away with less.

    But all the same I decided that since there were some kits that had 16 channels available in the store, I might as well grab one while they were there and use that.

    The first problem I ran into (immediately, actually), is that in order to assemble this "R&D kit," as it is called, is that you are expected to be able to solder together two computer boards.

    Hmm, not good for a novice like me. Don't know the first thing about how to melt together computer parts.

    I'd probably ruin them if I tried.

    I called a friend that's a welder and asked him if it was up his alley, and he said it wasn't. However, he told me that most computer repair stores could probably handle it.

    Sure enough, he was right. I called a local store, Orem Computer Repair here in Utah Valley, and they said it shouldn't be too much of a problem.

    Their initial estimate is that it should cost around $25, maybe a little more. And they can do it while I wait.

    We'll see how that goes down later.

    But for any of you who are confused about what to do with the two separate R&D boards that come in the kit, now you know.

    Thanks for the help everyone. Hope this journal helps other.

    Next up: getting down and dirty with OpenVIBE.
  • bryanbeusbryanbeus Spanish Fork, UT
    Well, I'm having issues with the daisy chain and 32bit board, which is a bit frustrating.

    As far as I can tell, they're simply not working properly.

    I set up everything as per this tutorial.

    In order to do the soldering job I hired a guy with 20 years of soldering experience. He runs a business that specializes in fixing motherboards.

    As far as I can tell he did everything just right. I can't see any difference between his solders and the ones that the OpenBCI board came with originally.

    And he seemed completely professional.

    My 8bit board works perfectly, so I know it's not my computer.

    Here's a more detailed description.

    Here are photos in my dropbox account for reference.
    Included is a photo of what my hardware set up looks like (operating on
    a Wacom Cintiq Companion 2 with Windows 10) and then some screenshots
    of the OpenBCI GUI's behavior.

    After soldering in the female connectors to the 32bit board and inserting the daisy module I then turned on the OpenBCI GUI and proceeded to do a test run.

    Channels 9-16 behave quite erratically and channels 1, 2 and 4 *constantly* pick up noise, even if nothing's affecting the male pins on the board.

    I'm assuming that channels 9-16 are the daisy module channels.

    At
    first they just showed repetitive noise. It did not look like anything
    from a human or non-symmetrical rhythmic source. It looks like something
    that might be either digital or chemical.

    Here's a screenshot.

    The
    thing is, the male pins are clearly connected and active, because if I
    stroke my finger across them, channels 9-16 in the OpenBCI GUI register by going crazy.

    Now
    sometimes after I stroke my finger across the male daisy module pins
    several times they suddenly calm down and behave normally. But not
    always, and any kind of movement of the OpenBCI board immediately starts
    them repeating their rhythmic vibrations.

    Sometimes some of the
    channels amongst 9-16 would calm down, while others would continue
    different rhythmic beats. And sometimes all all the channels (I think)
    would oscillate without a stimulus.

    Secondly, channels 1, 2 and 4
    behaved erratically throughout the experiments. I have no idea why.
    They constantly had a rapid and small pattern and then also a larger
    pattern that oscillated up and down on a very smooth wave.

    I
    really have no idea why any of this would be. Why would the daisy module
    behave properly sometimes, and then freak out at other times? And why
    would channels 1, 2 and 4 show incessant patterns while the other
    channels on the 32bit board had no problems at all?

    Again, I
    really don't think this has anything to do with the soldering job. I'm
    no expert, but I was there the whole time, the guy was very
    professional, and there's nothing in any of the work he did that looks
    out of the ordinary. I've checked over the board closely. No drips of
    metal, no burns, no sloppy edges to the soldering job, same kind of
    metal, etc. I can't see anything wrong with his work, and he was very
    friendly and happy throughout--no behavior that would make me suspect he
    made a mistake and was trying to cover it up.

    Here are the photos again of the set up and screenshots.

    Thoughts?

    Hope the board's not defective.
  • bryanbeusbryanbeus Spanish Fork, UT
    edited August 2015
    Also, besides the questions above, I had one for you specifically, @jfrey.

    On this tutorial here you mention the creation of a "Y cable."

    Where did you get the male pin? Did you cannibalize on of the extra female/male pins that can be used for soldering on the board?

    Does it matter what kind of wire you use for the male pin?

    The guy who did the soldering job for me also made me a Y cable using a common aluminum wire for the male pin. We just cannibalized the extra non-gold cup wires, the ones that have the male-female ends, to make the female ends of the Y cable.

    What do you think?
  • Hello,

    For the Y cable I just combined regular wires that you could use for Arduino and made an ugly soldering job on it. Not sure it's perfect, but it was okay.

    For the daisy module I'm no export, but you should try to test the channels one by one by deactivating the the pins that are not plugged -- by default all channels are used for BIAS I think, which create noise when you don't do that. Also, when you unplug or disable the daisy module ( "c" command, see https://github.com/OpenBCI/Docs/blob/master/software/01-OpenBCI_SDK.md ) does it fix the channels 1, 2 and 4 ?
  • bryanbeusbryanbeus Spanish Fork, UT
    Thanks for the quick reply, @jfrey. This odd behavior from the board is slowing me down.

    I tried all kinds of things today. I tried unplugging the daisy module and running the 32bit board by itself.

    Alas, 1, 2, and 4 still behaved oddly.

    Sometimes, after long periods they would settle down and rail, like the channels on my 8bit board do.

    But then, for no reason at all, they would suddenly start rocking around again.

    When turning on each channel, 1 through 16, one-by-one some of the daisy channels behaved "better," though they would never settle down to the point of being railed.

    Some of the channels--channel 10 in particular--kept their odd behavior despite anything I could do.

    I looked over the chip in daylight. There's really nothing here that my inexperienced eye can see that would cause this problem. The board looks clean and professionally created.

    ? I'm at a loss. This R&D kit is brand new, straight out of the package.

    I tried running my 8bit board (which has always run great) just to see if there was something new in the environment that was changing things.

    The 8bit board still runs beautifully.

    I took more screenshots of the behavior in the OpenBCI GUI and wrote down notes. Take a look, if you can, and let me know what you think.

    https://www.dropbox.com/sh/tbp0ai6gvdkjj8t/AAAhKjoSQX4q9pl2WdE_I9sQa?dl=0
  • wjcroftwjcroft Mount Shasta, CA
    What do you mean by "settle down to being railed"? The channel being railed is an unnatural situation. When the channel is connected to SRB2 and Bias, it should be "settled down". If the channels you're testing have no connection to SRB2 / Bias, then yes, you can expect erratic, unpredictable behavior.

    If you want to test, use a glob of Ten20 and stick various electrodes together. Don't test with free floating pins.

  • bryanbeusbryanbeus Spanish Fork, UT
    Thanks for the reply, @wjcroft.

    Here is where my inexperience is coming in.

    What do you mean by "no connection to SRB2 / Bias..." ?

    Is there some kind of feature that I'm supposed to enable in the GUI to tell each individual channel to look to the SRB2/Bias channel for reference?

    When you say "stick various electrodes together," do you mean to put paste on them and stick the electrodes actually one to another, or just put them on my head?

    Finally, if you take a look in the folder here:

    https://www.dropbox.com/sh/tbp0ai6gvdkjj8t/AAAhKjoSQX4q9pl2WdE_I9sQa?dl=0

    you'll see that there are a number of screenshots, and then also a folder labeled "old."

    The screenshots in the root folder all are setup thus: The 32bit board has electrodes attached to every pin, while the daisy board has no electrodes attached.

    The 8bit board screenshots are of a board with bare pins.

    If you look in the "Old" folder you'll find more screenshots, this time all of the 32bit board.

    Here the 32bit board did not have any electrodes attached.

    The behavior is erratic on the 32bit board in all situations.

    It sounds like from what you said that there may be a feature or requirement that I've forgotten about when setting this up.

    The 8bit board will rail completely--or come close to railing--when it doesn't have any electrodes attached and is left alone. I thought that was normal, but maybe I'm wrong.

    Thanks again for the help.
  • bryanbeusbryanbeus Spanish Fork, UT
    Oh, one more detail about the electrodes connected to the 32bit board in the screenshots that are found in the root folder: all of the electrodes are attached to the upper row of the pins on the board.
  • wjcroftwjcroft Mount Shasta, CA
    Bryan, no EEG amp will behave predictably if the electrodes, reference, and ground (bias) are not connected. All the Analog to Digital circuitry depends on having a "differential" circuit. Such amps measure a microvolt differential between electrode and reference (SRB2).

    You can either have the electrodes, SRB2, Bias on your head. Or 'simulated' by connecting them together. The simulation could use either paste, or just plain alligator clips.

    Have you tested your 32 bit board with electrodes on your head or simulated?

    Behavior of the 8 and 32 bit boards may differ when no electrodes are connected. If so, consider that is just a fluke. The boards are not meant to run without the channels you are using and reference / bias on the head.

  • The EEG channels are deferentially amplified.  The output value is the *difference* between the (+) and (-)/reference electrodes for each channel.  There are no rails in this setup.  If the (+) channel is not connected to a (-)/reference channel then the output is simply floating and will wander randomly through all values, e.g. you will just get "rail to rail" noise.

    Just thought another, alternately worded, explanation might help make things clearer.
  • bryanbeusbryanbeus Spanish Fork, UT
    Thanks so much for these fantastic comments. 

    The 32bit chip does seem to work properly, once I used 10-20 paste and electrodes. 

    More detailed info to come.

    Thanks!
  • bryanbeusbryanbeus Spanish Fork, UT
    And, more excellent news, the velcro saline headset seems to be fully operational.

    Fun stuff!

    Thank you very much, @wjcroft, @jfrey, and @JakeStew for your help. I could not be doing this without you, quite literally.

    It's time to dig into OpenVIBE.

    But first, a question for you, @wjcroft, about the saline headset.

    Here's a picture of the actual hardware.

    image

    To test it out I set it up using the instructions on the webpage and then followed that same "Getting Started" tutorial in the docs section.

    Here's the what the EKG signal on channel 4 is supposed to look like in the OpenBCI GUI.

    image

    Earlier I tried the 32bit board with the regular 10-20 paste and it got the exact same result.

    And I also tried adding on the daisy chain and repeating the exact same thing, only with the EKG nodes attached to channel 12 instead. It worked fine the first time I tried. Afterwards I seemed to mess things up in the GUI and the signal went funky. But by all appearances it was just a user error.

    The signal looked almost exactly the same as the one in the demo. I didn't take a screenshot, but I don't think it was necessary.

    Today I set up the velcro headset and attached it to my head and arms. I used the same velcro straps to attach the saline chamois to my arm and wrist so as to gather data on the EKG.

    Here's what the EKG signal looks like with the velcro setup.

    image


    (Ignore the funky signal on the right. That's from when I moved my arm to press the screenshot keyboard buttons.)

    Notice that the EKG is much more dramatic than it was with the 10-20 paste.

    Is this good, bad, or meaningless?
  • wjcroftwjcroft Mount Shasta, CA
    edited August 2015
    Bryan, hi.

    Congrats on your velcro handcrafting there.

    The ECG signal with the saline looks like it might be about double what you are seeing with the Ten20? Usually there is some small difference, could be smaller or larger. I havent myself done the comparison, and rarely use Ten20 here. You know, regular ECGs are done with stick on foam electrodes (snap connector on top). These contain an Ag-AgCl button at the center skin contact, and a conductive gel (not paste). So that configuration is closer to what I use with the Ag-AgCl button and saline soaked pad. So it might well be that the ECG with Ten20 paste and gold electrodes is farther from the norm used in the foam ECG electrodes.

    Note that the scale reading in the GUI is 'off' when you adjust the scale factor in the CHAN SET tab. In other words, ECG is actually in the millivolt range, not microvolts. But I assume here you did the same config on CHAN SET in both cases. If your CHAN SET scale factors did not match, you could see this kind of effect.

    Did your saline solution mixing, match the instructions with a couple drops of Dawn in the 250 ml container? The detergent helps to cut some of the skin surface oils. Are you able to get a decent EEG alpha with your eyes closed? That is a more important test than just the ECG.

    William

  • bryanbeusbryanbeus Spanish Fork, UT
    edited September 2015
    Here we go again!

    Thanks for the help, @wjcroft.

    I disappeared for awhile because I was out on honeymoon. My wife and I married this last January and did not have time to go anywhere until fall break at her university. We went up to Alaska and went hiking out into the middle of nowhere. Really fun trip. Hope to get back.

    Moving forward.

    The design that you invented seems quite effective, @wjcroft. I really like it and recommend it to anyone who is looking for a similar solution.

    After getting it all assembled I did a 25 min. meditation session. Here's a screenshot of what my brainwaves looked like a few minutes in.

    image

    As far as I can tell the headset is working perfectly.

    I'm not sure how you handled all the points on the 10-20 system, @wjcroft.

    Obviously, due to the curvature of the head one cannot just simply strap long horizontal bands across points F3, F4, P3, and P4 and expect the bands not to twist around at odd angles.

    I came up with a solution as I went along. Here are shots of it.

    (Oh, one note: I had to do this primarily on my own, using nothing more than a flexible drafting ruler and the actual velcro bands. Because of this the measurements are a little off. If you can get someone to help you measure, do. My wife was in the middle of finals week at the time. :) But the good news is that the measurements are just done in velcro, so we can go back and fix things later.)

    I came up with my own solution.

    image

    image

    As you can see, I cut three small strips for each of the four difficult points and have the strips act like a tripod in holding that sensor.

    Do you have a different method, @wjcroft, that you would like to share?

    The saline solution that you posted works great. No drips and easy to create. Love it. Thanks so much for sharing!

    Well, I'm ready to start working in OpenVIBE, and that's what I'm going to be doing all day today.

    But I still have one big question. After looking over the tutorial by @jfrey, I'm thoroughly confused about how to get the daisy module working properly--specifically about the bias and ground channels, and the "Y" connector that we make in this tutorial, and how to connect it all properly and set it up in the software.

    It's been a few weeks since I last put on the system, so I'll wait to ask questions about that until later today, so that my questions come from a fresh memory.
  • wjcroftwjcroft Mount Shasta, CA
    @bryanbeus , very cool. And what you have done with your 'tripods'.

    Most of the time when I'm doing sessions for myself or with a client, I don't have a pre-assembled montage of 10-20 points already setup. Instead I just use whatever points / channels are needed for the current protocol session. And assemble those in a stepwise fashion as described in the Google Sites page on the velcro saline system.

    That is, I place the "hat band" circumferential strip first, with whatever sensors are on it. Then if needed I lay down frontal, parietal, or central left/right straps. These contact the X3 X4 points exactly, but connect on the hat band wherever they project to. In other words those bands do not have to attach at the corresponding X7 X8 points on the hat band; as you discovered, the velcro just runs straight. So I just lay it down flat and attach where it fits on the hat band.

    But I like what you've done, it's more permanently customized for your own head. In my case since I'm changing setups with self and clients, I'm always moving around on different sites.

    ---

    The 'Y' connector is between your two SRB2 reference pins. Many research and QEEG setups also use what is called "linked ears". So your common reference lead would again split (a Y to an inverted Y) and go to left and right ear lobes or mastoids. Not required, but makes the EEG somewhat more balanced. You only need one Bias connection. That's typically done anywhere on the front to back midline.

    Jeremy will likely reply if you have OpenViBE specific questions.

    Again, nice progress,

    William
  • bryanbeusbryanbeus Spanish Fork, UT
    So, yesterday and this evening was a bit frustrating.

    It took awhile to get back to where I was before, and something's wrong right now with the velcro saline headset and I can't figure out what it is.

    At first when I hooked it up everything went haywire.

    I finally took off the daisy module and went back to the 10-20 gel just to figure out if it was a hardware issue, and I went though the "Getting Started" tutorial, and with the paste the channels I tried worked fine. (The tutorial utilizes only channels 2, 4, and 7, and I didn't think to test all the channels while I had everything set up).

    I went back to the velcro saline headset (and have not yet reattached the daisy module) and at first it went haywire again.

    But then I tried turning on each channel individually at the program launch each time, and for whatever reason this time *most* of the channels calmed down.

    The problem is that Channel 1 (and sometimes Channel) is malfunctioning and I'm not sure why.

    image

    I tried using different electrodes in different spots on the head, but always had the same crazy result.

    If I tap the electrode it does seem to go even crazier, I think.

    I haven't tried Channel 1 with the 10/20 gel yet, so I don't know if it's endemic to the velcro saline headset, or what else it could be.

    Channels 2, 4, 5, 6, 7, and 8 all seemed to work perfectly. I picked up an alpha and everything when closing my eyes.

    Channel 3, however, also behaved weirdly.

    image

    It's got a lot more noise for some reason, and I'm not sure that it's actually reading my brainwaves, because I tried switching the electrodes around and Channel 3 behaved in its own manner regardless of where I placed the electrode on my head.

    And those waves seem too exaggerated, also, for me to think they're coming off my head.

    What's going wrong here? Any ideas?

    I think I can move forward with OpenVIBE tonight just using the working Channels (and still without the daisy module). But I'm always worrying (needlessly?) that the OpenBCI module is malfunctioning.
  • bryanbeusbryanbeus Spanish Fork, UT
    Thanks so much, also, @wjcroft for answering those questions above.

    I hate to be a bit of a dunce, but I still don't understand what the deal is with the "Y" cable.

    From what I understand, when the daisy module is attached one doesn't need to hook up separate bias/SRB electrodes for just the daisy module. However, using a "Y" cable to have the Bias/SRB electrodes import to both the daisy and the base modules increases the accuracy. Is that correct? Is there anything I need to do in the software so that system understands what's happening? Should I do this all the time, or is it only important while doing @jfrey 's tutorial and similar projects?
  • wjcroftwjcroft Mount Shasta, CA
    edited September 2015
    I'm not sure what your noise issue is. If it was working fine at one point, then something must have changed. Do you have an ohmmeter there to check your cables? One test you can do with EEG is just to connect any channels you want to test with the reference. (And Bias too.) This will result in a very quiet trace if everything is working fine. The connection can be made by physically pressing the sensors together, say with a clip. In your case if the electrodes are in pockets, wet the chamois with saline, then touch together. You could compare what you see with a direct connect vs connect thru the saline. etc.

    When using any saline system, you have to make sure (as the instructions say), that after wetting the pads, they touch down DIRECTLY with some scalp. It will not work if you do not brush the hair aside at the point and touch down on skin. The signal will go through a bit of hair, but unlikely a solid layer of hair, say a mm thick. The wet pad needs to touch the skin at the point.

    ----

    re: the Y cable. See Joel's comment on this previous thread,


    The SRB2 on main board and daisy are NOT connected to each other by default. That is why you need ONE Y cable.

    The other Y I mentioned is optional. That is, to link the left and right ears for what is called a "linked ears" reference.
  • bryanbeusbryanbeus Spanish Fork, UT
    Thanks for the help, @wjcroft. I think I understand the part about the Y cable now.

    That does leave me with one question, though: Do we need a Y cable for the bias, too? Or does the main board's Bias channel connect with the daisy module's channel?

    Concerning the unexplained noise:

    The good news is that Channel 3 is functioning properly.

    The bad news is that I am now 99% certain (and I could still be wrong) that Channel 1 is malfunctioning.

    I know this because I have both an 8bit and a 32 bit board.

    I used the exact same velcro saline setup with an EKG wrist/arm setup (from the Getting Started Tutorial) on both my 8bit and 32 bit boards.

    Channel 1 on the 8bit board behaved normally. On  the 32bit board, with the exact same setup, it behaved erratically.

    From what I can remember, Channel 1 on the 32bit board has never behaved properly. The image I have posted far above where the Channel was behaving is, to my recollection, an image created using the 8bit board. (Learning to us the 32bit board and daisy module while simultaneously creating the velcro saline setup was too complicated. So I went back to familiar territory to get the headset working. After that my wife and I left on our trip.)

    Not sure what to do. There are no signs of external damage and I see no reason why it would malfunction. I've been ridiculously careful with this thing.

    Suggestions? I can contact @conor_obci via the contact page, but I suspect it will take a long time to get an answer.

    In the meantime I can move forward to the best of my ability, but missing this signal may make the task more difficult. And sending this thing in for repairs is going to make the time-sensitive nature of this project stressful.
  • biomurphbiomurph Brooklyn, NY
    @bryanbeus
    The BIAS from the Daisy Module is connected to the main board BIAS via the BIAS jumper. 

    The issue you are having with channel 1 is not something that we have encountered before. In addition to the testing you did by swapping out the 32bit board with the 8bit board, can you also swap the lead connections? If you have a lead connected to channel 2 that works, swap that out for channel 1 and see if you have the same problem.
  • bryanbeusbryanbeus Spanish Fork, UT
    @biomurph

    Thanks for offering to help!

    I'll be happy to try swapping the lead connections. I am a beginner, though, so I'm not sure what you mean by "lead connections." Do you mean swapping electrodes that work on another channel, such as channel 2, so that they're on channel 1 instead? If so, then yes, I did try that and it produced the same unusual behavior.
  • biomurphbiomurph Brooklyn, NY
    @bryanbeus, The only way to know what is up with your 32bit board's channel 1 is to get it in the shop and put it up on the lift. 
    Please email me joel-at-openbci-dotcom, and we will work out the details.
    Good to know that you have the 8bit to keep hacking with.
Sign In or Register to comment.