1 Introduction to OpenViBE

Jussi T. Lindgren, PhD [email protected] HYBRID / Inria Rennes

J. T. Lindgren / OpenViBE 1 2

Part I What is OpenViBE?

J. T. Lindgren / OpenViBE 2 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 2 3

An open source software platform for BCI

Enjoyed by research labs, clinicians, teachers, game developers and hobbyists worldwide

J. T. Lindgren / OpenViBE 3 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 3 4 OpenViBE Team 2013

Coordination at Inria (group HYBRID @ Rennes, France) • http://team.inria.fr/hybrid/ • Primary research area: Virtual Reality • Project leader: Anatole Lécuyer • OpenViBE lead engineers: Jozef Legény & Jussi T. Lindgren Landscape at Inria: • Involved teams : HYBRID (Rennes), ATHENA (Sophia), POTIOC (Bordeaux), NEUROSYS (Nancy) • Involved personnel: 5 researchers & 5 developers Industry: • Earlier OpenViBE developers Yann Renard & Laurent Bonnet now work at a related startup

J. T. Lindgren / OpenViBE 4 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 4 5 Key features of OpenViBE

• Data acquisition from various biosignal devices • Graphical design of signal processing chains • Plugins for DSP, classification, visualization and more • Online and offline data processing • Core in ++. Interfaces with script languages and various file formats.

J. T. Lindgren / OpenViBE 5 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 5 Computer A or B 6 Client (”Designer”) Architecture Network acquisition

ACME Amplifier TCP/IP Filter Computer A Server Classifier ACME Display Driver VRPN server • Boxes are plugins • Solid arrows denote EBML- encoded streams of different Arbitrary DAG designs are possible types (signal, stimulation, ...) (Shown chain is for illustration only)

J. T. Lindgren / OpenViBE 6 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 6

7 Server: Its mostly about drivers

Vendor Devices BrainMaster Atlantis, Discovery

Brain Products actiCHamp, BrainAmp, ... Emotiv EPOC g.Tec gUSBamp, gMobilab+ MicroMed SD LTM

MindMedia NeXus32B NeuroSky MindSet (MindWave in SVN) OpenEEG MonolithEEG, Modular EEG P2 TMSi Porti32 + more unstable, unsupported & beta drivers + drift correction, software tagging, …

J. T. Lindgren / OpenViBE 7 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 7 8 “Designer” Client Make your own DSP chains

No programming skills required

J. T. Lindgren / OpenViBE 8 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 8 9 Client plugins include

DSP Basic math, detrending, epoching, spatial and temporal filters, spectral analysis, signal generators, statistics, FastICA, windowing, ... Visualizations Signal, Power Spectrum, Graz, Matrix, Topographic Maps: 2D & 3D, Cue Image, Voxel Display, ... Classifiers SVM, LDA Other Script language interfaces, file I/O, etc ...

J. T. Lindgren / OpenViBE 9 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 9 10 Client: Various real-time displays

J. T. Lindgren / OpenViBE 10 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 10 11 Some approaches implemented on OpenViBE

P300 Neurofeedback

SSVEP Motor Imagery

J. T. Lindgren / OpenViBE 11 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 11 12 OS’es & dev-tools supported

Linux: source only

GNU C++ build environment required

Ubuntu: LTS & latest. Fedora: 2 latest

Windows: binary available or compile with MSVC

In SVN: Visual Studio IDE support (release in June-July 2013) Windows XP & Windows 7

J. T. Lindgren / OpenViBE 12 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 12 13 Software requirements

• Mandatory dependencies • Server: Cmake, Boost, GTK • Client: Cmake, Boost, Ogre, OIS, CEGUI, GTK, • Strong recommendations • Client: VRPN, ITPP • Optional • Client: ALUT, Eigen3, Lua, Matlab, Python27, Vorbis

• On , most dependencies are used from distribution packages or downloaded by the installer • On Windows, the installer downloads the deps

J. T. Lindgren / OpenViBE 13 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 13 14 License

v0.15.0 and before: Codebase mostly under LGPL 2 Some plugins under GPL2 Near future: The whole codebase will likely switch to

Want to see your code in the OpenViBE distribution? • New stuff : New plugins, drivers, scenarios and applications can be freely contributed. You keep your rights. • Changes to core components: Rights transfer to Inria required

J. T. Lindgren / OpenViBE 14 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 14 15 Commitment to OpenViBE

• Past development effort: ≈ 22 man-years at Inria (and various multi-partner projects since 2005) • On-going support (2013-2015): 4 Inria engineers with 100% allocation to OpenViBE • Inria startup: Mensia Technologies (launched in Nov 2012) can support commercial users of OpenViBE

More information at http://openvibe.inria.fr

J. T. Lindgren / OpenViBE 15 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 15 16

Part II Interoperability

J. T. Lindgren / OpenViBE 16 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 16 17 Current I/O plugins in OpenViBE

File I/O Direct I/O Format Read Write Type Read Write BCI2000 X Lua Stim Stim BCI comp. IIIb ASCII Matlab X X Brainamp X Python X X TCP/IP EBML CSV X X VRPN X X EDF X GDF X X OV (≈ EBML) X X

Raw X

J. T. Lindgren / OpenViBE 17 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 17 18 Understanding OpenViBE

Well-defined kernel interfaces and stream specifications exist

Good to know… • OpenViBE uses 32:32 fixed point simulated time, in seconds • OpenViBE .ov files are catenated EBML chunks w/o headers • There is no SDK: build against the OpenViBE source tarball

User and developer documentation gets you started http://openvibe.inria.fr/documentation-index/

J. T. Lindgren / OpenViBE 18 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 18 19 Making OpenViBE understand ‘XYZ’

Plugin contributions are very welcome

E.g. • Readers/writers for new file formats • Language plugins (like Matlab & Python boxes) • Boxes to pass data to/from external software • Drivers that actually read from another application • TiA plugin already exists as an extension from Gipsa-Lab

J. T. Lindgren / OpenViBE 19 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 19 20

We’re happy to collaborate on developments

Catch us by email, forum, or IRC

http://openvibe.inria.fr/contact/

J. T. Lindgren / OpenViBE 20 J.T. Lindgren: Introduction to OpenViBE BCI Meeting 2013 / M-5 20