🎓 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.”





