EXODUS — интеллектуальная система эвакуации для школ, университетов, общежитий, офисов и других зданий в сейсмоопасных регионах.
Обычная сигнализация говорит: "Опасность". EXODUS говорит: "Левая лестница опасна. Идите к правому выходу."
Во время сильных толчков человеку недостаточно услышать сирену. Ему нужно быстро понять, куда именно идти. Статичный план эвакуации не учитывает, что лестница может быть перегружена, часть здания может вибрировать сильнее, а коридор может быть заблокирован.
EXODUS превращает эвакуацию в динамическую навигацию:
- сеть датчиков вибрации;
- анализ опасных зон;
- построение безопасного маршрута;
- 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 для запуска сценариев.
- Normal: все датчики зеленые, система работает в штатном режиме.
- Door slam: один датчик фиксирует короткий пик, система не включает тревогу.
- Earthquake: датчик возле левой лестницы фиксирует опасную вибрацию, левая лестница становится красной, маршрут перестраивается через правую лестницу.
Backend построен на FastAPI.
Основные endpoints:
GET /healthPOST /sensor-dataGET /zone-statusGET /safe-route?start=room_214POST /evacuation-routePOST /simulate-eventPOST /simulate-evacuationGET /sensors
Модель не предсказывает землетрясение. Она классифицирует локальную вибрацию как обычный шум, удар, транспортную вибрацию или 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
npm install
npx expo startОткройте приложение через Expo Go, iOS/Android simulator или web-режим Expo.
Из корня проекта:
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 -ccurl 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 — прототип системы раннего локального обнаружения опасных вибраций и помощи в эвакуации. Он не заменяет МЧС или сертифицированные системы, а дополняет их на уровне здания.
EXODUS — умная система эвакуации для сейсмоопасных зданий. Сеть ESP32-датчиков фиксирует локальные вибрации, ML/fallback-классификатор отличает обычный шум от earthquake-like shaking, а Dijkstra строит безопасный маршрут в обход опасных зон. Приложение показывает маршрут в 2D/3D и объясняет пользователю, куда идти.
Обычная сирена говорит: "опасность". EXODUS говорит: "куда идти".