Controlling Linux system using hand gestures
Contents
Gestro is developed by a group of students from The University of Glasgow currently undertaking the course of ENG5220 - Real-time Embedded Systems under Team 26.
Gestro is an application which allows users to control their Linux system using hand gestures so that users will be able to perform certains actions without the use of a keyboard and mouse. This is particularly useful in cases where users want to control their Linux PC while: being away from it, being unfamiliar with modern devices (such as Elderly people), et cetera.
By using a webcam and libraries such as OpenCV, X11, et cetera, Gestro is able to successfully translate hand gestures performed by users into commands that performs certain operations including, but not limited to, muting and unmuting the system's volume, move window, mouse move and clicks. Gestro is designed to be displayed using a Qt application on the users' Linux system running the Ubuntu distribution.
More details can be found below. However, for the complete information about Gestro, please visit our website.
Check out our demonstration video:
Note: Although each function is shown separately in the video, all of them can be selected and used at the same time.
- Enter Spacebar (Used for Play and Pause).
- Track mouse.
- Perform mouse clicks.
- Mute and Unmute Volume.
- Move and Minimise window.
- A PC running Ubuntu 18.04 LTS.
- A webcam.
- Iir
- X11
- Qt 5
- C++
- CMake
- OpenCV
- Doxygen
- libasound2-dev
- Google Unit Test Framework
Gestro is designed to be used on Linux PCs running the Ubuntu distribution. In particular, it was tested and found to be running perfectly on PCs running Ubuntu 18.04 LTS.
- A PC running Ubuntu.
- A webcam.
Gestro requires the following tools and libraries to run (other versions are not tested):
- X11
- Qt 5
- OpenCV 4.5.5
- libasound2-dev
- Google Unit Test FrameWork
These required tools and libraries will be installed if you follow step 2 of the installation guide below.
If permission is denied while trying to run any of the scripts, please enter the following Commands into the terminal and try running the script again,
sudo chmod +x <script_name>.sh
.
For example, for the install_dependencies.sh, enter
sudo chmod +x install_dependencies.sh
into the terminal.
1. Download the latest release from our Github and extract the contents into the Home folder.
Note: Make sure the folder with the contents is named "Gestro". If not, rename it to "Gestro".
Alternatively, launch a terminal and run:
git clone https://github.com/RandomGuy-coder/Gestro.git
2. Launch a terminal and enter the following commands into it to install the requirements:
cd ~/Gestro
sudo ./install_dependencies.sh
Note: If CMake version is found to be too low, please follow instructions here to update CMake. After updating CMake, make sure to close and reopen the terminal before starting from step 2 again.
3. Enter the following commands into the terminal to run the build script.
sudo chmod +x build.sh && sudo ./build.sh
If any of the following errors occured: >
This application failed to start because it could not find or load the Qt platform plugin "xcb" in "".
/usr/lib/qt5/bin/uic: error while loading shared libraries: libdouble-conversion.so.1: cannot open shared object file: No such file or directory
- Run this command in the terminal:
sudo apt-get install libxcb-xinerama0
If the previous command said that libxcb-xinerama0 is already installed or the newest version, run this:
sudo apt install --reinstall libxcb-xinerama0
- Then, run this command:
sudo apt install --reinstall libdouble-conversion1
- Now, close and relaunch the terminal, then run the following commands:
cd ~/Gestro && sudo ./build.sh
Firstly, launch a terminal and enter the following commands to cd into the Gestro's bin directory:
cd ~/Gestro/bin
Start the Gestro application by running the following commands:
./Gestro
For instructions on how to use the Gestro application, please see User Manual on our website.
Run the unit tests by running the following commands in a terminal:
cd ~/Gestro && sudo make test
ENG5220 - Real-time Embedded Systems - Team 26:
- Tushar Anil Mittal, 2669699M
- Tian Jie Wong, 2702282W
- Muhatasim Intisar, 2683935I
- Ruoqi Sun, 2574212S
Here are some of the planned features for this project:
- Enter other keys
- Close Window
- Change window size
- Play Next and Previous
- Zoom in and Zoom out
- Switch between applications
- Increase and Decrease Brightness
Propose for a new feature or report a bug here!
Follow us on:Feel free to contribute to this project by forking it and submitting a pull request for the added changes.
Check out Gestro's documentation page!
Distributed under the GPL-3.0 License. See LICENSE
for more information.
Copyright © 2022; ENG5220 - Real-Time-Embedded-Systems - Team 26
Distributed by a GNU GPL-3.0 License.