Вывод формулы для двустороннего определения дальности между UWB трансиверами

от автора

Вот настал третий за 12 лет случай, когда в профессии программист-микроконтроллеров понадобилось вспомнить школьную математику.
В этом тексте я представил перевод AppNote(а) «The mathematics of two-way ranging». Также я добавил свои комментарии в те места, которые неочевидны при первом прочтении.

Это нужно для определения расстояния между двумя радио трансиверами, которые могут определять моменты времени прихода и отправки радиоволны. Такое умеют делать UWB трансиверы, например DW1000.

Постановка задачи

Есть два трансивера, которые могут посылать и принимать пакеты с данными и регистрировать моменты времени отправки и приема.

Определить время распространения радиоволны для вычисления расстояния между трансиверами (Range=C*ToF).

Вот, кстати, сама формула вычисления ToF (TimeOfFlight). На первый взгляд ни разу не очевидно почему именно так.

Итак, перевод.

Вывод асимметричной формулы двустороннего двух путевого измерения дальности

Рисунок 2 показывает путешествие радиоволны при double-sided two-way ranging и определяет терминологию для временных интервалов для обоих устройств. Устройство А и устройство B принимают участие в двустороннем обмене сообщений для измерения времени распространения радиоволны.

рисунок 2

рисунок 2

На рисунок 2 устройство А посылает сообщение P1 для устройства B. Устройство B вскоре получает это сообщение. Через время Db устройство В посылает сообщение Р2 обратно устройству А. Сообщение Р2 прибывает на устройство А в момент времени Ra. После этого устройство А посылает сообщение Р1. Согласно рис.2 получается временное соотношение:

R_{a} = 2T_{f}+D_{b} \;\;\;\;\;\;\;\;\;\;\;\;\; (1)

Таким образом

T_{f}=\frac{1}{2} (R_{a}-D_{b})   \;\;\;\;\;\;\;\;\;\;\;\;\; (2)

На практике временные интервалы измеряются реальными часами на устройствах А и В, которые работают независимо друг от друга. Какие-то часы идут быстрее какие-то медленнее по сравнению с идеальными часами. Часы тактируются кварцевым резонатором на плате у которого разве, что постоянная частота. Давайте предположим, что часы на устройстве А и на устройстве В идут соответственно ka kb раз быстрее по отношению к идеальным, правильным часам. И реальное время измеренное на реальных часах придется домножать на коэффициенты ka kb. Ввиду этого реальное время теперь придется измерять переменными с шляпками ^.

и аналогично

Используя значения реальных времен со шляпками для формулы (2) мы получаем

Ошибка измеренного времени радиоволны в пути вычисляется по формуле (8)

для физического уровня UWB значения выражений (ka-1) и (kb-1) могут достигать 20 ppm. Это 20*10^(-6). Для точных измерений важно держать ошибку менее 100ps, что значит что запаздывание Db должно быть менее 5us. Это невозможно так как даже короткие UWB пакеты обычно дольше 100us. Решение состоит в том, чтобы использовать две задержки туда и обратно.

Исходя из формулы (4) мы знаем что

И аналогично из (6)

Затем из формулы (10) и (1) мы можем сказать что

если взять формулу 12 и до множить (12) с обеих сторон на ka, то согласно (3) получим (12а). Запомним это равенство, оно нам скоро пригодится.

из (12) и (3) получается

и аналогично ввиду симметрии схемы радиопередачи

Формулы (12) и (13) хороши тем, что содержат величины со шляпками, которые можно измерить на реальных неточных часах внутри трансиверов: Ra Rb Da Db. Но вот проблема, у нас нет способа измерить коэффициенты ka и kb. И ошибки в этих величинах затмевают значение Tf. Однако есть одна вещь, которую мы можем сделать. Если умножить Ra на Rb основная часть стоимости умножения будет произведение Da на Db. Для этого члена произведения константы ?? и ?? компенсируют друг друга.

Тогда из (12) и (13)

И из (16) (13) (12а) получаем (17)

Из правой части выносим за скобки 2Tf. Знаменатель правой части умножаем на 1 (kb/kb). Получаем

В правой части числитель и знаменатель получились одинаковые! Можно сократить. Удивительно. Так как kb близок к 1, то kb можно отбросить.

аналогично Так как ka близок к 1, то ka можно отбросить.

Сейчас у нас есть 2 формулы для оценки ToF. И так как ka kb очень близки к 1. 0,99999<ka,kb<1.00002 мы можем оценить ToF.

Эти оценки очень близки к фактическому Tf, потому что ka и kb очень близки к единице и, что особенно важно, их точность не зависит от задержек отклика, используемых в устройствах A и B.

Какую формулу использовать (20) или (21)? Это зависит от того чьи часы более точные. Например если известно, что на устройстве B более точные часы, то то надо использовать формулу (21).
Обратите внимание, что числители в формулах (20) и (21) одинаковые. В случае идеальных часов знаменатели будут равны. Если не известно чьи часы точнее, то для вычисления приближенного времени надо вычислить среднее арифметическое от знаменателей (20) и (21) и использовать его в финальной формуле.

И вот мы вывели неочевидную формулу для вычисления ToF в режиме DS-TWR. Для DS-TWR в общем подразумевается что Da и Db должны быть примерно одинаковые, чтобы общая ошибка была мала. Но это не является ограничением при использовании формул (20), (21) и (22). Это бремя снимается и не требуется одинаковое время ответа ка каждом конце.

Вывод

Как видите вывод формулы определения времени прохождения радиоволны с учетом компенсации нестабильности кварцевого резонатора весьма трудоемкий.

Словарь

Акроним

Расшифровка

DS-TWR

double-sided two-way ranging

PPM

parts per million

Da^

измеренное время реакции на poll на устройстве А

Db^

измененное время реакции на poll на устройстве B

Ra^

измеренное время ожидания ответа на устройстве А

Rb^

измеренное время ожидания ответа на устройстве B

Da

реальное время реакции на poll на устройстве А

Db

реальное время реакции на poll на устройстве B

ToF

TimeOf Flight. Время распространения радиоволны на расстояние между трансиверами

UWB

Ultra-wideband

Rb

реальное время ожидания ответа на устройстве B

Ra

реальное время ожидания ответа на устройстве А

ka

коэффициент близкий к 1 для компенсации нестабильности кварца на устройстве A

kb

коэффициент близкий к 1 для компенсации нестабильности кварца на устройстве B


А какую математику приходилось использовать вам будучи программистом микроконтроллеров? Напишете, если не сложно, в комментариях.

Links

http://latex.codecogs.com/eqneditor/editor.php

https://habr.com/ru/post/719542/
https://www.youtube.com/watch?v=5KN4dJdkHUk
https://www.youtube.com/watch?v=5KN4dJdkHUk&t=126s
https://www.youtube.com/watch?v=zA27p0Pj30U

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Вы работали с UWB?

40% да4
60% нет6

Проголосовали 10 пользователей. Воздержался 1 пользователь.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Вы программировали чип DW1000?

27.27% да3
72.73% нет8

Проголосовали 11 пользователей. Воздержался 1 пользователь.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Вы использовали математику в программировании микроконтроллеров?

90% да9
10% нет1

Проголосовали 10 пользователей. Воздержались 2 пользователя.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Вам понятен вывод формулы?

80% да8
20% нет2

Проголосовали 10 пользователей. Воздержался 1 пользователь.

ссылка на оригинал статьи https://habr.com/ru/articles/723594/