AI Aviation Safety Analytics System

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1 servicesAll 1566 services
AI Aviation Safety Analytics System
Complex
from 1 week to 3 months
FAQ
AI Development Areas
AI Solution Development Stages
Latest works
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    823
  • image_logo-aider_0.jpg
    AIDER company logo development
    762
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    848

AI-based analytics for aviation safety

An aviation incident rarely occurs due to a single cause. ICAO describes this as a "Heinrich chain": the final event is just the tip of a pyramid of preceding anomalies. An AI safety analysis system catches the links in this chain before they become complete.

Data sources and types of anomalies

Aviation security operates through several streams:

  • FDR/QAR data (Flight Data Recorder / Quick Access Recorder) - thousands of parameters with a frequency of 4-64 Hz: speed, altitude, engine modes, rudder deflections, acceleration
  • ACARS messages — aircraft-to-ground technical messages, including fault codes
  • ATC negotiations — transcripts of negotiations with the dispatcher (NLP)
  • FOQA (Flight Operational Quality Assurance) — flight quality monitoring programs
  • Maintenance data - MRO records, component failure history

Typical anomalies for automatic detection:

Type of anomaly Parameters Flag threshold
Hard landing Vertical acceleration at touchdown >1.8g is normal, >2.6g is under investigation
CFIT precursor Descent rate + terrain + GPWS activation Stalemate combination
Engine over-temperature EGT/ITT depending on N1 mode Deviation >15°C from envelope
Unstabilized approach ILS deviation + speed + flap config on gate altitude Any non-compliance with SOP
Tail strike risk Pitch attitude during takeoff/landing >10° at speeds

Flight parametric data analysis algorithm

FOQA Event Detection via Sliding Windows:

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 analysis of ATC negotiations

Negotiation transcripts are an undervalued source of warning signs. Typical risk patterns include non-standard instructions, repeated requests for clearance, and frequency switching during critical phases.

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'
    }

Case: FOQA monitoring of a fleet of 24 aircraft

An airline operating 24 B737NG/A320 aircraft. Before the system's implementation, FOQA analyzed a selective sample of 5% of flights manually. After automation, 100% of flights were analyzed, with eight event types. During the first three months, 340 unstabilized approaches were identified (including 38 with significant deviations), seven hard landings above the inspection threshold, and EGT margin degradation on two engines predicted 60 cycles before the scheduled hot section replacement. The system ordered an unscheduled removal of one engine, as cracks in the compressor blade were detected.

Stack

Layer Technologies
FDR/QAR reception ARINC 717/767 parsers, Python
Time series pandas, scipy, stumpy (matrix profile)
Engine anomalies LSTM Autoencoder (PyTorch)
NLP negotiations BERT fine-tuned on the airframe
Storage TimescaleDB (time series)
Dashboard Grafana + custom React
Standards ICAO Annex 6, EASA AMC20-29, IS-BAO

Deadlines: Basic FOQA parametric event analyzer – 6-8 weeks. Full stack with NLP, predictive engine maintenance, and dashboard – 4-5 months.