Skip to content

Assistive technology framework leveraging YOLO v8 for real-time object detection, ultrasonic sensors for distance, a mobile app for turn-by-turn navigation, and a voice chatbot for intuitive interaction. Implemented on Raspberry Pi, this project aims to provide real-time and personalized support for visually impaired individuals' mobility & safety.

Notifications You must be signed in to change notification settings

joemathew2004/Smart-Vision-Guide

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Smart Assistive Navigation Device for Visually Impaired

Project Image

This project implements a smart assistive device, integrated into a wearable hat, designed to enhance independent navigation for visually impaired individuals. It combines real-time object detection, distance measurement, GPS-based navigation, and voice interaction to provide comprehensive environmental awareness and guidance, all within a discreet and convenient form factor.

Overview

The system, seamlessly housed within a hat, consists of a client device (running on a Raspberry Pi) and a remote server.

Client (in client/)

The client-side application captures real-time video and interacts with the user through voice commands. It features two primary modes:

  • Guidance Mode:
    • Captures video frames from a camera.
    • Sends video frames to the remote server for object detection.
    • Receives and provides audio feedback on detected objects.
    • Uses an ultrasonic sensor to detect nearby obstacles and alerts the user with beeps.
  • Chat Mode:
    • Utilizes OpenAI to engage in conversational interactions based on voice input.

The client listens for a wake word ("Hi siri") to activate and can be shut down with a "bye" command. It employs threading for concurrent operation and includes error handling and resource management.

Server (in server/)

The server-side application processes video frames for object detection and integrates this information with GPS navigation updates.

  • main.py (Server Main):

    • Sets up a server to receive video frames from multiple clients.
    • Utilizes an object detection model (YOLOv8) to identify objects in the video streams.
    • Combines object detection results with GPS navigation updates (provided by the Flask server).
    • Sends the combined information back to the client as text.
    • Manages multiple clients concurrently using threads.
    • Runs a background Flask server (gps_handler.py) to handle GPS data.
  • predictions.py (Object Detection):

    • Contains functions for processing video frames using a YOLO model to detect specific objects.
    • Identifies the closest detected object to the center of the frame.
    • Determines the object's relative position (left, right, or ahead).
    • Generates directional instructions for the client.
    • Implements logic to avoid repetitive reporting of the same object based on time and a delay.
  • gps_handler.py (GPS Navigation Server):

    • Creates a Flask web server to provide GPS-based turn-by-turn navigation instructions.
    • Receives the user's current latitude and longitude via POST requests to the /location endpoint (likely from a mobile application).
    • Uses the Google Maps Directions API to calculate a route to a predefined destination.
    • Determines the next navigation instruction based on the user's current location and the route steps, considering distance to turning points or the destination.
    • Formats navigation instructions for clarity.
    • Uses a thread lock for safe access to location data.

Network Setup

The Raspberry Pi (client) and the server need to be on the same network or accessible via a public IP address. This project was developed and tested using Tailscale VPN, which creates a secure private network allowing seamless communication between the mobile app, client, and server, regardless of their physical location.

Functionality

This framework aims to provide visually impaired individuals with:

  • Real-time obstacle detection: Identifying and alerting the user to nearby obstacles.
  • Object recognition: Providing information about objects in the environment.
  • Turn-by-turn GPS navigation: Guiding the user to their destination.
  • Voice interaction: Enabling intuitive communication with the device for commands and information.

Project Execution Requirements

Hardware Requirements:

  • Raspberry Pi 5 (8GB recommended)
  • Raspberry Pi Camera Module or compatible USB webcam
  • Ultrasonic Sensor (HC-SR04) – for obstacle distance detection
  • Buzzer – for proximity alerts
  • Microphone Module – for voice command input
  • Speaker / Earphones – for audio feedback (Google TTS output)
  • Power Supply – Portable power bank (minimum 10,000 mAh)
  • Wi-Fi connectivity – Required for Raspberry Pi to communicate with server
  • Smartphone – To run GPS tracking app and send coordinates
  • Optional: Breadboard, jumper wires, resistor (for ultrasonic circuit setup)

Software Requirements:

On Raspberry Pi (Client Side):

  • OS: Raspberry Pi OS (32-bit recommended)
  • Python Version: Python 3.8 or later
  • Required Python Libraries: pip install SpeechRecognition gtts playsound requests socket numpy pyaudio RPi.GPIO
  • Google APIs:
    • Google Speech-to-Text API
    • Google Text-to-Speech (gTTS)
  • Flask Client (to interact with server)
  • Mic & audio configuration (ALSA or PulseAudio)

On Server (Object Detection & Navigation Logic):

  • OS: Windows/Linux (recommended: Ubuntu or any local machine)
  • Python Version: Python 3.8 or later
  • Required Python Libraries: pip install flask ultralytics opencv-python numpy requests geopy
  • YOLOv8 Model Files:
    • Install Ultralytics: pip install ultralytics
    • Use pre-trained model: yolov8n.pt or yolov8s.pt

On Mobile (GPS Tracking App):

  • Mobile app
  • Send location data to the server via REST API POST (Flask route)
  • Smartphone must have:
    • GPS turned ON
    • Mobile data/Wi-Fi enabled

Other Essentials:

  • Raspberry Pi and server must be on the same network or accessible via public IP.
  • Update IP addresses in the socket/client/server scripts as per your setup.

Authors

  • Joe Mathew
  • Joel Kurian Abraham
  • Nived Tharun
  • Muhammed Jasim PT

About

Assistive technology framework leveraging YOLO v8 for real-time object detection, ultrasonic sensors for distance, a mobile app for turn-by-turn navigation, and a voice chatbot for intuitive interaction. Implemented on Raspberry Pi, this project aims to provide real-time and personalized support for visually impaired individuals' mobility & safety.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%