Navigation System for Blind People - Smart Glove
An assistive smart glove using Light Detection and Ranging(LiDAR) technology and Raspbery pi to help individuals who are blind or with low vision to navigate with confidence. This project contributes a C++ library for TFMini s sensor and a blind navigation glove.
Status
Table of Contents
- Motivation
- Hardware Requirements
- Software Development
- Installation
- Tests
- How to Use
- Contributing Guide
- Social Media
- Credits
- Reference Links
Motivation

Here a smart glove program is developed to tackle the navigation problem for blind people so that they can be confident to move without a cane or guide dog. Why Smart Glove?
-
Good for mobility as it is more compact.
-
Flexible for position of a person.
-
Ease of use than cane.
-
More range than the stick.
Hardware Requirements
![]()

The main componenents used for this project are:
- Raspberry Pi 4
- TFMini S LiDAR sensor
- Servo motto
- 5 mottos
- Logic Converter
The servo motto board was coupled by the team and LEDs were used during the development stage. Logic converters were used to step-down voltage from +5V to +3V needed by the Lidar. The schematic diagram of the project is subject on changes. For instance, when using LEDs for the prototype resistors were added. You can view this prototype here. The image gallery can be viewed on instagram
Software Development
![]()
This work followed Agile development approach. The various stages of the development process are outlined in order for simplicity.
Requirement Analysis
-
The LIDAR sensor(rotated by a servo motor) makes a map of 90o in front of the person.
-
According to the map, distance of the obstacles is calculated and returned.
-
Using that feedback, PWM is sent to a finger.Depending on the level of vibration on the fingers, the person gets an idea of where the obstacle is located, and he can go left or right.

A full scan of the LiDAR (90 degrees) split into 5 directions to guide the user. This is implemented in main.cpp where the driver is used.
Software Design
The classes Lidar, Servo, Pwm, DataInterface : Lidar::DataInterface are defined for this work. The doxygen documentation available here. The software design is described with the following use cases and diagrams.
-
Use cases

In this work, a blind navigation system as a smart glove is demonstrated with the LiDAR driver. A blind person puts on the glove and gets vibrations on his fingers. The intensity of the vibration tells the direction with the nearest obstacle. The individual can decide the direction to move.
-
State Diagram
The state diagram below shows the state changes of the
smart gloveapplication.
The state diagram for the lidar object running as a thread is displayed below.

-
Sequence Diagram
The following diagram models the communication between objects in the smart glove software.

Development
c++ CMAKE and googletest are needed in addition to the Hardware Requirements.The Software Development
and Installation guides should be reviewed before commencing development.
Testing
Google test is used for unit test in this work. Test cases are:
**Pwm**
```
Test the pwm sent according to the double threshold set
1. distance = 0, pwm = 255
2. distance = -2000, pwm =255
3. distance = 100, pwm = 0
3. distance = 167, pwm = 0
4. distance = 26550, pwm = 0
```
**Servo::move**
```
Test algorithm
for(int i=0; i<89; i++)
EXPECT_EQ(servoMove(), i+1);
```
Releases
The current release of this work is release v1.0
Documentation
This work is documented here for quick start. You can also check:
- Doxygen documentation available here.
- The GitHub page
Installation
Downloading from GitHub
The following steps serve as a guide for installation after Pi image is installed and hardware is built/coupled.
- To use this Library, the following needs to be installed on your Pi.
* PIGPIO: [this can be found here](https://abyz.me.uk/rpi/pigpio/download.html)
* CMake
- Enable Serioal port for
UARTon your Pi. - To compile and build the code after downloading from GitHub,
```
- Cmake .
- Make ```
- ./blind-nav executable will be created.
Tests
Steps to run tests are:
- cmake .
- make
- ./testRunner
How to Use
Using this work depends on your use case. In this repository, the Lidar library is designed to send its full scan 90 distance values to a callback which is implemented depending on the use case. The smart glove implemented in this project shows this here. Lastly, follow the Installation guide.
class DataInterface : public Lidar::DataInterface {
void newScanAvail(int (&data)[Lidar::nDistance]) {
// implement this callback function
}
}
Contributing Guide
‘BLIND NAVIGATION SYSTEM’ accepts PR’s (pull requests) from collaborators only only.
Social Media
![]()
Find out more about the work on the following social media platforms: