Skip to main content

Simulate gamepad or mouse/keyboard inputs using Mediapipe tracking of Face joints.

Project description

Nose Drive

Simulate Xbox360 controller or mouse/keyboard inputs using Mediapipe tracking of Face joints.

This project is realized by the non-profit "ASPHI Onlus" and its main purpose is to help people with complex motor disabilities play videogames through alternative and highly-customizable inputs solutions.

Nose Drive provides a Python library that can be used to easily bind face movements to gamepad/keyboard/mouse buttons pressed by a virtual device.

AUTHORS: ASPHI Onlus

Demo video

YouTube sample video

Quick start and configuration

  • Install the ViGEmBus driver
  • Download and extract our latest release ZIP file
  • Double click on the "START.bat" file
  • Wait for your webcam image to show up
  • Stand still in front of the webcam in your base position for 5 seconds (can be edited)
  • Start playing your game
  • The "N" key on the keyboard can always be pressed to reset the base position to the actual position
  • The "P" key pauses and resumes inputs simulation
  • If the program does not run, try to install the Visual C++ redistributable package

Inputs

Core commands:

  • NOSE DOWN: gamepad analog Right-Trigger (accelerator)
  • NOSE UP: gamepad Left-Trigger (brake)
  • NOSE RIGHT and LEFT: gamepad Left Analog Horizontal Axis (steer left and right)

Settings

In the drive_settings.json file you can modify:

  • sensibility values for inputs
  • how many seconds to wait, after the webcam image shows up, before the program takes your actual position as the base position (the pressure of the keys is based on the deviation from this base position)
  • the index of the camera that should be used for tracking, if more than one cameras are connected (default is 0)
  • the keyboard keys to trigger reset of base position or to pause the program

Python library

Using the Nose Drive Python library it is possible to create custom scripts to customize control of different kind of videogames (Platforms, 3D movement, ...). Examples of such scripts can be found inside the test folder.

In the wiki, a detailed tutorial and documentation can be found.

Mediapipe Documentation

Python API examples

Videogames Controller

Driver

Driver to Emulate Xbox360 Controller

Python Libraries

  • Simulate Xbox360 Controller inputs: vgamepad
  • Read keyboard inputs: keyboard
  • Simulate keyboard inputs: pynput

Working with Conda and Python

  • Install Miniconda
  • (Optional) You can add Anaconda prompt to right click menu following these steps
  • Open Anaconda prompt and navigate to Nose Drive root folder
  • conda create -n py310 python=3.10
  • conda activate py310
  • pip install -r requirements.txt
  • Then you can execute every script with python, for example the command "python Drive.py drive_settings.json" will execute the Drive.py script with the settings defined in the file drive_settings.json

Build instructions

  • Download this Embedded Python (already tested and working for builds).
  • .\python_310\Scripts\pyinstaller.exe .\Builder.spec
  • Change line 6 of Builder.spec to match the .py script you want to build
  • Execute compiled binaries with ".\dist\main\main.exe .\your_settings.json"

Integrations

Voice Controls

VOICE ATTACK software provides voice-activated control to simulate mouse/keyboard inputs and much more! This feature complements the nose drive very effectively, allowing to play many games that require a large number of inputs.

Eye-Tracking

Thanks to BEAM EYE TRACKER we are now able to simulate gamepad and mouse/keyboard inputs by moving our eyes!

  • The scripts in this folder make use of this amazing feature.
  • Of course, it is possible to combine mediapipe tracking of facial joints with the Eye gaze tracking to achieve even more customization! Note that in order to execute this kind of scripts (for example Eye_3rd_Gamepad.py) a software like "Split Cam" is required, because the webcam image should go to both Beam Eyetracker software and Python CV2 library at the same time.

License

Exept where otherwise stated, the files in this repository were created by Fondazione ASPHI Onlus and are licensed under a GNU GENERAL PUBLIC LICENSE.

Credits

A big "Thank you!" goes to

  • the authors of ViGEmBus driver
  • the authors of Mediapipe high-fidelity body pose tracking solution
  • the authors of vgamepad python library
  • the authors of keyboard python library
  • the authors of pynput python library

on whose work our solution relies

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nosedrive-0.0.3.tar.gz (21.9 kB view details)

Uploaded Source

Built Distribution

nosedrive-0.0.3-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

Details for the file nosedrive-0.0.3.tar.gz.

File metadata

  • Download URL: nosedrive-0.0.3.tar.gz
  • Upload date:
  • Size: 21.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.13

File hashes

Hashes for nosedrive-0.0.3.tar.gz
Algorithm Hash digest
SHA256 d61772bcaa8d79e0d0f80901f9404de581529452ff80ec80d1fd82c380b81ca9
MD5 b4a051b7c46c6b5aafef220b5157f6a8
BLAKE2b-256 cc2e29436435e08bb0917a8941ea78e022019a5b28874340d0abfc1386a42cca

See more details on using hashes here.

File details

Details for the file nosedrive-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: nosedrive-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 19.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.13

File hashes

Hashes for nosedrive-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a457488f41c194fcf055f5ff78b022a8afe2282d5b74083cfacecfbe310f639d
MD5 fc0a17e1accb2967ac5b0975938cabc7
BLAKE2b-256 6a634c3dde07305da76fbae950b6cf8a5fe618921eb73c177467ab5c2b19f2e5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page