Я использую Sparkfun esp32 для моего проекта квадрокоптера.Он уже хорошо летает, но я заметил, что Iam не может достичь частоты обновления imu 8 кГц из-за медленной формулы вычисления высоты тона и крена:
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, но сейчас я не могу его найти.Есть ли способ, которым я могу сделать это быстрее, даже за счет точности или аккуратности?