|
Форум @ BelAstro.Net Форум белорусской любительской астрономической сети
|
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Deimos
Site Admin
Зарегистрирован: 10.07.2007
Сообщения: 6186 Благодарности: 75
|
Добавлено: Чт Сен 19, 2013 21:40 Заголовок сообщения: Калибровка 3-осного акселерометра |
|
|
Было дело, заморачивался задачей калибровки 3-осного акселерометра, имеющего 6 калибровочных параметров: смещения нуля и усиление для каждой оси. Получилась не вполне тривиальная математика, однако успешно работающая.
Сегодня Андрей Прокопович столкнулся с той же задачей, поэтому я решил сделать эту тему как конспект по такой калибровке, описав математику всего процесса.
Приступим.
_________________ Алексей
Профи-диванщик с опытом, есть диплом А4 в рамке.
|
|
Вернуться к началу |
|
|
Deimos
Site Admin
Зарегистрирован: 10.07.2007
Сообщения: 6186 Благодарности: 75
|
Добавлено: Чт Сен 19, 2013 21:43 Заголовок сообщения: |
|
|
Постановка задачи.
Требуется найти семейство калибровочных коэффициентов:
\( dX, dY, dZ \) - вектор смещения нуля.
\( sX, sY, sZ \) - коэффициенты усиления.
Исходные данные:
Набор измерений большой длины, содержащий отсчёты, которые обозначим \( (X,Y,Z)_i \), \((X_i, Y_i, Z_i) \). Использовать будем то обозначение, которое будет удобнее в контексте.
_________________ Алексей
Профи-диванщик с опытом, есть диплом А4 в рамке.
|
|
Вернуться к началу |
|
|
Deimos
Site Admin
Зарегистрирован: 10.07.2007
Сообщения: 6186 Благодарности: 75
|
Добавлено: Чт Сен 19, 2013 21:57 Заголовок сообщения: |
|
|
Исходя из ортонормированности системы координат \( \displaystyle \left( \vec{e_i}\vec{e_j} = \delta_{ij}\right)\) запишем равенство, справедливое в условиях отсутствия шумов (электронных, оцифровки, квантования и т.п.)
\( \displaystyle \left(sX(X_i + dX)\right)^2 + \left(sY(Y_i + dY)\right)^2 + \left(sY(Y_i + dY)\right)^2 = 1\)
То есть ускорение свободного падения в 1g всегда проецируется на 3 оси с учётом усиления и сдвига нуля.
Коэффициенты усиления зададим так, чтобы ускорение свободного падения получилось единичным, то есть пронормируем их на величину 1g с учётом динамического диапазона датчика. Это надо будет учесть при задании констант в датчике.
Однако каждое измерение содержит шумовую компоненту, что приводит к тому, что возникает шум:
\( \displaystyle \left(sX(X_i + dX)\right)^2 + \left(sY(Y_i + dY)\right)^2 + \left(sZ(Z_i + dZ)\right)^2 = 1 + N_i\)
Или
\( \displaystyle \left(sX(X_i + dX)\right)^2 + \left(sY(Y_i + dY)\right)^2 + \left(sZ(Z_i + dZ)\right)^2 - 1 = N_i\)
Составим выражение для невязки:
\( \displaystyle \Theta = \sum\limits_i N_i^2 = \sum\limits_i \left\{ \left(sX(X_i + dX)\right)^2 + \left(sY(Y_i + dY)\right)^2 + \left(sZ(Z_i + dZ)\right)^2 - 1 \right\}^2 = \sum\limits_i \left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\}^2\)
Теперь минимизируем невязку по набору параметров. Для удобства будем оптимизировать не масштаб, а квадрат масштаба. Так уравнения проще будут, а для монотонной положительной функции, которой является масштаб, это абсолютно допустимо.
_________________ Алексей
Профи-диванщик с опытом, есть диплом А4 в рамке.
|
|
Вернуться к началу |
|
|
Deimos
Site Admin
Зарегистрирован: 10.07.2007
Сообщения: 6186 Благодарности: 75
|
Добавлено: Чт Сен 19, 2013 22:19 Заголовок сообщения: |
|
|
\(
\left\{
\begin{aligned}
\frac{\partial\Theta}{\partial dX} &= 0\\
\frac{\partial\Theta}{\partial dY} &= 0\\
\frac{\partial\Theta}{\partial dZ} &= 0\\
\frac{\partial\Theta}{\partial sX^2} &= 0\\
\frac{\partial\Theta}{\partial sY^2} &= 0\\
\frac{\partial\Theta}{\partial sZ^2} &= 0\\
\end{aligned}
\right.
\)
Обратим внимание, что уравнения являются симметричными по осям, то есть для получения выражения для одной оси достаточно заменить индекс.
Распишем частные производные:
\( \displaystyle \frac{\partial\Theta}{\partial {dX}} = \sum\limits_i \left\{2\cdot\left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\} \times sX^2 \times 2\cdot(X_i+dX)\right\} = 0\)
\( \displaystyle \frac{\partial\Theta}{\partial {sX^2}} = \sum\limits_i \left\{2\cdot\left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\} (X_i+dX)^2\right\} = 0\)
Аналогично,
\( \displaystyle \frac{\partial\Theta}{\partial {dY}} = \sum\limits_i \left\{2\cdot\left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\} \times sY^2 \times 2\cdot(Y_i+dY)\right\} = 0\)
\( \displaystyle \frac{\partial\Theta}{\partial {sY^2}} = \sum\limits_i \left\{2\cdot\left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\} (Y_i+dY)^2\right\} = 0\)
и
\( \displaystyle \frac{\partial\Theta}{\partial {dZ}} = \sum\limits_i \left\{2\cdot\left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\} \times sZ^2 \times 2\cdot(Z_i+dZ)\right\} = 0\)
\( \displaystyle \frac{\partial\Theta}{\partial {sZ^2}} = \sum\limits_i \left\{2\cdot\left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\} (Z_i+dZ)^2\right\} = 0\)
Итого имеем 6 нелинейных уравнений с 6 неизвестными.
Опуская постоянные множители, перепишем
\( \displaystyle \sum\limits_i \left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\} (X_i+dX) = 0\)
\( \displaystyle \sum\limits_i \left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\} (Y_i+dY) = 0\)
\( \displaystyle \sum\limits_i \left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\} (Z_i+dZ) = 0\)
\( \displaystyle \sum\limits_i \left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\} (X_i+dX)^2 = 0\)
\( \displaystyle \sum\limits_i \left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\} (Y_i+dY)^2 = 0\)
\( \displaystyle \sum\limits_i \left\{ sX^2(X_i + dX)^2 + sY^2(Y_i + dY)^2 + sZ^2(Z_i + dZ)^2 - 1 \right\} (Z_i+dZ)^2 = 0\)
И, очевидно, прямыми методами решить их не выйдет. О способах решения подобных систем уравнений и о методах улучшения результатов я напишу позже.
_________________ Алексей
Профи-диванщик с опытом, есть диплом А4 в рамке.
Последний раз редактировалось: Deimos (Пт Сен 20, 2013 17:04), всего редактировалось 2 раз(а)
|
|
Вернуться к началу |
|
|
Deimos
Site Admin
Зарегистрирован: 10.07.2007
Сообщения: 6186 Благодарности: 75
|
Добавлено: Пт Сен 20, 2013 16:28 Заголовок сообщения: |
|
|
Приступим к решению данных уравнений.
Прямого решения не выйдет, поэтому будем решать его итеративно, методом последовательных приближений.
Начальные условия для смещения, очевидно, нулевые, то есть
\( {_{0}dX} = 0,\ {_{0}dY},\ {_{0}dZ} = 0 \)
Для номера итерации я буду применять нижний предваряющий индекс.
Для масштаба начальные условия будут зависеть от того, как мы считаем наши отсчёты \((X,Y,Z)\). Если за ускорение 1g принята единица и мы считаем числа дробными, то масштабные коэффициенты будут равны 1. Если же за 1g принято, скажем, 1024 единицы отсчёта АЦП, то масштабный коэффициент будет равен 1/1024. (Речь о начальном приближении). Впрочем, это не столь важно. В обоих случаях это будет абстрактное \(\displaystyle \ _{0}sX^2 =\ _{0}sY^2 =\ _{0}sZ^2 = \frac{1}{(1g)^2}\), только конкретное численное выражение может отличаться: один и тот же множитель входит в \(sX\) и \(X\), в одном случае в числителе, во втором - в знаменателе, да и не принципиально это.
Теперь надо выбрать итеративный метод, который:
1) Достаточно просто реализовать
2) Быстро сходится
3) Устойчиво сходится
_________________ Алексей
Профи-диванщик с опытом, есть диплом А4 в рамке.
Последний раз редактировалось: Deimos (Пт Сен 20, 2013 20:04), всего редактировалось 1 раз
|
|
Вернуться к началу |
|
|
Deimos
Site Admin
Зарегистрирован: 10.07.2007
Сообщения: 6186 Благодарности: 75
|
Добавлено: Пт Сен 20, 2013 17:00 Заголовок сообщения: |
|
|
Тройки уравнений являются линейными по отношению к \(sX, sY, sZ\) и могут решаться прямым методом.
Поскольку первые три имеют более низкие степени по смещению, относительно масштаба будем решать вторую тройку.
Обозначим
\( \displaystyle \ _{k}A_{PP} = \sum\limits_i (P_i + \ _{k}dP)^4 \), где P - одна из координат X,Y,Z.
\( \displaystyle \ _{k}A_{PQ} = \sum\limits_i (P_i + \ _{k}dP)^2(Q_i + \ _{k}dQ)^2 \), где P и Q - пара различных координат X,Y,Z
\( \displaystyle \ _{k}B_{P} = \sum\limits_i (P_i+\ _{k}dP)^2 \), где P - одна из координат X,Y,Z.
Тогда уравнение примет вид
\( \displaystyle
\begin{aligned}
\ _{k}A_{XX}\ _{k+1}sX^2 + \ _{k}A_{YX} \ _{k+1}sY^2 + \ _{k}A_{ZX} \ _{k+1}sZ^2 &= \ _{k}B_{X}; \\
\ _{k}A_{XY}\ _{k+1}sX^2 + \ _{k}A_{YY} \ _{k+1}sY^2 + \ _{k}A_{ZY} \ _{k+1}sZ^2 &= \ _{k}B_{Y}; \\
\ _{k}A_{XZ}\ _{k+1}sX^2 + \ _{k}A_{YZ}\ _{k+1}sY^2 + \ _{k}A_{ZZ} \ _{k+1}sZ^2 &= \ _{k}B_{Z}. \\
\end{aligned}
\)
Обратим внимание, что матрица \(||_{k}A||\) симметрична.
Решаем систему уравнений методом Крамера (можно любым другим, в принципе):
\( \displaystyle
\Delta = A_{XX} A_{YY} A_{ZZ} + A_{ZX} A_{XY} A_{YZ} + A_{XZ} A_{ZY} A_{YX} - A_{XZ} A_{YY} A_{ZX} - A_{XX} A_{ZY} A_{YZ} - A_{ZZ} A_{XY} A_{YX}; \\
\Delta_X = B_{X} A_{YY} A_{ZZ} + A_{ZX} B_{Y} A_{YZ} + B_{X} A_{ZY} A_{YX} - B_{Z} A_{YY} A_{ZX} - B_{X} A_{ZY} A_{YZ} - A_{ZZ} B_{Y} A_{YX}; \\
\Delta_Y = A_{XX} B_{Y} A_{ZZ} + A_{ZX} A_{XY} B_{Z} + A_{XZ} A_{ZY} B_{X} - A_{XZ} B_{Y} A_{ZX} - A_{XX} A_{ZY} B_{Z} - A_{ZZ} A_{XY} B_{X}; \\
\Delta_Z = A_{XX} A_{YY} B_{Z} + B_{Z} A_{XY} A_{YZ} + A_{XZ} B_{Y} A_{YX} - A_{XZ} A_{YY} B_{X} - A_{XX} B_{Y} A_{YZ} - B_{Z} A_{XY} A_{YX}.
\)
\( \displaystyle
\begin{aligned}
\ _{k+1}sX^2 &= \frac{\Delta_X}{\Delta}; \\
\ _{k+1}sY^2 &= \frac{\Delta_Y}{\Delta}; \\
\ _{k+1}sZ^2 &= \frac{\Delta_Z}{\Delta}. \\
\end{aligned}
\)
_________________ Алексей
Профи-диванщик с опытом, есть диплом А4 в рамке.
|
|
Вернуться к началу |
|
|
aeromash
ЛА
Зарегистрирован: 03.01.2009
Сообщения: 2833 Благодарности: 108
|
Добавлено: Чт Окт 03, 2013 13:05 Заголовок сообщения: |
|
|
Красива! Вычисленные статические и динамические коэффициенты осей - это конечно хорошо. Но в формулах не вижу ,как минимум температурного коэффициента. Коим в основном и порождается статический сдвиг по осям и изменение угла наклона (усиления). Как ни крути, а напильник и молоток все равно понадобится для калибровки. И еще вопрос, куда это мона всунуть?
_________________ Когда на свет появляется истинный гений, то узнать его можно хотя бы потому, что все тупоголовые объединяются в борьбе против него. Дж. Свифт
Хочу шапку Перельмана, жилетку Вассермана и ботинки Эйнштейна!
(SKYPE - yuri.rabishko, МТС - +375-29-7518860 Юрий Рабышко)
"Все пришельцы в Россию будут гибнуть под Смоленском" - фильм "Формула любви"
|
|
Вернуться к началу |
|
|
Andrey Prokopovich
ЛА
Зарегистрирован: 29.11.2007
Сообщения: 3423 Благодарности: 209
|
Добавлено: Пт Окт 04, 2013 00:36 Заголовок сообщения: |
|
|
Цитата: | И еще вопрос, куда это мона всунуть?
|
Формулы или акселерометр?
_________________ ©Но что-то, кажется, идет не так...
|
|
Вернуться к началу |
|
|
aeromash
ЛА
Зарегистрирован: 03.01.2009
Сообщения: 2833 Благодарности: 108
|
Добавлено: Пт Окт 04, 2013 22:28 Заголовок сообщения: |
|
|
Формулы в какой акселерометр?
_________________ Когда на свет появляется истинный гений, то узнать его можно хотя бы потому, что все тупоголовые объединяются в борьбе против него. Дж. Свифт
Хочу шапку Перельмана, жилетку Вассермана и ботинки Эйнштейна!
(SKYPE - yuri.rabishko, МТС - +375-29-7518860 Юрий Рабышко)
"Все пришельцы в Россию будут гибнуть под Смоленском" - фильм "Формула любви"
|
|
Вернуться к началу |
|
|
aeromash
ЛА
Зарегистрирован: 03.01.2009
Сообщения: 2833 Благодарности: 108
|
Добавлено: Пт Окт 04, 2013 22:30 Заголовок сообщения: |
|
|
Иначе это это как то непонятно все выглядит, особенно для человека с напильником.
_________________ Когда на свет появляется истинный гений, то узнать его можно хотя бы потому, что все тупоголовые объединяются в борьбе против него. Дж. Свифт
Хочу шапку Перельмана, жилетку Вассермана и ботинки Эйнштейна!
(SKYPE - yuri.rabishko, МТС - +375-29-7518860 Юрий Рабышко)
"Все пришельцы в Россию будут гибнуть под Смоленском" - фильм "Формула любви"
|
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы
|
|