Skip to content

Repository files navigation

ExoskeletonLearningExperiment

This is the Unity project that contains the full experiment described in the paper titled: "First Steps Towards Facilitating the Learning of Using Wearable Lower-limb Exoskeletons with Immersive Virtual Reality". Which can be found here.

The protocol we used for starting and running the experiment can be found here.

We uploaded the complete dataset to Zenodo, but the summarized data can be found here.

Launch the project

  • Load the project into Unity 2020.3.21f1 (using Unity Hub).
  • Import FinalIK - This package is not included because it is a paid package, so you will need to import it yourself.
  • Open & Start Assets/scenes/ExperimentScene

Packages used

Models and Materials

Assets

  • Models/ - Avatar, Shoe, and Walker model
  • Plugins/ - Contains UXF, and this is where FinalIK was placed (but now removed).
  • Questionnaires/ - Contains VR Questionnaire TK assets.
  • Resources/ - All materials, sprites, and textures. This also contains the stepping data used for the stepping animation.
  • Scenes/ - The ExerimentScene scene is placed here.
  • Scripts/ - All the (custom) scripts that handle the functionality of the scene, experiment, visual cues, ... (see below).
  • SteamVR/, SteamVR_Input, SteamVR_Resources - SteamVR plugin files you don't need to touch.
  • StreamingAssets/ - Contains config file for Vive trackers, and UXF setting files.
  • XR/ - OpenXR related files.

Scripts

There are more scripts then outlined here, but these are the most important ones to help you get started with different parts of the experiment.

  • DelsysConnection/ - Custom package that sets up a little UDP client that picks up the Delsys data. Note: there is also an API by Delsys.
  • UnityDataReplay/ - Custom package written for this project to take position data from a .csv, and replay it in any position, with any time and position scaling that is desired. This was used to make the avatar take steps in the scene.
  • Inputs/ - Scripts that handle the inputs from the Vive Trackers and use them to determine the walker position, weight shifting, hip thrust input.
    • HipThrustInput.cs - The script defines a HipThrustInput class in Unity that detects hip thrust motions using sensor data, evaluates the thrust based on various thresholds, and triggers corresponding events, along with a HipThrust class to encapsulate information about a single hip thrust action.
    • TrunkInclinationInput.cs - The script defines a TrunkInclinationInput class in Unity that calculates the inclination angle of an avatar's trunk based on the positions of its head and hips using the VRIK system, and provides methods to retrieve the raw and scaled inclination angles.
    • WalkerMotion.cs - The script defines a WalkerMotion class in Unity that manages the movement and calibration of a virtual walker based on tracker positions, with functionalities to match walker positions, calibrate initial positions, and handle step events.
    • WeightShiftingInput.cs - The script defines a WeightShiftingInput class in Unity that calculates the midpoint between the avatar's feet using the VRIK system and determines the hip's position relative to this midpoint.
    • SensorCalibration.cs - The script defines a SensorCalibration class in Unity that calibrates an IMU (Inertial Measurement Unit) sensor by averaging acceleration measurements to determine the gravity direction, then adjusts the IMU transform to align with the world's down direction.
  • VisualCues/
    • GaitFeedback.cs - This class handles the color, shape, and functionality of the fusiform object projected on the floor.
    • GradientSetter.cs - Calculates the new color gradient for the fusiform object, and bakes it onto the texture.
    • TextureCurve.cs - Calculates the new shape of the fisuform object, and bakes it onto the texture.
    • PointsFeedback.cs - Helper class to make the points show the right number and color, and let it appear and fade out.
    • WeighShiftDetection.cs - The script defines a WeightShiftDetection class in Unity that monitors the position of the avatar's leading leg, adjusts a mask's position based on the step width, and changes a sprite's color to indicate weight shifting, with additional functionality to blink the sprite's color when certain conditions are met.
  • UXF/ - Contains scripts that interact with the UXF (custom trackers, and task/UI management).

About

Public version of Exoskeleton Learning Experiment, as (soon to be) published in "First Steps Towards Facilitating the Learning of Using Wearable Lower-limb Exoskeletons with Immersive Virtual Reality"

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages