Расчет высоты тона
Я использую Sparkfun esp32 для моего проекта квадрокоптера. Он уже хорошо летает, но я заметил, что Iam не может достичь частоты обновления imu 8 кГц из-за медленной формулы вычисления Pitch and Roll:
currAccel.x = (atan2(-filtered.y, filtered.z)*180.0)/M_PI;
currAccel.y = (atan2(filtered.x, sqrt(filtered.y*filtered.y + filtered.z*filtered.z))*180.0)/M_PI;
Конечно, я бегу на частоте 1 кГц (из-за более низкой скорости передачи данных акселерометра). Максимум, что я могу сделать, составляет около 7 кГц. Даже пытался запустить его в другом потоке, к сожалению, с похожим результатом. Похоже, что sqrt и atan2 занимают много времени на вычисления. Я видел некоторые другие возможности для вычисления шага и крена без sqrt, но сейчас я не могу его найти. Есть ли способ, которым я могу сделать это быстрее, даже за счет точности или аккуратности?