Важное примечание: этот пост предназначен для Михаила, не буду спорить и отвечать другим участникам!
Чтобы не потерять информацию, вам нужен FIFO буфер в РАМ-е при запуске, старт определяется по последним значениям. Как только старт обнаружен, начинается запись и записываете весь фильтр в память, включая самые ранние значения - таким образом не потеряеш информацию.
Для точности акселерометра - вот некоторые вопросы, которые следует принять во внимание:
1. про проблему с отклонением от вертикали вам уже известно
2. поскольку большинство датчиков работают с максимальной частотой 500 Гц, многие данные неправильно интегрируются, потому что для правильной интеграции необходимо знать точную фазу траектории и математическое описание траектории.
3. При высоких частотах дискретизации, цифровые акселерометры, как известно, шумные - 5-6 бит при 12-13-битное дополнение до 2 - ето уже много потерянной информации.
4. Аналоговые датчики печально известны длительным температурным дрейфом для нулевого значения.
5. Цифровые датчики высокого g в основном представляют собой 12-13-битное дополнение до 2. При таком квантовании возникает та же проблема, что и с потерянными таймфреймами. 3-4 бита, потерянные из-за шума при высоком g, и 3-4 бита при низком g - не одно и то же, и они не компенсирует друг друга.
6. Датчики с низким ускорением более точны, но потеря информации в моменты высокого ускорения вызовет дополнительные проблемы.
7. Также есть ошибка данных из-за центробежных сил.
Все эти факторы влияют на общую ошибку. Если один способ определения апогея точнее другого - оставляю за сам решать.
Про того преимущества, что акселерометры работают в вакууме
- сначала создайте ракету, которая отправится в открытый космос, а затем подумайте об этой проблеме.
Делайте то, что наиболее надежно и просто в работе - на мой взгляд, используйте барометрический датчик, чтобы определять изменения давления, акселерометра только для блокировки ошибочные решения.