Создание собственной системы стабилизации

HikeR
oleg70:

ОС не пускает к железу напрямую

вы сейчас о чем, прямой доступ к /dev/* за железо уже не считается?

AlexSneg
HikeR:

вы сейчас о чем

Я думаю он примерно об этом:

GPIOA->BSRRL = 0x0c00;

или вот об этом:

while( GPIOA->IDR & 0x0100) {
// bla-bla-bla

}

HikeR

пример на bash:

# Set up GPIO 4 and set to output
echo "4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio4/direction

# Set up GPIO 7 and set to input
echo "7" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio7/direction

# Write output
echo "1" > /sys/class/gpio/gpio4/value

# Read from input
cat /sys/class/gpio/gpio7/value
AlexSneg

в тактах процессорных разницу посчитайте, и еще расскажите как получить прерывание по событию на ножке 😉

HikeR

могу рассказать, только для чего? чтобы еще раз повторить довольно известный факт об отсутствии в Linux каких либо ограничений на доступ к железу?
а такты считать при использовании “языков высокого уровня” вообще-то не принято. не для этого они созданы.

AlexSneg
HikeR:

об отсутствии в Linux каких либо ограничений на доступ к железу

Аналог прерывания от события на ножке в user space получится продемонстрировать?

HikeR

а что, интересно, продемонстрировано в последней строке моего примера на баше?

AlexSneg

там нарисовано чтение значения на ножке. Для вас это тоже самое, что и прерывание по событию?

HikeR

да ёпрст… “событие” на цифровом входе — изменение его уровня. “прерывание” — вызов callback-функции по наступлению события (счетчик) либо по условию (уровень == 0/1). а как еще узнать про изменение кроме как прочитать ячейку памяти (“значение на ножке”)??

в общем, не надо больше про “Linux не пускает к железу напрямую”. в Linux любое устройство есть файл с блочным или символьным доступом, которое, по желанию/требованию mmap-ится в память без каких-либо трудностей.

alexeykozin

Имхо все эти изыски для пары человек из миллионов.
важные вопросы сегодняшнего дня
-чтобы ахрс держало уровень горизонта в резких ускорениях
-чтобы инерциалка хотябы в пределах 30 секунд при перемещениях не уходила бы по позиции больше метра

HikeR

а что в них такого важного? все уже давно придумано, реализовано и скопипащено тысячи раз. у меня Flymentor (на одних аналоговых гироскопах) начинает заваливать горизонт только через 2-3 минуты непрекращающейся “колбасни”. (уже) ширпотребный Parrot мобилками управляется и проблем не знает. китайцы продают игрушки по 20 уе, которые с успехом держат что угодно на любых ускорениях и висят на месте как вкопанные.

а тут (не конкретно тут, а образно) все что-то свое придумывают, для чего не хватает 9DOF+барометры+GPS+камеры 😉

oleg70
HikeR:

довольно известный факт об отсутствии в Linux каких либо ограничений на доступ к железу

Прямой доступ к железу несомненно есть (в частности “чудесный” механизм маппирования), но ядро, опять же, предоставляет этот доступ когда ЕМУ угодно, а не когда угодно приложению в пользовательском пространстве…
Спустившись на уровень драйверов, в принципе, наверно можно заблокировать шедуллер и делать что то одно и вовремя, но ведь это изврат, который заблокирует всю ОС, а главное - не предусмотрен самой идеологией ядра линукса… (линукс изначально заточен - не пускать юзеровское пространство в обход шедуллера)… Не так ли ??

HikeR
oleg70:

линукс изначально заточен - не пускать юзеровское пространство в обход шедуллера)… Не так ли ??

не так.

> в частности “чудесный” механизм маппирования
не вижу причин для сарказма. через WMI или сокеты организовывать межпроцессорное взаимодействие типа круче?

> ядро, опять же, предоставляет этот доступ когда ЕМУ угодно, а не когда угодно приложению в пользовательском пространстве
а с какого что-то из userspace должно иметь приоритет? его участь — сидеть тихонько в уголке и ждать очереди.

вы пытаетесь совместить несовместимое, “ах, хорошо бы иметь интерпретатор в жесткой рилтаймовой ОС…”. при этом вспоминаете про OS/2:

oleg70:

у нее под каждый запущенный процесс была возможность гибко выставлять приоритеты и кучу других системных настроек, распределением нагрузки на процессор можно было управлять прям из GUI…

в любой *nix системе все то же самое можно делать даже из консоли и даже удаленно. любую *nix систему можно запустить под RTOS как обычную задачу с любым приоритетом. если хотите превратить RTOS в багованное нечто, то сделайте любой интерпретатор ее задачей.

rual
HikeR:

китайцы продают игрушки по 20 уе, которые с успехом держат что угодно на любых ускорениях и висят на месте как вкопанные.

Можно ссылку на игрушку < 100 уе, которая

alexeykozin:

-чтобы ахрс держало уровень горизонта в резких ускорениях
-чтобы инерциалка хотябы в пределах 30 секунд при перемещениях не уходила бы по позиции больше метра

То что щёточные мелкокоптеры устойчиво летают под ручным управлением я отлично знаю

AlexSneg
HikeR:

все что-то свое придумывают

Спасибо, что подняли нам веки. Ща выбросим все свои проекты, назы, фишки, арду. Вот только семок пожуём мальца и сразу же пойдем купим себе китайских игрушек по 20 у.е. B-)B-)😎

P.S. Я думал, что Дринкера забанили пожизнено😢, а оно вона как…

SergDoc
HikeR:

у меня Flymentor (на одних аналоговых гироскопах) начинает заваливать горизонт только через 2-3 минуты непрекращающейся “колбасни”.

Дмитрий хватит уже про флайментор - он нифига не знает о положении относительно горизонта - под каким углом запустишь - так и будет держать, он просто регистрирует и “душит” все угловые скорости, тоже самое и его оптический датчик - регистрирует горизонтальные скорости и за счёт этого “душит” их - просто и надёжно без всяких интеграторов…

AlexSneg:

P.S. Я думал, что Дринкера забанили пожизнено, а оно вона как…

а Дринкер тут каким боком?

alexeykozin

это наверное шутки такие чтоб народ повеселить, да тему расшевелить

rual
AlexSneg:

Спасибо, что подняли нам веки.

Алексей, мне тоже подними ))) У тебя на АП реакция рулей самоля зависит от воздушной скорости или жесткий ПИД на все режимы?

AlexSneg

Зависит, если есть СВС и он разрешен в настройках.
Но это только для самолета. На самолете я от ошибок по углам работаю и где-то 20 - 25 Гц обновление сервоканалов отдаю. Но, честно говоря, на скае я это не особо чувствую на скорости до 80км/ч. Если скорость выше, то лучше прижимать слегка рейты на ПИДах. Конечно, это все субъективно от носителя зависит ибо крыло ловит вибру гораздо быстрее классики. Димка, летает на полярисе с моим АП, там скорости под 120 км/ч и выше. Говорит, что все ок. Для крыла, у меня нет статистики, чтобы что-то объективное утверждать о пользе или недостатках подобных алгоритмов.

Если в качестве объекта управления АП указан коптер, то там ПИДы устроены по другому. На коптере я работаю от ошибок по угловым вращениям ну и частоты обновления регулей 480 Гц обязательно. А иначе на коптере перфектной плавности маневров и висения не получается достигнуть.

rual
AlexSneg:

Для крыла, у меня нет статистики, чтобы что-то объективное утверждать о пользе или недостатках подобных алгоритмов.

Речь о самолях.

AlexSneg:

Зависит, если есть СВС и он разрешен в настройках.

Зависит от квадрата скорости потока или ступечатое переключение режимов полёта? А ещё чей-то опыт изучал?
Просто у меня “раздергивается” и штопорит на высокой скорости, а на низкой вяло рулится, если ПИДы прижать. Правда носитель - “фанера” из гофрированного картона )))

AlexSneg
rual:

Зависит от квадрата скорости потока или ступечатое переключение режимов полёта? А ещё чей-то опыт изучал?

Просто линейное при достижении некоторого порога от 100% до заданных. Больше ничей опыт не изучал.