Skip to content

Как работи алгоритъмът за средна скорост

Тук описваме как се изчислява средната скорост в сегментите за контрол на средна скорост - както от страна на БГТОЛ, така и как нашето мобилно приложение я следи в реално време.

Основни понятия

  • Сегмент: пътна отсечка между две контролни точки (камери/портали) с предварително измерена дължина.
  • Полилиния (polyline): последователност от GPS координати, които дефинират точния път на сегмента.
  • Map matching: привързване на GPS точките към пътната мрежа за по-точно разстояние.
  • Проектиране върху полилиния: изчисляване на най-близката точка от GPS позицията върху пътната линия.

1. Как БГТОЛ изчислява средната скорост

БГТОЛ използва класическата формула за средна скорост:

vavg=sΔt

където:

  • s — предварително измерената дължина на сегмента (в метри)
  • Δt=texittentry — времето между преминаване под входната и изходната камера (в секунди)
  • Преобразуване: km/h=s(m)Δt(s)×3.6

Процес на измерване от БГТОЛ:

  1. Детекция на влизане: Камерата на входа разпознава регистрационния номер и записва времето
  2. Детекция на излизане: Камерата на изхода разпознава същия номер и записва времето на излизане
  3. Изчисление: Използва се точната дължина на сегмента (измерена предварително) и времевата разлика
  4. Обработка на нарушения: Ако средната скорост превишава лимита с допустимия толеранс, се генерира акт

Повече информация от БГТОЛ

За подробна информация за цялата система на БГТОЛ, включително въпроси и отговори за контрола на средна скорост, можете да прочетете официалната страница с въпроси и отговори на БГТОЛ.

2. Как мобилното приложение изчислява средната скорост в движение

Нашето приложение използва умен алгоритъм, който работи в реално време с 98% точност.

2.1. Детекция на сегменти

Приложението непрекъснато проверява GPS позицията спрямо базата данни със сегменти:

За всеки сегмент:
  distance = най-къса дистанция до полилинията на сегмента
  ако distance < 100 метра:
    потребителят е в този сегмент

2.2. Определяне на посока на движение

При влизане в сегмент се определя посоката на движение:

  • Изчислява се разстоянието до двата края на сегмента (A и B)
  • Ако е близо до край A (< 10% от дължината или < 300м): движение A→B
  • Ако е близо до край B: движение B→A
  • Ако не е близо до нито един край: сесията се отхвърля (вероятно влизане от страничен път)

2.3. Два метода за изчисляване на скорост

Приложението използва два паралелни метода и ги комбинира интелигентно:

Метод 1: Формула разстояние/време

averageSpeedByFormula = realDistanceTravelled / timeElapsed

Изчисляване на реалното изминато разстояние:

  1. Текущата GPS позиция се проектира върху полилинията на сегмента
  2. Изчислява се разстоянието от проектираната точка до двата края
  3. В зависимост от посоката: realDistance = segmentLength - distanceToDestination
  4. Като резерв се използва кумулативното разстояние от GPS точки

Метод 2: Средно от GPS скорости

averageSpeedFromSpeedReadings = sum(allGpsSpeedReadings) / count(readings)

Събират се всички GPS измервания на скорост и се изчислява средно аритметично.

2.4. Интелигентно комбиниране на методите

За максимална точност се използва претеглена средна между двата метода:

Логиката:

  • В началото (progress = 0%): 100% GPS скорости, 0% формула
  • В средата (progress = 50%): 75% GPS скорости, 25% формула
  • В края (progress = 100%): 50% GPS скорости, 50% формула

2.5. Защо този подход работи отлично?

  1. GPS скоростите са добри за кратки интервали, но натрупват грешка
  2. Формулата S/t е точна за дълги разстояния, но неточна в началото поради GPS неточности
  3. Комбинацията използва предимствата и на двата метода
  4. Проектирането върху полилиния елиминира грешките от GPS "скачания" встрани от пътя
  5. Валидацията на влизане гарантира, че измерването започва от правилното място

2.6. Предупреждения в реално време

Приложението показва предупреждение когато:

  • Средната скорост > лимит + толеранс
  • Изминати са поне "X%" от сегмента, където Х се конфигурира в настройките от сегмента
  • От последното предупреждение са минали достатъчно секунди

3. Примерно изчисление

БГТОЛ метод:

СегментДължинаВлизанеИзлизанеВремеСредна скорост
Вакарел-Ихтиман5.8 km10:15:1210:18:24192 s108.75 km/h
v_avg = 5800 м / 192 с × 3.6 = 108.75 km/h

Мобилно приложение (в процеса на шофиране):

При 30% прогрес през сегмента:

  • Реално изминато разстояние: 1,740 м (чрез полилиния проектиране)
  • Изминато време: 58 секунди
  • GPS скорости: средно 110 km/h
  • Формула S/t: 1740м / 58с × 3.6 = 108 km/h
  • Тежести: 65% GPS + 35% формула = 109 km/h

При 80% прогрес през сегмента:

  • Реално изминато разстояние: 4,640 м
  • Изминато време: 154 секунди
  • GPS скорости: средно 110 km/h
  • Формула S/t: 4640м / 154с × 3.6 = 108.5 km/h
  • Тежести: 60% GPS + 40% формула = 109.2 km/h

Данни и поверителност

  • Суровите GPS точки се пазят локално и краткосрочно; съхраняваме само агрегирани данни за история.
  • Никакви лични записи или GPS следи не се качват в интернет.
  • Всички изчисления се правят локално на устройството.