EGS is a guidance system aimed at visually impaired individuals. It is meant to compliment the capabilities of the traditional white cane. It can provide earlier warnings, which allow the user to navigate more safely in potentially challenging situations. Moreover, our system can offer warnings for obstacles above waist height, which are difficult to detect using a white cane. However, it is important to note that this system is still in early development and should only be tested in controlled environments. The system is designed to be highly modular. In its current state the following modules are used by default:
- Drivers Module: Interfaces with the hardware
- Feature Tracking Module: Visual Odometry
- Position Estimation Module: IMU integration and homography scaling
- Reprojection Module: 3D reconstruction and collision probability
Moreover, you can enable the optional visualization module.
The modules are connected using queues and managed by the Pipeline class. Logfiles are saved in the logs directory in the project root. There are logfiles for each module and the pipeline itself.
This repo requires Python 3.7 or higher and was tested on Windows 10, Ubuntu 18.04 and Raspbian Stretch.
- Clone this repo.
- Install the requirements using
pip install -r requirements.txt
. If you would like to use SIFT features you need to build opencv-python from sources with the enable-nonfree flag set (as described here). If you do not need SIFT features you can install opencv-python by using the requirements file which downloads a prebuilt wheel directly from PyPi. - Download one or multiple datasets (contact one of the contributors for the link) and unzip them.
You can evaluate the pipeline on a pre-recorded dataset with visualization using:
python main.py --replay /path/to/your/dataset --visualize
If you have replicated our hardware you can deploy the pipeline in real-time. After installing all requirements simply run:
python main.py --deploy
Our system is based on readily available and low cost components. Additionally, to the materials listed below you will need a battery bank to power the Raspberry Pi and some cables to connect everything together. You can 3D print your own chest mount using our stl file. We recommed a layer height of 0.3mm and an infill of 20%.
Component | Price |
---|---|
Raspberry Pi 3 Model B | ~35$ |
MPU-6050 IMU | ~3$ |
Raspberry Pi Camera Module V2 | ~25$ |
The workload was split evenly across our team throughout the whole project. However, each module was assigned a product owner who was responsible for any major design decision and approved improvements to their modules made by the other contributors. The module owners were assigned as follows:
- Hardware and Drivers: Marco Job
- Inertial Position: Théophile Messin-Roizard
- Visual Odometry: Adrian Schneebeli
- Software Architecture and 3D Reconstruction: Lorenz Hetzel