AI-система безопасности полётов (Aviation Safety Analytics)

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
AI-система безопасности полётов (Aviation Safety Analytics)
Сложная
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

AI-аналитика безопасности авиации

Авиационный инцидент редко случается из-за одной причины. ICAO описывает это как "цепочку Хайнриха": финальное событие — лишь верхушка пирамиды предшествующих аномалий. AI-система для анализа безопасности ловит звенья этой цепочки до того, как они замкнутся.

Источники данных и типы аномалий

Авиационная безопасность работает с несколькими потоками:

  • FDR/QAR данные (Flight Data Recorder / Quick Access Recorder) — тысячи параметров с частотой 4-64 Гц: скорость, высота, режимы двигателей, отклонения рулей, ускорения
  • ACARS сообщения — технические сообщения самолёт-земля, включая fault codes
  • ATC переговоры — транскрипты переговоров с диспетчером (NLP)
  • FOQA (Flight Operational Quality Assurance) — программы мониторинга качества полётов
  • Данные техобслуживания — MRO записи, история отказов компонентов

Типовые аномалии для автоматического обнаружения:

Тип аномалии Параметры Порог флага
Жёсткая посадка Вертикальное ускорение при касании >1.8g нормально, >2.6g — расследование
CFIT precursor Скорость снижения + рельеф + GPWS активация Патовое сочетание
Engine over-temperature EGT/ITT в зависимости от режима N1 Отклонение >15°C от envelope
Unstabilized approach ILS deviation + speed + flap config на gate altitude Любое несоответствие SOP
Tail strike risk Pitch attitude при взлёте/посадке >10° при скоростях <Vr

Алгоритм анализа параметрических данных полёта

FOQA Event Detection через скользящие окна:

import numpy as np
import pandas as pd
from scipy.signal import savgol_filter
from typing import List, Dict

def detect_flight_exceedances(
    fdr_df: pd.DataFrame,
    aircraft_type: str,
    phase_of_flight: str
) -> List[Dict]:
    """
    fdr_df: DataFrame с временными рядами параметров полёта
    Возвращает список событий-нарушений с временными метками.
    """
    exceedances = []

    # Сглаживание шума датчиков
    fdr_df['vsi_smooth'] = savgol_filter(
        fdr_df['vertical_speed_fpm'], window_length=11, polyorder=3
    )

    # Жёсткая посадка
    if phase_of_flight == 'landing':
        touchdown_mask = (
            (fdr_df['radio_altitude_ft'] < 5) &
            (fdr_df['radio_altitude_ft'].shift(1) >= 5)
        )
        touchdown_idx = fdr_df[touchdown_mask].index

        for idx in touchdown_idx:
            if idx in fdr_df.index:
                nz = fdr_df.loc[idx, 'normal_acceleration_g']
                if nz > 1.8:
                    severity = 'hard' if nz > 2.6 else 'firm'
                    exceedances.append({
                        'event_type': 'hard_landing',
                        'timestamp': fdr_df.loc[idx, 'timestamp'],
                        'value': round(nz, 3),
                        'threshold': 2.6,
                        'severity': severity,
                        'requires_inspection': nz > 2.6
                    })

    # Нестабилизированный заход: скорость вне коридора на 500 ft
    if phase_of_flight == 'approach':
        gate_mask = (
            (fdr_df['radio_altitude_ft'].between(480, 520)) &
            (fdr_df['flap_position'] < 30)  # не полный флап
        )
        gate_points = fdr_df[gate_mask]

        for idx, row in gate_points.iterrows():
            # Скорость должна быть Vapp ± 10 kt
            vapp = row.get('vapp_kt', 145)  # из FMS
            if abs(row['ias_kt'] - vapp) > 10:
                exceedances.append({
                    'event_type': 'unstabilized_approach_speed',
                    'timestamp': row['timestamp'],
                    'value': round(row['ias_kt'], 1),
                    'expected': vapp,
                    'deviation_kt': round(row['ias_kt'] - vapp, 1),
                    'severity': 'go_around_required'
                })

    return exceedances


def engine_health_anomaly(
    engine_params: pd.DataFrame,
    baseline_egt_delta: float = 0.0
) -> Dict:
    """
    EGT Margin — разница между фактическим и предельным EGT.
    Тренд снижения margin указывает на деградацию двигателя.
    """
    # Нормализация на условия (OAT, давление, N1)
    engine_params['egt_corrected'] = (
        engine_params['egt_c'] - engine_params['oat_c'] * 0.95
        - engine_params['altitude_ft'] * 0.002
    )

    # EGT margin trend за последние 50 циклов
    recent_cycles = engine_params.tail(50)
    x = np.arange(len(recent_cycles))
    slope, intercept = np.polyfit(x, recent_cycles['egt_corrected'], 1)

    # Тренд >0.5°C/цикл — признак деградации hot section
    degradation_rate = slope  # °C за цикл

    return {
        'egt_trend_per_cycle': round(degradation_rate, 3),
        'current_margin_c': round(
            engine_params['egt_limit_c'].iloc[-1] - engine_params['egt_corrected'].iloc[-1], 1
        ),
        'alert': degradation_rate > 0.5,
        'cycles_to_limit': (
            int((engine_params['egt_limit_c'].iloc[-1] - engine_params['egt_corrected'].iloc[-1]) / degradation_rate)
            if degradation_rate > 0 else None
        )
    }

NLP анализ ATC переговоров

Транскрипты переговоров — недооценённый источник предвестников. Типичные паттерны риска: нестандартные инструкции, переспрашивание clearance, переключение частот в критические фазы.

from transformers import pipeline

# Классификатор на дообученном авиационном корпусе
atc_safety_classifier = pipeline(
    "text-classification",
    model="aviation-safety/atc-risk-classifier-bert",
    device=0
)

risk_patterns = [
    "say again",           # непонимание инструкции
    "unable",              # невозможность выполнения
    "traffic alert",       # TCAS
    "go around",           # уход на второй круг
    "emergency",
    "minimum fuel",
    "expedite"
]

def analyze_atc_transcript(transcript: str) -> dict:
    risk_keywords_found = [p for p in risk_patterns if p.lower() in transcript.lower()]
    ml_result = atc_safety_classifier(transcript[:512])[0]

    return {
        'risk_keywords': risk_keywords_found,
        'ml_risk_label': ml_result['label'],
        'ml_risk_score': round(ml_result['score'], 3),
        'requires_review': len(risk_keywords_found) > 0 or ml_result['label'] == 'HIGH_RISK'
    }

Кейс: FOQA мониторинг парка из 24 воздушных судов

Авиакомпания-перевозчик, 24 самолёта B737NG/A320. До внедрения системы FOQA анализировали выборочно — 5% рейсов вручную. После автоматизации: 100% рейсов, 8 типов событий. За первые 3 месяца выявлено 340 нестабилизированных заходов (из них 38 — со значимыми отклонениями), 7 жёстких посадок выше порога инспекции, деградация EGT margin на двух двигателях предсказана за 60 циклов до плановой замены горячей секции. Система подняла один движок на внеплановое снятие — обнаружены трещины compressor blade.

Стек

Слой Технологии
Приём FDR/QAR ARINC 717/767 парсеры, Python
Временные ряды pandas, scipy, stumpy (matrix profile)
Аномалии двигателей LSTM Autoencoder (PyTorch)
NLP переговоров BERT fine-tuned на авиакорпусе
Хранение TimescaleDB (временные ряды)
Дашборд Grafana + кастомный React
Стандарты ICAO Annex 6, EASA AMC20-29, IS-BAO

Сроки: Базовый FOQA анализатор параметрических событий — 6-8 недель. Полный стек с NLP, предиктивным обслуживанием двигателей и дашбордом — 4-5 месяцев.