Difference between revisions of "Contributions:gNautilus"

From BCI2000 Wiki
Jump to: navigation, search
(Initial documentation)
 
(Source Code Revisions)
 
(21 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
==Synopsis==
 
==Synopsis==
The g.Nautilus acquisition module enables signal acquisition from the g.Nautilus device via the g.NEEDaccess API.
+
The g.Nautilus is a biopotential amplifier with wireless transmission technology with either wet or dry electrodes. It reads in up to 32 signal channels and 8 trigger channels.
  
 
==Location==
 
==Location==
http://{{SERVERNAME}}/svn/trunk/src/contrib/SignalSource/gNautilus
+
http://{{SERVERNAME}}/svn/trunk/src/core/SignalSource/g.NautilusSource
  
 
==Versioning==
 
==Versioning==
 
===Author===
 
===Author===
Griffin Milsap (griffin.milsap@gmail.com)
+
Kristopher Kaleb Goering (kaleb.goering@gmail.com) University of Kansas
 +
 
 
===Version History===
 
===Version History===
*V0.5 -- Analog Signal Acquisition
+
Version 1.0: July 2015
 +
*Supports a single g.Nautilus
 +
*Referencing by any channel
 +
*Supports filters
 
===Source Code Revisions===
 
===Source Code Revisions===
*Initial development: 4727
+
*Initial development: 4928
*Tested under: 4727
+
*Tested under: 4942
*Known to compile under: 4727
+
*Known to compile under: 4942
 
*Broken since: N/A
 
*Broken since: N/A
  
Line 19: Line 23:
 
The g.Nautilus is a wireless headset by g.tec, and is the first in their product line to use g.NEEDaccess exclusively for realtime access.  This documentation explains the parameterization and specifics on how to set up the system.
 
The g.Nautilus is a wireless headset by g.tec, and is the first in their product line to use g.NEEDaccess exclusively for realtime access.  This documentation explains the parameterization and specifics on how to set up the system.
  
'''NOTE:''' As of the time of writing, this module is at release V0.5.  As such, it is not necessarily feature complete. The current g.NEEDAccess API BETA 7XX has not implemented all functionality that will eventually be supported in this module.  Also, timing is pretty awful.  As of right now, the acquisition module is not recommended for real-time closed-loop use with BCI2000.
+
'''NOTE:''' As of right now, g.Nautilus is only supported by Windows 7 with 32 bit and newer. g.Nautiulus can only be built using Visual Studio on Windows.
  
===Configuration===
+
Install g.NEEDaccess_Sever on a 32bit machine. Ensure the device is charged and connected to the base station (refer to the included documentation for help with this).  Start BCI2000 with the gNautilusSource module.
Install g.NEEDAccess on your machine, along with necessary g.tec drivers.  Ensure the GDSDataServer is running by checking in services.msc. 
 
 
 
'''NOTE:''' As of right now, g.NEEDAccess BETA 7XX appears to only support Windows 7+ 64 bit operating systems.  As such, a 64 bit build of BCI2000 is required to make the g.Nautilus binary.  g.Nautiulus can only be built using Visual Studio on Windows.
 
 
 
Ensure the device is charged and connected to the base station (refer to the included documentation for help with this).  Start BCI2000 with the gNautilus source module.
 
  
 
==Parameters==
 
==Parameters==
The following parameters are available for configuring the Blackrock source module. You will find these parameters in the Source -- Signal Properties section.  
+
* '''SourceCh''' represents the total number of channels to be logged from the source module.
 
+
* '''SampleBlockSize''' should be set equal to the size of the sample block pulled from the device. <br/>
===SourceCh===
+
** '''NOTE:''' <span style="text-decoration: underline;"> 25 and up found to work best during testing for 250Hz</span>
The g.Nautilus claims to support 64 channels via its APIThe module has only been tested up to 32 channels.
+
* '''SampleRate''' determines the rate at which the device samples data. <br/>
 
+
** '''NOTE:''' <span style="text-decoration: underline;">Only the following sample rates are currently supported by the API: 250Hz and 500Hz.</span>
'''NOTE:''' If less than 32 channels are acquired, only the first SourceCh channels will be acquired from.
+
* '''ChannelNames''' is a convenience parameter.  Name channels here and they can be referenced by these names later.
 +
* '''SourceChOffset''' should be set to a list of "0"s -- one 0 for each channel as indicated by SourceCh, separated by spaces.
 +
* '''SourceChGain''' should be set to a list of "1"s -- one 0 for each channel as indicated by SourceCh, separated by spaces.
 +
* '''DeviceIDMaster''' is the serial number identifier of the master g.Nautilus device.  This serial can be found on the physical device and is typically in a "'''NB-20XX.XX.XX'''" format.  This parameter can also be set to "'''auto'''" if there is only one g.Nautilus device connected to the machine.
 +
* '''DeviceIDs''' is a list of device serials (typically in "'''NB-20XX.XX.XX'''" format) which corresponds to the devices to record channels from.  One of these serials must be specified as the master device in the "DeviceIDMaster" parameter.  This parameter can also be set to "'''auto'''" if there is only one g.Nautilus device connected to the machine<br/>
 +
** '''NOTE:''' <span style="text-decoration: underline;">Device slaving has not been tested. </span>
 +
* '''RefChList''' is a list of channels which can act as "Reference" channels for each device.  If left blank, no channel will be used as a reference, and the raw signal will be recorded in the output. <br/>
 +
** '''NOTE:''' <span style="text-decoration: underline;">If specifying reference channels, there must be one reference channel per device specified in "DeviceIDs" in the same order. </span>
 +
* '''SourceChList'''
 +
* '''FilterEnabled'''
 +
* '''FilterHighPass'''
 +
* '''FilterLowPass'''
 +
* '''FilterModelOrder'''
 +
* '''FilterType'''
 +
* '''NotchEnabled'''
 +
* '''NotchHighPass'''
 +
* '''NotchLowPass'''
 +
* '''NotchModelOrder'''
 +
* '''NotchType'''
 +
* '''SourceBufferSize'''
 +
* '''EnableAccelerationData''' is a toggle button to enable acceleration data and store them in synchronous states AccelerationX1, AcceleratioY1, and AccelerationZ1.
 +
** '''NOTE''' <span style= "text-decoration: underline;"> To record acceleration data, at least one analog channel must also be recorded. </span>
 +
* '''EnableCounterInput''' is a toggle button to enable the counter data and store it in the synchronous state Counter1.
 +
** '''NOTE''' <span style= "text-decoration: underline;"> To record counter data, at least one analog channel must also be recorded. </span>
 +
* '''EnableLinkQuality''' is a toggle button to enable the link quality data and store it in the synchronous state LinkQuality1.
 +
** '''NOTE''' <span style= "text-decoration: underline;"> To record link quality data, at least one analog channel must also be recorded. </span>
 +
* '''EnableBatteryLevel''' is a toggle button to enable the battery level data and store it in the synchronous state Battery1.
 +
** '''NOTE''' <span style= "text-decoration: underline;"> To record battery level data, at least one analog channel must also be recorded. </span>
 +
* '''EnableDigitalInputs''' is a toggle button to enable both digital input ports and store them in synchronous states DigitalInput1 - DigitalInput8.
 +
** '''NOTE''' <span style= "text-decoration: underline;"> To record digital input, at least one analog channel must also be recorded. </span>
 +
* '''EnableValidationIndicator''' is a toggle button to enable validation data and store it in the synchronous state Validation1.
 +
** '''NOTE''' <span style= "text-decoration: underline;"> To record validation data, at least one analog channel must also be recorded. </span>
  
===SamplingRate===
+
==Trigger Channels==
Only the following sample rates are currently supported by the API: 250 Hz and 500 Hz.
+
===Acceleration===
 +
Acceleration is stored in three separate states with the axis labeled, i.e. the acceleration on the x-axis is stored in AccelerationX1.
 +
The g.Nautilus records the acceleration between -6g and 6g. It is then translated into a value between 0 and 65535 with the equation
  
===SampleBlockSize===
+
<math>\lfloor((acceleration + 6) / 12) * 65535\rfloor</math>
Sample block size must be set to an integer multiple of the minimum sample block size corresponding to the current SamplingRate.
 
  
'''NOTE:''' As of V0.5, and g.NEEDAccess BETA 7XX, a SampleBlockSize set to the minimum block size results in non-realtime operation.  Please specify a multiple of at least 2 * minimum block size.
+
Thus if the acceleration was 0 then the state would have the value 32767.
  
*250 Hz -- 8 samples per block (block length of 32 ms, system clocked at 31.25 Hz)
+
===Counter===
*500 Hz -- 15 samples per block (block length of 30 ms, system clocked at 33.33 Hz)
+
Counter is a value that is constantly increasing in value and then repeats starting at 0. It is stored in Counter1.
  
===ChannelNames===
+
===Link Quality===
Leave this blank and channels are numbered. See Operator Log for information about correct channel names.
+
Link quality is a value between 0 and 100. It is stored in LinkQuality1. When link quality falls bellow 10% the first time, BCI2000 will give a warning.
  
===HostIP, HostPort, LocalIP, LocalPort===
+
===Battery Level===
This defines the UDP connection to the GDSDataServer.  If the service is running on your machine (see services.msc), the GDSDataServer will be listening to UDP packets on port 50223 (Default) at localhost (127.0.0.1). By default, the server will send messages to the listening process (localhost -- 127.0.0.1) on port 50224.  The defaults here will be used in most circumstances.  Consult your network administrator if your acquisition system is different.
+
Battery level is a value between 0 and 100. It is stored in Battery1. When battery falls bellow 10%, BCI2000 will give a warning and again when it falls below 5%.
  
'''NOTE:''' Ensure UDP communications on port 50223 and 50224 are unblocked and uninterrupted by any firewalls between the server and the client.
+
===Digital Input===
 +
Digital input port is on the Base Station. The value is between 0 and 255 and then separated into to a binary number which is then saved in a state with the corresponding number of the bit, i.e. bit 5 is stored in DigitalInput5.
  
===NautilusSN===
+
[[File:gNautilusDigitalInput.jpg]]
This is the "name" of the device to acquire from.  The serial number on the base-station is used here (Format: NB-20XX.YY.ZZ).  Check the operator log for discovered devices and troubleshooting hints.
 
  
===NetworkChannel===
+
===Validation Indicator===
Channels 11-18 are available for communicating with several g.Nautilus devices in the same room. In order to ensure uninterrupted connections, use different NetworkChannel settings for each g.Nautilus in the room.
+
Validation indicator is a value of 0 or 1. It is stored in Validation1. If it is 0, then the data may not be valid. If it is 1, the data is valid.
  
==Future Work==
 
*Autoconfiguration!
 
*Parametrization of Sensitivity
 
*Selective Channel Acquisition
 
*Digital Input as States
 
*Head Mounted Accelerometer input as States
 
*Signal quality indicator states
 
*Battery life check
 
*BCI2000 Integrated impedance check mode
 
 
==See also==
 
==See also==
 
[[User Reference:Filters]], [[Contributions:ADCs]]
 
[[User Reference:Filters]], [[Contributions:ADCs]]
  
 
[[Category:Contributions]][[Category:Data Acquisition]]
 
[[Category:Contributions]][[Category:Data Acquisition]]

Latest revision as of 19:04, 31 July 2015

Synopsis

The g.Nautilus is a biopotential amplifier with wireless transmission technology with either wet or dry electrodes. It reads in up to 32 signal channels and 8 trigger channels.

Location

http://www.bci2000.org/svn/trunk/src/core/SignalSource/g.NautilusSource

Versioning

Author

Kristopher Kaleb Goering (kaleb.goering@gmail.com) University of Kansas

Version History

Version 1.0: July 2015

  • Supports a single g.Nautilus
  • Referencing by any channel
  • Supports filters

Source Code Revisions

  • Initial development: 4928
  • Tested under: 4942
  • Known to compile under: 4942
  • Broken since: N/A

Functional Description

The g.Nautilus is a wireless headset by g.tec, and is the first in their product line to use g.NEEDaccess exclusively for realtime access. This documentation explains the parameterization and specifics on how to set up the system.

NOTE: As of right now, g.Nautilus is only supported by Windows 7 with 32 bit and newer. g.Nautiulus can only be built using Visual Studio on Windows.

Install g.NEEDaccess_Sever on a 32bit machine. Ensure the device is charged and connected to the base station (refer to the included documentation for help with this). Start BCI2000 with the gNautilusSource module.

Parameters

  • SourceCh represents the total number of channels to be logged from the source module.
  • SampleBlockSize should be set equal to the size of the sample block pulled from the device.
    • NOTE: 25 and up found to work best during testing for 250Hz
  • SampleRate determines the rate at which the device samples data.
    • NOTE: Only the following sample rates are currently supported by the API: 250Hz and 500Hz.
  • ChannelNames is a convenience parameter. Name channels here and they can be referenced by these names later.
  • SourceChOffset should be set to a list of "0"s -- one 0 for each channel as indicated by SourceCh, separated by spaces.
  • SourceChGain should be set to a list of "1"s -- one 0 for each channel as indicated by SourceCh, separated by spaces.
  • DeviceIDMaster is the serial number identifier of the master g.Nautilus device. This serial can be found on the physical device and is typically in a "NB-20XX.XX.XX" format. This parameter can also be set to "auto" if there is only one g.Nautilus device connected to the machine.
  • DeviceIDs is a list of device serials (typically in "NB-20XX.XX.XX" format) which corresponds to the devices to record channels from. One of these serials must be specified as the master device in the "DeviceIDMaster" parameter. This parameter can also be set to "auto" if there is only one g.Nautilus device connected to the machine.
    • NOTE: Device slaving has not been tested.
  • RefChList is a list of channels which can act as "Reference" channels for each device. If left blank, no channel will be used as a reference, and the raw signal will be recorded in the output.
    • NOTE: If specifying reference channels, there must be one reference channel per device specified in "DeviceIDs" in the same order.
  • SourceChList
  • FilterEnabled
  • FilterHighPass
  • FilterLowPass
  • FilterModelOrder
  • FilterType
  • NotchEnabled
  • NotchHighPass
  • NotchLowPass
  • NotchModelOrder
  • NotchType
  • SourceBufferSize
  • EnableAccelerationData is a toggle button to enable acceleration data and store them in synchronous states AccelerationX1, AcceleratioY1, and AccelerationZ1.
    • NOTE To record acceleration data, at least one analog channel must also be recorded.
  • EnableCounterInput is a toggle button to enable the counter data and store it in the synchronous state Counter1.
    • NOTE To record counter data, at least one analog channel must also be recorded.
  • EnableLinkQuality is a toggle button to enable the link quality data and store it in the synchronous state LinkQuality1.
    • NOTE To record link quality data, at least one analog channel must also be recorded.
  • EnableBatteryLevel is a toggle button to enable the battery level data and store it in the synchronous state Battery1.
    • NOTE To record battery level data, at least one analog channel must also be recorded.
  • EnableDigitalInputs is a toggle button to enable both digital input ports and store them in synchronous states DigitalInput1 - DigitalInput8.
    • NOTE To record digital input, at least one analog channel must also be recorded.
  • EnableValidationIndicator is a toggle button to enable validation data and store it in the synchronous state Validation1.
    • NOTE To record validation data, at least one analog channel must also be recorded.

Trigger Channels

Acceleration

Acceleration is stored in three separate states with the axis labeled, i.e. the acceleration on the x-axis is stored in AccelerationX1. The g.Nautilus records the acceleration between -6g and 6g. It is then translated into a value between 0 and 65535 with the equation

\lfloor((acceleration + 6) / 12) * 65535\rfloor

Thus if the acceleration was 0 then the state would have the value 32767.

Counter

Counter is a value that is constantly increasing in value and then repeats starting at 0. It is stored in Counter1.

Link Quality

Link quality is a value between 0 and 100. It is stored in LinkQuality1. When link quality falls bellow 10% the first time, BCI2000 will give a warning.

Battery Level

Battery level is a value between 0 and 100. It is stored in Battery1. When battery falls bellow 10%, BCI2000 will give a warning and again when it falls below 5%.

Digital Input

Digital input port is on the Base Station. The value is between 0 and 255 and then separated into to a binary number which is then saved in a state with the corresponding number of the bit, i.e. bit 5 is stored in DigitalInput5.

GNautilusDigitalInput.jpg

Validation Indicator

Validation indicator is a value of 0 or 1. It is stored in Validation1. If it is 0, then the data may not be valid. If it is 1, the data is valid.

See also

User Reference:Filters, Contributions:ADCs