Такой тип low-pass фильтрации это не мое изобретение. Он описан очень много где (например), в том числе известно, как переводить cut-off frequency в smoothing constant α. Это не самый точный тип low-pass фильтра, но зато самый простой.
Вообще самый корректный и эффективный вариант это использовать пин IMU, который выдает сигнал, когда появляются новые данные, для пробуждения МК по прерыванию. Просто это как-то сильно сложнее, и не уверен, что целесообразно для такого проекта, как у меня. Впрочем, вполне возможно, что я перейду на такой вариант.
Да, без приемника он может работать, хотя с телефона летать не очень удобно.
Теоретически можно, хотя не знаю, хватит ли там пинов. И насколько esp32-cam может справиться одновременно и с управлением полетом, и с тем, чтобы что-то делать с камерой.
Весь полетный код намеренно помещен в Arduino'вский loop, чтобы он проще воспринимался людьми, знакомыми с Arduino. Однако это не значит, что он обязательно будет зря грузить процессор — функция ожидания данных с IMU вполне может и освобождать поток, пока новые данные не появятся. Это реализуемо средствами FreeRTOS, которая и рулит потоками в ESP32 (и в ESP8266).
Сразу предупрежу, что цель создания дрона была не побить рекорды, а образовательная, но тем не менее: 1. Полетный код использует одно ядро. Но насколько я знаю, Wi-Fi в ESP32 использует второе. 2. Честно говоря, не проверял, предположу, что существенное время итерации он просто ждет данных с IMU. Без поддержки Wi-Fi прошивка занимает 25% флеша, с поддержкой — 59%. Статически используется порядка 30% RAM, сколько используется в процессе работы — не проверял. 3. Не совсем понял вопрос. Каждый мотор потребляет порядка 2 А, остальное — это мелочь. 4. Не измерял, могу прикинуть, что точно до 10 А. 5. Это зависит от приемника и пульта, у тех, что я использую, думаю, достаточно большая, по крайней мере я в помещениях не отлетал настолько далеко, а вне помещения я не летал. 6. Дрон весит ~60 г, максимальная суммарная тяга пропеллеров ~120 г, соответственно, поднять кроме себя он может очень мало чего.
Конкретно этот алгоритм это не рокет-сайенс и 4 года занял не он :). А безуспешные попытки его отладки, чтобы заставить дрон стабильно летать, и последующие за ними забрасывания проекта.
Серьезный подвес я собирать на пробовал, но я пытался отладить стабилизацию, подвешивая его на нитях. Итог: это очень неудобно и бесполезно. С подвесом отлаживать можно, да.
У меня есть проект, который позволяет легко запускать и прикручивать к современным шахматным GUI шахматную программу из 70-х — CHEKMO-II. https://github.com/okalachev/chekmo
Ну а все остальное без аппаратного ускорения графики работает точно "прекрасно", браузер, например? Я ставил в UTM Windows XP, работало отвратительно. В отличие от Linux, для которого в UTM есть виртуальный GPU, и который действительно хорошо работает.
Удивительно, что никто не заметил, что заход про allow_boolean_assignment - это шутка, и на самом деле в программе удается приравнять Тrue к False только потому, что Тrue там начинается с кириллической буквы Т.
Такой тип low-pass фильтрации это не мое изобретение. Он описан очень много где (например), в том числе известно, как переводить cut-off frequency в smoothing constant α.
Это не самый точный тип low-pass фильтра, но зато самый простой.
Вообще самый корректный и эффективный вариант это использовать пин IMU, который выдает сигнал, когда появляются новые данные, для пробуждения МК по прерыванию. Просто это как-то сильно сложнее, и не уверен, что целесообразно для такого проекта, как у меня.
Впрочем, вполне возможно, что я перейду на такой вариант.
Да, без приемника он может работать, хотя с телефона летать не очень удобно.
Теоретически можно, хотя не знаю, хватит ли там пинов. И насколько esp32-cam может справиться одновременно и с управлением полетом, и с тем, чтобы что-то делать с камерой.
Нет, ну не настолько плохо :)
Калибровка IMU, кстати, в моем коде есть, без нее дрон бы не смог летать. Она просто не влезла в статью.
Весь полетный код намеренно помещен в Arduino'вский loop, чтобы он проще воспринимался людьми, знакомыми с Arduino. Однако это не значит, что он обязательно будет зря грузить процессор — функция ожидания данных с IMU вполне может и освобождать поток, пока новые данные не появятся. Это реализуемо средствами FreeRTOS, которая и рулит потоками в ESP32 (и в ESP8266).
ESP8266 все-таки менее мощный, чем ESP32.
Сразу предупрежу, что цель создания дрона была не побить рекорды, а образовательная, но тем не менее:
1. Полетный код использует одно ядро. Но насколько я знаю, Wi-Fi в ESP32 использует второе.
2. Честно говоря, не проверял, предположу, что существенное время итерации он просто ждет данных с IMU. Без поддержки Wi-Fi прошивка занимает 25% флеша, с поддержкой — 59%. Статически используется порядка 30% RAM, сколько используется в процессе работы — не проверял.
3. Не совсем понял вопрос. Каждый мотор потребляет порядка 2 А, остальное — это мелочь.
4. Не измерял, могу прикинуть, что точно до 10 А.
5. Это зависит от приемника и пульта, у тех, что я использую, думаю, достаточно большая, по крайней мере я в помещениях не отлетал настолько далеко, а вне помещения я не летал.
6. Дрон весит ~60 г, максимальная суммарная тяга пропеллеров ~120 г, соответственно, поднять кроме себя он может очень мало чего.
Конкретно этот алгоритм это не рокет-сайенс и 4 года занял не он :). А безуспешные попытки его отладки, чтобы заставить дрон стабильно летать, и последующие за ними забрасывания проекта.
Серьезный подвес я собирать на пробовал, но я пытался отладить стабилизацию, подвешивая его на нитях. Итог: это очень неудобно и бесполезно. С подвесом отлаживать можно, да.
У меня есть проект, который позволяет легко запускать и прикручивать к современным шахматным GUI шахматную программу из 70-х — CHEKMO-II. https://github.com/okalachev/chekmo
Bash это не компонент Linux, это часть проекта GNU. И он, кстати, заменен в macOS на Zsh.
Так я конкретно задал вопрос про Windows 11 ARM.
Ну а все остальное без аппаратного ускорения графики работает точно "прекрасно", браузер, например? Я ставил в UTM Windows XP, работало отвратительно.
В отличие от Linux, для которого в UTM есть виртуальный GPU, и который действительно хорошо работает.
Так игры работают или нет? В Parallels работают.
Удивительно, что никто не заметил, что заход про allow_boolean_assignment - это шутка, и на самом деле в программе удается приравнять Тrue к False только потому, что Тrue там начинается с кириллической буквы Т.
Я прошел собеседование?
При чем здесь Минюст США?
А когда будет антимонопольный иск против Google и ее Google Chrome?
И флешка, и клавиатура это тоже маленькие компьютеры.
Вы только что изобрели ОС с графическим интерфейсом пользователя?