Giter Club home page Giter Club logo

luisqtr / exciteometer Goto Github PK

View Code? Open in Web Editor NEW
40.0 7.0 3.0 59.13 MB

The Excite-O-Meter is a user-friendly Unity plugin for XR creators to integrate physiological user information in the development and evaluation of XR content. Specifically, it allows to record, analyze, and visualize validated metrics of heart activity from the chest strap sensor Polar H10 and movement trajectories from VR headsets.

Home Page: http://exciteometer.eu/

License: GNU General Public License v3.0

C# 97.61% ShaderLab 2.39%
unity signal-processing user-modeling virtual-reality movement-analytics heart-rate-variability

exciteometer's Introduction

Excite-O-Meter

Contributors Forks Stars Licence Release

Quick links


Description

The Excite-O-Meter (EoM) is a package that extends a standalone Unity project with functionalities to easily record users' data in experimental sessions. It captures heart and motion activity, automatically extracts relevant data features, and visualizes the data post data collection directly in your compiled desktop application. Suitable for Unity developers wanting to analyze body responses in users or researchers conducting empirical studies in XR.

teaser


The EoM enables the integation of heart activity and movement analysis in any standalone application created with Unity, intended for Extended Reality (XR). This plugin contains all the logic to record data from external wearable sensors, log into persistent files, and visualize the captured data without leaving the Unity Editor.

The tool is simple to use and doesn't require coding. The EoM is particularly suitable in two use cases: 1) for hobbyists or Unity developers wanting to measure the body responses that your application induces on your users. 2) for researcher running scientific experiments (e.g., psychology or behavioral research) in XR and wanting to easily collect data using a Unity environment that you created or found online.

The EoM may be used without external wearable sensors. However, the tool's main advantage is the easy integration with body sensors compatible with LSL. Currently, it is compatible with the chest strap sensor Polar H10 to capture heart rate (HR) and heart rate variability data (HRV), (see top-right image). It also records movement from any object in the scene, useful to record head movement from Virtual Reality (VR) headsets record headsets. Additionally, screenshots and manual string markers can be added to label specific events occurring while users interact with your XR environment. Finally, it includes a data visualizer to review the session of the user offline (see bottom-right image), showing in synchrony all the time-series data, screenshots, and markers. Everything works in the Unity Editor and in the final compiled application.

How to use?

Note: The description below is a summary of the complete step-by-step user manual available in this link.

The EoM includes two parts:

  1. The (Excite-O-Meter|Devices), a compiled software (versions for Android and Win10) that interfaces the physical sensor with Unity.
  1. The EoM Unity package that integrates the functionalities in your custom standalone Unity project.
  2. The script EoM_DataReceiver.cs can be attached to any existing scene to read the values from physiological data and custom markers and be processed as desired.

Unity prerequisites

The EoM package already ships the library dependencies LSL for collecting time series, and UI Extensions to visualize time series as lines in the Unity UI. In addition, your Unity project requires the package Text Mesh PRO (TMPro).

Measure bodily data from wearables

Read about installation and setup in this document, the middleware software interfaces the Polar H10 sensor with Unity. The Excite-O-Meter|Devices can be downloaded from the latest release branch.

Importing package in Unity

You can import the project in two ways depending on whether you use git or not. The simplest way is downloading the .unitypackage from the latest release branch.

If you prefer to clone the git in your own project, either to obtain the latest version or to contribute, you can use clone the main branch as a submodule: git add submodule https://github.com/luisqtr/exciteometer.git. Read more details in the user manual.

Example

A description of the example is available in this link. The example scene Scenes/Example_withURP_NewInputSystem.unity shows the integration of the EoM in an existing Unity project.

Cite the research paper

If the EoM is useful for your research, please consider citing the following paper:

Quintero L, Muñoz JE, de Mooji J, Gaebler M. Excite-O-Meter: Software Framework to Integrate Heart Activity in Virtual Reality. In: IEEE International Symposium on Mixed and Augmented Reality (ISMAR). Bari, Italy; 2021. p. 357–66. https://doi.org/10.1109/ISMAR52148.2021.00052

@inproceedings{Quintero2021_EoM,
    author = {Quintero, Luis and Mu{\~{n}}oz, John E and de Mooji, Jeroen and Gaebler, Michael},
    booktitle = {IEEE International Symposium on Mixed and Augmented Reality (ISMAR)},
    doi = {10.1109/ISMAR52148.2021.00052},
    pages = {357--366},
    title = {{Excite-O-Meter: Software Framework to Integrate Heart Activity in Virtual Reality}},
    year = {2021}
}

Scientific disclaimer: The EoM includes an algorithm that estimates 'excitement level' from cardiac data. It MUST be considered considered on early stages and not as an objective scientifically validated measure. Please read the full disclaimer at the end of this document.

How to contribute?

Please read the guidelines about the CODE OF CONDUCT and CONTRIBUTION.

More information

Project's website

The project's website (http://exciteometer.eu/) contains additional information. Although it gets updated less often than the GitHub repository (https://github.com/luisqtr/exciteometer).

More research papers about the Excite-O-Meter

  • The project is currently maintained by Luis Quintero, part of his PhD project at the Data Science Group at Stockholm University, Sweden.
  • The project leader was Michael Gaebler, who conceptualized the project and led the work from the first publication, as found in the branch release_v1.0.1. John Muñoz and Jeroen de Mooij also heavily contributed in the conceptualization and UI development of the EoM, respectively.
  • Acknowledgements:
  • The authors wish to thank Anna Francová and Jessica Gärtner for their support in the empirical evaluation of the first version of the EoM; as well as Johanne Tromp, Felix Klotzsche, Mert Akbal, and Alexander Masurovsky for helping in the conceptualization of the project on its first stage.
  • This project received funding from the European Union’s Horizon 2020 research and innovation programme through the XR4ALL project with grant agreement N° 825545.
  • Thanks to all contributors from other libraries: LSL, UI Extensions.

exciteometer's People

Contributors

luisqtr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

exciteometer's Issues

Some questions regarding the heart rate sensor.

Hi,

I really like the idea and would like to test run the plug-in.
But we do not own a Polar H10 sensor at the moment.

Is it possible to use a different sensor. E.g BiosignalPlux or Polar Verity Sense sensors?

Many thanks!

ScreenRecorder setup

Hi Luis,

I am testing the project in unity 2022 and most of it is working but not the screen recording. Do you know what this error could be.
ScreenRecorderSet

Analysis scene not displaying screen shots. Unity 2022

I ran the Example_withURP_NewInputSystem, and took random screenshots, checked that the screenshots were in the logfiles.
Screenshots

Then I went to the Analysis scene, but did not see any screenshots and also got this error.
ANALYSIS

can't get real data (the polar h10 has functionally worked and sent data to the Android App)

I have a functionally working polar h10. Also the polar h10 successfully sends data to the Android App.
And the Android Device is in the same wifi than the PC which is running the unity project.
But the problem is: when I deactive the the prefab EoM_SignalEmulator of the SCENE Example_withURP_NewInputSystem.unity, the INCOMING BODY SIGNALS dont show, just as the following pic shows.
Besides, I have checked the lsl panel, and it shows "No streams found!"

Again, thank you for helping me. I'm really grateful for your time!

image_418

Issue with Windows 10 installation

Tried to follow the installation tutorial for Windows 10. I ran into the known issue of invalid certificate.
Can you generate an new build with the updated certificate?
Is the repo live?

Excitometer crashes when pairing Polar H10

Hi there,
I tried connecting my Polar H10 device via bluetooth. It recognizes the device succesfully in step 1. In step 2 I connect to a server and tell it to record heart rate changes. It advances to step 3 and starts logging data, at which point the program suddenly stops and vanishes. What can I do to make my heartrate data discoverable by the LabRecorder via the LSL protocol?
Best,
George

ExciteOMeter_1.0.7.0_Test Win10 expired certificate

I'm trying to install the latest release of ExciteOMeter_1.0.7.0_Test for Win10 ( ExciteOMeter_1.0.7_UWP.zip) but after clicking the file Add-AppDevPackage.ps1 and click on Run with Powershell, I got the following error:

. : File C:\Users\admin\Documents\WindowsPowerShell\profile.ps1 cannot be loaded because running scripts is disabled
on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:3

  • . 'C:\Users\admin\Documents\WindowsPowerShell\profile.ps1'
  • + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
    

Found bundle: C:\Users\admin\Desktop\ExciteOMeter_1.0.7.0_Test\ExciteOMeter_1.0.7.0_x86.appxbundle
Found certificate: C:\Users\admin\Desktop\ExciteOMeter_1.0.7.0_Test\ExciteOMeter_1.0.7.0_x86.cer
Error: The developer certificate "C:\Users\admin\Desktop\ExciteOMeter_1.0.7.0_Test\ExciteOMeter_1.0.7.0_x86.cer" has expired. One possible cause is the system clock isn't set to the correct date and time. If the system settings are correct, contact the app owner to re-create a package or bundle with a valid certificate.
Press Enter to continue...:

As in issue #3 I think that the problem is that the certificate has expired.

Thank you for your help

Best regards

Ivo

Building for WebGL ?

Thanks for your help Luis,

I'm now trying to build the project for webgl and getting these errors. Have you tried it for Webgl? I'm testing the project without LSL. Just with the synthetic data.

image

RuntimeError: null function or function signature mismatch,RuntimeError: null function or function signature mismatch
at wasm://wasm/05df438e:wasm-function[63118]:0x10ec56f
at wasm://wasm/05df438e:wasm-function[39276]:0xb81ace
at invoke_vii (http://localhost/test_ble/Build/BLE%20exciteometer%20web.framework.js:3:370955)
at wasm://wasm/05df438e:wasm-function[63296]:0x10f560c
at wasm://wasm/05df438e:wasm-function[52350]:0xf68e4f
at wasm://wasm/05df438e:wasm-function[9166]:0x2f34bd
at wasm://wasm/05df438e:wasm-function[39273]:0xb81a5e
at invoke_iiii (http://localhost/test_ble/Build/BLE%20exciteometer%20web.framework.js:3:369932)
at wasm://wasm/05df438e:wasm-function[1597]:0xa018c
at wasm://wasm/05df438e:wasm-function[35769]:0xb0a5c8
at wasm://wasm/05df438e:wasm-function[22208]:0x8bf58e
at wasm://wasm/05df438e:wasm-function[9313]:0x2f687e
at wasm://wasm/05df438e:wasm-function[13207]:0x4b3d4b
at wasm://wasm/05df438e:wasm-function[19086]:0x65858f
at wasm://wasm/05df438e:wasm-function[43531]:0xc98d3c
at wasm://wasm/05df438e:wasm-function[19083]:0x657ba9
at wasm://wasm/05df438e:wasm-function[19082]:0x657903
at wasm://wasm/05df438e:wasm-function[8425]:0x27c159
at wasm://wasm/05df438e:wasm-function[39286]:0xb9d4c1
at Module._main (http://localhost/test_ble/Build/BLE%20exciteometer%20web.framework.js:3:301181)
at callMain (http://localhost/test_ble/Build/BLE%20exciteometer%20web.framework.js:3:385681)
at doRun (http://localhost/test_ble/Build/BLE%20exciteometer%20web.framework.js:3:386241)
at run (http://localhost/test_ble/Build/BLE%20exciteometer%20web.framework.js:3:386413)
at runCaller (http://localhost/test_ble/Build/BLE%20exciteometer%20web.framework.js:3:385340)
at Object.removeRunDependency (http://localhost/test_ble/Build/BLE%20exciteometer%20web.framework.js:3:16322)
at http://localhost/test_ble/Build/BLE%20exciteometer%20web.framework.js:3:1948
at doCallback (http://localhost/test_ble/Build/BLE%20exciteometer%20web.framework.js:3:93440)
at done (http://localhost/test_ble/Build/BLE%20exciteometer%20web.framework.js:3:93594)
at transaction.oncomplete (http://localhost/test_ble/Build/BLE%20exciteometer%20web.framework.js:3:86699)
printErr @ BLE exciteometer web.loader.js:1
callMain @ BLE exciteometer web.framework.js:3
doRun @ BLE exciteometer web.framework.js:3
run @ BLE exciteometer web.framework.js:3
runCaller @ BLE exciteometer web.framework.js:3
removeRunDependency @ BLE exciteometer web.framework.js:3
(anonymous) @ BLE exciteometer web.framework.js:3
doCallback @ BLE exciteometer web.framework.js:3
done @ BLE exciteometer web.framework.js:3
transaction.oncomplete @ BLE exciteometer web.framework.js:3
BLE exciteometer web.framework.js:3 Uncaught RuntimeError: null function or function signature mismatch
at 05df438e:0x10ec56f
at 05df438e:0xb81ace
at invoke_vii (BLE exciteometer web.framework.js:3:370955)
at 05df438e:0x10f560c
at 05df438e:0xf68e4f
at 05df438e:0x2f34bd
at 05df438e:0xb81a5e
at invoke_iiii (BLE exciteometer web.framework.js:3:369932)
at 05df438e:0xa018c
at 05df438e:0xb0a5c8
at 05df438e:0x8bf58e
at 05df438e:0x2f687e
at 05df438e:0x4b3d4b
at 05df438e:0x65858f
at 05df438e:0xc98d3c
at 05df438e:0x657ba9
at 05df438e:0x657903
at 05df438e:0x27c159
at 05df438e:0xb9d4c1
at Module._main (BLE exciteometer web.framework.js:3:301181)
at callMain (BLE exciteometer web.framework.js:3:385681)
at doRun (BLE exciteometer web.framework.js:3:386241)
at run (BLE exciteometer web.framework.js:3:386413)
at runCaller (BLE exciteometer web.framework.js:3:385340)
at Object.removeRunDependency (BLE exciteometer web.framework.js:3:16322)
at BLE exciteometer web.framework.js:3:1948
at doCallback (BLE exciteometer web.framework.js:3:93440)
at done (BLE exciteometer web.framework.js:3:93594)
at transaction.oncomplete (BLE exciteometer web.framework.js:3:86699)

ExciteOMeter_0.2.9.0_Win10 expired certificate

Trying to install the Windows10 device (ExciteOMeter_0.2.9.0_Win10.zip from the release v1.0.1 branch), after right-clicking Add-AppDevPackage.ps1 and running PowerShell, I first get the 'Execution Policy Change' message and type Y to proceed, but then I get the following error:

Found bundle: J:\ExciteOMeter_0.2.9.0_Win10\ExciteOMeter_0.2.9.0_Test\ExciteOMeter_0.2.9.0_x86.appxbundle Found certificate: J:\ExciteOMeter_0.2.9.0_Win10\ExciteOMeter_0.2.9.0_Test\ExciteOMeter_0.2.9.0_x86.cer Error: The developer certificate "J:\ExciteOMeter_0.2.9.0_Win10\ExciteOMeter_0.2.9.0_Test\ExciteOMeter_0.2.9.0_x86.cer" has expired. One possible cause is the system clock isn't set to the correct date and time. If the system settings are correct, contact the app owner to re-create a package or bundle with a valid certificate.

I've tried on two separate computers so i assume this is not caused by an incorrect system clock, but rather that the certificate has expired.

Ui Extensions particle shader cause build to fail

Not sure if this also happens in 2019, but in Unity 2020.3.12 the Ui Extensions particle shaders cause the build to fail:
http://baroquedub.co.uk/private/forum-images/shaders-build_failed.jpg

Deleting the ones prefixed as 'UI Particle' fixes the problem (they don't appear to be used in the Excite-O-Meter UI elements)
http://baroquedub.co.uk/private/forum-images/shaders-ui-extensions.jpg

This using the UnityUIExtensions-2019-6.unitypackage (I realise this isn't your asset but leaving this here for anyone having the same issue)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.