Appearance
Как работи алгоритъмът за средна скорост
Тук описваме как се изчислява средната скорост в сегментите за контрол на средна скорост - както от страна на БГТОЛ, така и как нашето мобилно приложение я следи в реално време.
Основни понятия
- Сегмент: пътна отсечка между две контролни точки (камери/портали) с предварително измерена дължина.
- Полилиния (polyline): последователност от GPS координати, които дефинират точния път на сегмента.
- Map matching: привързване на GPS точките към пътната мрежа за по-точно разстояние.
- Проектиране върху полилиния: изчисляване на най-близката точка от GPS позицията върху пътната линия.
1. Как БГТОЛ изчислява средната скорост
БГТОЛ използва класическата формула за средна скорост:
където:
— предварително измерената дължина на сегмента (в метри) — времето между преминаване под входната и изходната камера (в секунди) - Преобразуване:
Процес на измерване от БГТОЛ:
- Детекция на влизане: Камерата на входа разпознава регистрационния номер и записва времето
- Детекция на излизане: Камерата на изхода разпознава същия номер и записва времето на излизане
- Изчисление: Използва се точната дължина на сегмента (измерена предварително) и времевата разлика
- Обработка на нарушения: Ако средната скорост превишава лимита с допустимия толеранс, се генерира акт
Повече информация от БГТОЛ
За подробна информация за цялата система на БГТОЛ, включително въпроси и отговори за контрола на средна скорост, можете да прочетете официалната страница с въпроси и отговори на БГТОЛ.
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
Изчисляване на реалното изминато разстояние:
- Текущата GPS позиция се проектира върху полилинията на сегмента
- Изчислява се разстоянието от проектираната точка до двата края
- В зависимост от посоката:
realDistance = segmentLength - distanceToDestination
- Като резерв се използва кумулативното разстояние от 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. Защо този подход работи отлично?
- GPS скоростите са добри за кратки интервали, но натрупват грешка
- Формулата S/t е точна за дълги разстояния, но неточна в началото поради GPS неточности
- Комбинацията използва предимствата и на двата метода
- Проектирането върху полилиния елиминира грешките от GPS "скачания" встрани от пътя
- Валидацията на влизане гарантира, че измерването започва от правилното място
2.6. Предупреждения в реално време
Приложението показва предупреждение когато:
- Средната скорост > лимит + толеранс
- Изминати са поне "X%" от сегмента, където Х се конфигурира в настройките от сегмента
- От последното предупреждение са минали достатъчно секунди
3. Примерно изчисление
БГТОЛ метод:
Сегмент | Дължина | Влизане | Излизане | Време | Средна скорост |
---|---|---|---|---|---|
Вакарел-Ихтиман | 5.8 km | 10:15:12 | 10:18:24 | 192 s | 108.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 следи не се качват в интернет.
- Всички изчисления се правят локално на устройството.