Jump to content

Contributions:BioPacLogger: Difference between revisions

From BCI2000 Wiki
Lingling (talk | contribs)
Lingling (talk | contribs)
No edit summary
Line 33: Line 33:
==Calibration==
==Calibration==
For skin conductance measurements, we need to first calibrate the amplifier before data are acquired. After configuration setup, press “Set Config”, and a dialog will pop up. Then disconnect the leads to electrodes, press “Calibrate”.
For skin conductance measurements, we need to first calibrate the amplifier before data are acquired. After configuration setup, press “Set Config”, and a dialog will pop up. Then disconnect the leads to electrodes, press “Calibrate”.
==How does the BCI2000 source signal synchronize the MP160 signal in real-time? ==
BCI2000 acquired the MP160 signal from a separate thread, which assigns samples by matching the timestamp between the source signal and the logger samples. BCI2000 does this assignment work within one BCI2000 block.
The MP160 API does not return a timestamp for each sample, so we manually assign the timestamps to the MP160 samples after we get one block of samples from the API. This means the latency of the MP160 logger is one MP160 block duration plus the hardware buffer delay (roughly 25 ~27ms). That is
MP160 latency = BioPacBlockSize/BioPacSamplingRate + (25~27ms).
===Data loss===
The duration is not identical for the MP160 to acquire every data block. Sometimes it is less than expected. So the start time we are assigning to the next block is a few milliseconds earlier than expected. So there is an overlap between the current and next block.(see figure 3 "overlap"). In this case, the later sample will cover the previous one. In reverse, there is a gap between the current and next block.(see figure 3 "gap"). During the gap, the sample keeps the previous value until it gets a new one.
<gallery mode="traditional" widths=650px heights=600px>
File:biopac_logger_data_loss.png|Figure 3: why MP160 data loss happened.
</gallery>


==Parameters==
==Parameters==
Line 84: Line 97:
BCI2000 doesn’t record the data in voltages or microsiemens. We rescale the data to 32 unsigned integers. Below is the scale equation. min is the minimum value of data. max is the maximum value of data. For example, For EDA signal, min is 0, max is 50, for respiration, EGG, and EMG signal, min is negative 10, max is 10.
BCI2000 doesn’t record the data in voltages or microsiemens. We rescale the data to 32 unsigned integers. Below is the scale equation. min is the minimum value of data. max is the maximum value of data. For example, For EDA signal, min is 0, max is 50, for respiration, EGG, and EMG signal, min is negative 10, max is 10.
<gallery mode="traditional" widths=340px heights=150px>
<gallery mode="traditional" widths=340px heights=150px>
File:Equation.png|Figure 3: Data Scale Equation.
File:Equation.png|Figure 4: Data Scale Equation.
</gallery>
</gallery>



Revision as of 23:03, 1 August 2022

Synopsis

The BioPacLogger module enables signal acquisition from BioPac MP160

Location

http://www.bci2000.org/svn/trunk/src/private/Extensions/BioPacLogger

Versioning

Authors

Huiling Huang (huiling@neurotechcenter.org)

Version History

  • 2022-04-19: Initial public release by Huiling Huang (huiling@neurotechcenter.org)

Video Overview


EmbedVideo is missing a required parameter.


Functional Description

Acquires data from BioPac MP160 system: 1)BN-RSPEC(respiration signal) 2)BN-PPGED(skin conductance measurement) 3)BN-EGG2(electrogastrogram) 4)BN-EMG2(Electromyography)

Integration into BCI2000

To enable the extension in your CMake configuration, enable EXTENSIONS_BIOPACLOGGER in the Extensions folder of the CMake GUI and then generate the BCI2000 Visual Studio solution in CMake. Next, open the solution with Visual Studio and rebuild the BCI2000FrameworkSigSrcModule. Then rebuild any signal source module with which you want to use the extension. Once the extension is built into the source module, you can enable it by appending --BioPacLogger=1 to the source module start executable command in your batch file.

Hardware Set Up

Figure 1 shows all the necessary hardware from BioPac, Make sure that you have MP160 and wireless amplifier, power supply for MP 160, Ethernet USB adapter, and Ethernet cable which could connect your BioPac with BCI2000 PC. The hardware connection is simple(Figure 2). Using the Ethernet cable plug on MP 160 and the other side plug on the Ethernet USB adapter. Then connect the adapter to the BCI2000 PC. Alternatively, if your PC got an Ethernet port, you can directly connect the PC with MP 160 using an Ethernet cable.

Calibration

For skin conductance measurements, we need to first calibrate the amplifier before data are acquired. After configuration setup, press “Set Config”, and a dialog will pop up. Then disconnect the leads to electrodes, press “Calibrate”.


How does the BCI2000 source signal synchronize the MP160 signal in real-time?

BCI2000 acquired the MP160 signal from a separate thread, which assigns samples by matching the timestamp between the source signal and the logger samples. BCI2000 does this assignment work within one BCI2000 block. The MP160 API does not return a timestamp for each sample, so we manually assign the timestamps to the MP160 samples after we get one block of samples from the API. This means the latency of the MP160 logger is one MP160 block duration plus the hardware buffer delay (roughly 25 ~27ms). That is MP160 latency = BioPacBlockSize/BioPacSamplingRate + (25~27ms).

Data loss

The duration is not identical for the MP160 to acquire every data block. Sometimes it is less than expected. So the start time we are assigning to the next block is a few milliseconds earlier than expected. So there is an overlap between the current and next block.(see figure 3 "overlap"). In this case, the later sample will cover the previous one. In reverse, there is a gap between the current and next block.(see figure 3 "gap"). During the gap, the sample keeps the previous value until it gets a new one.


Parameters

BioPacSourceCh

The number of active channels of MP160. This number must exactly match the number of wireless transmitters you are planning to connect to MP 160.

BioPacChList

The channel number list of connected channels, which must be in ascending order.

BioPacSourceChType

The list of the corresponding signal type matches the order of BioPacChList. So far, we have implemented respiration, EGG, EMG, and EDA signals, so only four signal types above are allowed.

BioPacEachChSampleNum

The number of samples in each channel to acquire from hardware API. For almost all cases, you can keep it as the default value of 200.

BioPacSamplingRate

The BioPac MP160 supports the following sampling rates: 0.1, 0.125, 0.2, 0.25, 0.4, 0.5, 0.625, 1, 1.25, 2, 2.5, 4, 5, 6.25, 10, 20, 25, 40, 50, 62.5, 100, 125, 200, 250, 400, 500, 625, 1000, 1250, 2000, 2500, 4000, 5000, 6250, 10000, 12500, 20000, 25000, 40000, 50000, 100000, 20000HZ. The maximum sampling rate for BN-RSPEC, BN-PPGED, BN-EGG2, and BN-EMG2 is 2000HZ. So in this case, the maximum sampling rate here is 2000HZ.

State and Event Variables

BioPac_chX is the signal from channel X. X is the channel number.

Data Scale

Different BioPac amplifiers have different signal ranges. Respiration ranges from negative 10 to 10 voltage; EDA ranges from 0 to 50 microsiemens; EMG and EGG range from negative 10 to 10 micro-voltage. These BioPac components will be stored as bci2000 events to be used for real-time feedback or evaluated after the experiment is complete.

Signal Info
Signal Type Signal Range Signal Resolution
Respiration [-10, 10] V 13 bits
EDA [0, 50] µS 13 bits
EGG [-10, 10] mV 16 bits
EMG [-10, 10] mV 16 bits

BCI2000 doesn’t record the data in voltages or microsiemens. We rescale the data to 32 unsigned integers. Below is the scale equation. min is the minimum value of data. max is the maximum value of data. For example, For EDA signal, min is 0, max is 50, for respiration, EGG, and EMG signal, min is negative 10, max is 10.

See also

User Reference:Logging Input, Contributions:Extensions