Skip to content

Repository files navigation

EXODUS — система умной эвакуации для сейсмоопасных зон

EXODUS — интеллектуальная система эвакуации для школ, университетов, общежитий, офисов и других зданий в сейсмоопасных регионах.

Обычная сигнализация говорит: "Опасность". EXODUS говорит: "Левая лестница опасна. Идите к правому выходу."

Идея

Во время сильных толчков человеку недостаточно услышать сирену. Ему нужно быстро понять, куда именно идти. Статичный план эвакуации не учитывает, что лестница может быть перегружена, часть здания может вибрировать сильнее, а коридор может быть заблокирован.

EXODUS превращает эвакуацию в динамическую навигацию:

  1. сеть датчиков вибрации;
  2. анализ опасных зон;
  3. построение безопасного маршрута;
  4. 2D/3D-интерфейс с короткой инструкцией.

Как работает система

ESP32 + MPU6050
      ↓
Данные вибрации
      ↓
Rule-based filter
      ↓
ML classifier / fallback classifier
      ↓
Risk map здания
      ↓
Dijkstra routing
      ↓
AI-инструкция

Каждый датчик отправляет данные акселерометра в backend:

{
  "sensor_id": "sensor_1",
  "ax": 0.01,
  "ay": -0.03,
  "az": 1.02,
  "timestamp": 123456789
}

Backend собирает 2-секундное окно данных, извлекает признаки вибрации, классифицирует паттерн и обновляет risk map здания. Если зона становится опасной, алгоритм Dijkstra увеличивает вес этой зоны и строит маршрут в обход.

Главная фича

Ключевая фича проекта — умный маршрут эвакуации.

Если левая лестница опасна, приложение показывает не просто тревогу, а конкретное действие:

Внимание. Левая лестница опасна. Следуйте через главный коридор к правой лестнице и выходу E. Не используйте лифт. Сохраняйте спокойствие.

Роли пользователей

  • Ученик: стрелка направления, короткая инструкция, ближайший безопасный выход.
  • Учитель: маршрут для класса, чек-лист эвакуации, статус класса.
  • Охрана / администрация: карта здания, датчики, опасные зоны, маршруты, статус этажей и история событий.

Демо-приложение

EXODUS сделан как demo-first MVP для хакатона.

Основные экраны:

  • Splash screen с логотипом EXODUS.
  • Home dashboard с общим статусом системы.
  • Upload screen для загрузки плана эвакуации.
  • 2D map с датчиками, зонами риска и маршрутом.
  • 3D map с визуальной моделью здания.
  • Alert screen с инструкцией.
  • Sensors screen со статусом датчиков.
  • Settings / Demo controls для запуска сценариев.

Демо-сценарии

  1. Normal: все датчики зеленые, система работает в штатном режиме.
  2. Door slam: один датчик фиксирует короткий пик, система не включает тревогу.
  3. Earthquake: датчик возле левой лестницы фиксирует опасную вибрацию, левая лестница становится красной, маршрут перестраивается через правую лестницу.

Backend API

Backend построен на FastAPI.

Основные endpoints:

  • GET /health
  • POST /sensor-data
  • GET /zone-status
  • GET /safe-route?start=room_214
  • POST /evacuation-route
  • POST /simulate-event
  • POST /simulate-evacuation
  • GET /sensors

ML-модель

Модель не предсказывает землетрясение. Она классифицирует локальную вибрацию как обычный шум, удар, транспортную вибрацию или earthquake-like shaking.

Если внешний ML-артефакт недоступен, backend продолжает работать через rule-based fallback classifier. Это важно для demo-режима и снижает риск поломки во время презентации.

Технологический стек

Hardware:

  • ESP32
  • MPU6050
  • mesh-сеть
  • резервное питание
  • дешевые сенсорные узлы

Backend:

  • FastAPI
  • Python
  • feature extraction
  • ML model / rule-based fallback
  • Dijkstra algorithm
  • REST API

Frontend:

  • Expo React Native
  • TypeScript
  • Zustand
  • NativeWind
  • React Native SVG
  • WebView + Three.js
  • Haptics
  • demo scenarios

Запуск frontend

npm install
npx expo start

Откройте приложение через Expo Go, iOS/Android simulator или web-режим Expo.

Запуск backend

Из корня проекта:

python evacuation_backend.py --api-only --host 0.0.0.0 --port 8000

Или из папки backend:

cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload --host 0.0.0.0 --port 8000

Для Expo на реальном телефоне используйте LAN IP компьютера:

EXPO_PUBLIC_API_URL=http://192.168.1.10:8000 npx expo start -c

Проверка API

curl http://localhost:8000/health
curl http://localhost:8000/zone-status
curl http://localhost:8000/sensors
curl "http://localhost:8000/safe-route?start=room_214"

Сценарий earthquake:

curl -X POST http://localhost:8000/simulate-event \
  -H "Content-Type: application/json" \
  -d '{"type":"earthquake","sensor_id":"sensor_1"}'

Расчет маршрута:

curl -X POST http://localhost:8000/evacuation-route \
  -H "Content-Type: application/json" \
  -d '{"start":"room_214","danger_zones":["stair_A"],"user_role":"student"}'

Структура проекта

app/          Expo Router screens
components/   reusable React Native components
store/        Zustand stores
data/         mock building, graph and sensor data
lib/          Dijkstra, classifier, API client and 3D HTML
backend/      FastAPI backend, routing, risk map and ML fallback
constants/    UI copy and design tokens

Честные ограничения

EXODUS сейчас — hackathon MVP, а не сертифицированная система безопасности.

  • Нужна реальная калибровка в зданиях.
  • Нужны полевые тесты.
  • Нужна сертификация.
  • ML-модель должна обучаться на большем количестве данных.
  • 3D-анализ плана в demo-версии может работать на mock data.
  • Система не предсказывает землетрясения.

Правильная формулировка: EXODUS — прототип системы раннего локального обнаружения опасных вибраций и помощи в эвакуации. Он не заменяет МЧС или сертифицированные системы, а дополняет их на уровне здания.

Короткий pitch

EXODUS — умная система эвакуации для сейсмоопасных зданий. Сеть ESP32-датчиков фиксирует локальные вибрации, ML/fallback-классификатор отличает обычный шум от earthquake-like shaking, а Dijkstra строит безопасный маршрут в обход опасных зон. Приложение показывает маршрут в 2D/3D и объясняет пользователю, куда идти.

Обычная сирена говорит: "опасность". EXODUS говорит: "куда идти".

About

EXODUS smart evacuation MVP for earthquake-prone buildings

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages