π Campus Nav β Indoor Navigation Assistant, tailored for Visually Impaired People @ Politecnico di Milano
Campus Nav is an innovative Android application developed as part of the course IDT - Inclusive Digital Technologies (A.Y. 2024β2025) at Politecnico di Milano. Designed with accessibility at its core, Campus Nav empowers π¨βπ¦― blind and visually impaired users to navigate the university's indoor environments independently, confidently, and safely.
Watch the video below to see the application in action:
- π¦ Installation Instructions
- π οΈ Technology Stack
- π¨βπ¦― A Mission-Driven App
- π Key Features
- ποΈ Built for Politecnico di Milano
- π Project Structure
- π¨ Layouts and UI Design
- π€ Contributing
- π§ Academic Context
- π License
- π‘ Our Vision
Clone the repository
git clone https://github.com/yourusername/campus-nav.git- Open the project in Android Studio
- Connect a physical Android device
- Build and Run the app
- Make sure to grant the following permissions:
-
π Location
-
π· Camera
-
π Network access
Campus Nav uses a local large language model (LLM) to analyze video content for accessibility support. This backend script is used to interact with the LLM (e.g., Ollama + Gemma3).
- Python 3.8+
- Ollama installed (https://ollama.com)
- Ollama Gemma model downloaded locally:
ollama pull gemma3:4bpip install fastapi uvicorn pydantic pillow opencv-python ollamaThe backend Python script is located at:
docs/gemma3Server.pyYou can run it with:
uvicorn gemma3Server:app --host 0.0.0.0 --port 8000To enable the Android app to communicate with the local server:
In your Android device (or emulator), make sure the backend is accessible (same WiFi network).
Modify the server IP address inside:
GemmaActivity.ktLook for a variable or constant like:
val SERVER_URL = "http://192.168.X.X:8000"Replace 192.168.X.X with your computerβs local IP address.
π Important: This backend is temporary and meant for local testing purposes only. Future versions may integrate a cloud-hosted endpoint.
-
Kotlin, Android SDK
-
YOLOv8 + TensorFlow Lite
-
Google FusedLocationProviderClient
-
Custom Wi-Fi signal processing
-
GEMMA3 video intelligence API
-
Material Design Accessibility Guidelines
Campus Nav is more than just a navigation tool β it's a digital companion tailored to the unique needs of visually impaired students and visitors. With real-time indoor positioning, object recognition, and intelligent assistance, it bridges the gap between physical space and digital accessibility.
Every feature in this app is designed to enhance independence, confidence, and safety for users with visual impairments. From audio feedback to intuitive gestures, the user experience is crafted to ensure:
- π Hands-free operation where possible
- π£οΈ Screen reader compatibility
- π§ Minimal UI complexity for ease of use
- ποΈ Audio feedback and voice guidance
- π High contrast visuals and accessible gestures
Leverages the strength of campus Wi-Fi signals to determine the userβs location without relying on GPS:
- Accurate room/hallway-level positioning
- Optimized for Politecnico di Milanoβs infrastructure
- Low battery consumption, passive localization
Uses a YOLOv8 object detection model to recognize key indoor elements through the camera:
- πͺ Doors
- πͺ Stairs
- π» Bathrooms
- π¨ Exit signs
Provides real-time audio feedback to describe the environment and enhance orientation.
Allows users to record or select a video, upload it to a server, and interact with an intelligent assistant:
- Receive concise summaries of video content
- Ask questions about whatβs in the video
- Understand unfamiliar environments before visiting them
An in-app support feature for both real-time help and future planning:
- Send immediate assistance requests
- Schedule events like π½οΈ lunch breaks or πΆββοΈ daily routes
- Designed for proactive and inclusive support
Campus Nav is custom-built for the Politecnico di Milano campus using real-world data and layouts. It reflects a commitment to:
- Inclusive design in academic spaces
- Smart digital infrastructure
- Equal access to education and mobility for all students
IDT-app/
βββ app/
β βββ src/
β β βββ main/
β β β βββ java/com/tech4all/idt/
β β β β βββ MainActivity.kt # Main dashboard with navigation buttons
β β β β βββ wifiLocalization/
β β β β β βββ WiFiActivityMain.kt # Indoor navigation via Wi-Fi signals
β β β β βββ yolov8tflite/
β β β β β βββ CameraActivity.kt # Real-time object detection with YOLOv8
β β β β βββ gemma3/
β β β β β βββ GemmaActivity.kt # Upload & query videos with GEMMA3
β β β β βββ poliBuddy/
β β β β β βββ PoliBuddyActivity.kt # Help request and activity planning
β β β βββ res/
β β β βββ layout/ # UI XML layouts
β β β βββ values/ # Strings, themes, dimensions
β β β βββ drawable/ # Icons, backgrounds
β βββ AndroidManifest.xml # App permissions and declarations
β βββ build.gradle # App-level Gradle config
βββ build.gradle # Project-level Gradle config
βββ README.md # Project overview and documentation
βββ docs # Documents produced during the development
βββ LICENSE # Open-source license (MIT)The appβs user interface is built using Android XML layout files located in the app/src/main/res/layout/ directory. Each screen and component has its own dedicated layout to ensure a clean, intuitive, and accessible user experience.
We welcome suggestions, bug reports, and contributions, especially in areas like:
-
Improving localization accuracy
-
Enhancing the object detection model
-
Expanding accessibility support (e.g. gesture input)
-
UI testing with screen readers and TalkBack
This project was developed for:
- Course: IDT - Inclusive Digital Technologies
- Academic Year: 2024β2025
- Institution: Politecnico di Milano
This project is licensed under the MIT License. Use it freely for educational, research, or accessibility-driven development.
βAccessibility is not a feature β itβs a foundation. Campus Nav proves that inclusive, user-centered design can transform ordinary spaces into empowering environments for all.β





