21
g.Nautilus integration in OpenViBE Tutorial for adding a new driver to OpenViBE using g.Nautilus and g.NEEDaccess

g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

g.Nautilus integration in OpenViBE

Tutorial for adding a new driver to OpenViBE using g.Nautilus and

g.NEEDaccess

Page 2: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Agenda

• Hardware and Software requirements

• Preparing the driver

• Implementing the driver

• Testing the driver

Page 3: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Software and Hardware requirements

• Hardware– g.Nautilus

• Software– OpenViBE

– OpenViBE source files

– g.NEEDaccess Client API

– Visual Studio 2010

– Glade Interface Designer Gtk+ 2 (User Interface Designer)

Page 4: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Preparing the driver

The driver integration of g.Nautilus into OpenViBE was done following the corresponding tutorials/instructions from the OpenViBE project website for

– Creating a new driverhttp://openvibe.inria.fr/tutorial-creating-a-new-driver-for-the-acquisition-server/

– Configuring a new driverhttp://openvibe.inria.fr/tutorial-configuring-a-new-driver/

– Building a new driverhttp://openvibe.inria.fr/build-instructions/

Page 5: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Preparing the driver

Run OpenViBE Skeleton generator (installed with OpenViBE) to create driver source files (.cpp, .h and .ui files)

Enter author and company as required

Provide driver and class name, as wellas basic configuration details

Click Generate! To create files in target directory

Page 6: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Generate Visual Studio Project

• Create FindThirdPartyGNEEDaccessAPI.cmake file used by the compiler to find header and library files for g.Nautilus from g.NEEDaccess Client API installation folder in ./contrib/cmake-modules

• Add paths of source files in existing file ./contrib/common/contribAcquisitionServer.cmake, letting the compiler know, that the files must be included

• Declare driver in existing file ./contrib/common/contribAcquisitionServer.inl

• Install OpenViBE required dependencies using the script ./scripts/win32-install_dependencies.cmd

• Set environment variables with ./scripts/win32-init_env_command.cmd

Page 7: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Generate Visual Studio Project

• Generate Visual Studio project using

./scripts/win32-generate_vc_proj.cmd

• Open Visual Studio project created

• Open the files created for the new driver (CDrivergNautilusInterface.h/.cpp and CConfigurationgNautilusInterface.h/.cpp) from the openvibe-acquisition-server project to edit the code

Page 8: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Overview of the driver parts

• Preliminary (CDrivergNautilusInterface)– Edit driver class constructor to initialize variables needed for the driver

– Free resources in destructor if needed

– Insert driver name in getName function to have it later displayed in acquisition server combobox of available drivers

• Configuration (CConfigurationgNautilusInterface)– Opens the dedicated GUI for device configuration

– Uses preConfigure function to get device capabilities and make them available in the configuration dialog

– After configuration is done, postConfigure function gets settings from the user interface

• Acquisition (CDrivergNautilusInterface)– Initialize driver, connect to device, set configuration

– Start acquisition

– Data acquisition loop to get data as long as data acquisition is running

– Stop acquisition

– Disconnect from device, do cleanup

Page 9: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

g.NAUTILUS

32/16/8 channel wireless EEG/ExG, 3-axis accelerometer

24 bit accuracy at 250/500 Hz

a new benchmark in usability

the only wireless system with active electrode technology

g.tec's unique internal Z check with active electrodes

waterproof device with contactless charging

8 hours continuous recording and 2-3 hours charging

2.4 GHz digital transmission, range: 10 meters indoor

full integration into g.tec's software environment

Page 10: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

g.NAUTILUS – dry electrode version

Based on g.SAHARA technology

Fast assembling speed

No gel required

Better artifact resistance due to Lightweight system, active Electrodes and short cables

No hair washing

Page 11: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

g.NAUTILUS – 64 channels

Flexible positioning with g.SCARABEO electrodes

Page 12: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Run OpenViBE Acquisition Server And Designer

After building the project start OpenViBE Acquisition Server with openvibe-acquisition-server.cmd and OpenViBE Designer with openvibe-designer.cmd from destination folder

Page 13: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Configure g.Nautilus in acquisition server

• The OpenViBE Acquisition Server provides driver configuration (Driver Porperties button) and data acquisition settings

• In Driver combobox select „g.tec g.Nautilus using g.NEEDaccess“ and configure device using Driver Properties button

Page 14: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Main g.Nautilus configuration dialog

Main configuration dialog provides basic settings for subject and amplifier as well as filter and channel specific settings in further dialogs

Identifier, Age and Gender are properties required by OpenViBEDevice serial displays the connected g.NautilusSample rate: sample rates for the connected deviceInput source: Electrode, Testsignal or Shortcut as recorded signalsNetwork channel: channel used for connection between base station and headsetNumber of channels: corresponds to the number of channels selected for acquisition.Event channel: digital inputs of g.NautilusNoise reduction: enables selection of channels used for noise reductionCAR: allows to select channels for common average referenceAccleration data: displays accelerations (3D) recorded by headsetLink quality: quality of connection between base station and headsetBattery level: power remaining in the headsetValidation indicator: indicating reliability of data transmitted by headset

Page 15: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Select channels and settings for bipolar, CAR and noise reduction

• Channel specific settings can be changed in the „Select channels and settings for bipolar, CAR and noise reduction“ dialog

Channel section checkboxes enable user to exclude channels from acquisition.

Bipolar channel provides the possibilty to select a channel for bipolar derivation for each channel

CAR is enabled if corresponding checkboxes in main dialog are enabled

CAR checkboxes let the user decide which channel to use for common average reference

Page 16: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Select sensitivity and filter settings for all EEG ChannelsSenstivity and filters (bandpass and notch) can be chosen in the „Select sensitivity and filter settings for EEG channels“ dialog

Sensitvity combobox provides device specific sensitivity for EEG channels

Bandpass filter combobox provides a wide range of bandpass filters for EEG channels

Notch filter combobox enables used to chose either 50 or 60 Hz notch filter

Page 17: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Connect to g.Nautilus and start acquisition

• Click Connect (Verbinden) in the OpenViBE acquisition server to connect to g.Nautilus

• Start acquisition with the Play (Wiedergabe) button

Page 18: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Check data recorded in OpenViBE Designer

Set up signal display using OpenViBE designer

Insert Acquisition client(taken from Acquisition and Network I/O) and Signal display (taken from Visualization->Basic) for testing the data acquisition

Make sure acquisition server is running and start executing the current scenario

Page 19: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Display signals acquired

See acquired signals in OpenViBE Signal Display

Picture above provides signal display of 32 EEG channels, 3 acceleration sensor channels, counter, link quality, battery level, digital inputs and validation indicator

Page 20: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Close signal display and stop data streaming

Stop OpenViBE displaying signals (this closes Signal Display automatically)

Page 21: g.Nautilus integration in OpenViBEopenvibe.inria.fr/openvibe/wp-content/uploads/2016/06/g...g.NAUTILUS 32/16/8 channel wireless EEG/ExG, 3-axis accelerometer 24 bit accuracy at 250/500

Stop acquisition and disconnect

• Click Stopp to end data acquisition

• Click Disconnect (Trennen) to disconnect from device