Skip to the content.

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

License: MIT Contributors Open Issues Closed Issues PR Milestones Code Size

Table of Contents

Motivation

smart hand glove to help blind people navigate

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?

  1. Good for mobility as it is more compact.

  2. Flexible for position of a person.

  3. Ease of use than cane.

  4. More range than the stick.

Hardware Requirements

raspberry pi

Schematic Diagram of the blind navigation system

The main componenents used for this project are:

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

C++ Icon Vscode icon

This work followed Agile development approach. The various stages of the development process are outlined in order for simplicity.

Requirement Analysis

Image of the lidar full scan split

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.

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:

Installation

Downloading from GitHub

The following steps serve as a guide for installation after Pi image is installed and hardware is built/coupled.

  1. 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
  1. Enable Serioal port for UART on your Pi.
  2. To compile and build the code after downloading from GitHub, ```
    • Cmake .
    • Make ```
  3. ./blind-nav executable will be created.

Tests

Steps to run tests are:

  1. cmake .
  2. make
  3. ./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

twitter instagram youtube

Find out more about the work on the following social media platforms:

Credits