flybrain. передатчик + приемник + автопилот. powered by stm32
Как задавать начальное референсное значение платформы
А в чем проблема?
Начальные углы по акселю задавайте. Гиры - по нулям.
Начальные углы по акселю задавайте. Гиры - по нулям
Ну не получится так. Если я плату изначально криво в самолет пихаю, откуда она узнает где какие стороны света относительно самолета?
Алекс, можно узнать полный формат пакета RFM-ки ( сколько байт преамбула итп.)?
Какую девиацию используете и из каких соображений?
Ну не получится так. Если я плату изначально криво в самолет пихаю, откуда она узнает где какие стороны света относительно самолета?
Стоп. А нахрена её криво в самолет пихать? Трудно ровно поставить типа ось x вдоль самолета, ось y - поперёк, z-вверх…
Начальные ролл и питч по акселю определяем, яв - по магнетометру.
В чем великая проблема?
Стоп. А нахрена её криво в самолет пихать?
Наверно по тому, что платка не в каждый самик влезет плашмя, но вполне себе стоймя залезает?
Как задавать начальное референсное значение платформы.
В существующих проектах предпологается неизменяемая установка платы, с возможностью ручного задания углов установки. Точное тримирование акселей делается по команде пользователя: модель должна стоять ровно. Гиры при инициализации (явной или неявной - при подаче питания) калибруют свои нули. Процедура инициализации, как и тримирования, обычно занимает секунд 15-30.
В существующих проектах предпологается неизменяемая установка платы
А если у меня плата встает только боком, или только с наклоном градусов 30? Все пропало?
Не ну я понимаю, текущие решения не умеют референс ресетить на старте. Но я то хочу, чтобы было максимально гибкое решение.
Сейчас в голову приходит такой вариант начальной установки:
- Держим кнопку, подаем питание. Плата спустя пару секунд переходит в режим каллибровки. моргает светодиодами.
- Ставит руль высоты на максимум вниз, типа просит самолет носом наклонить к земле и держать. дает на установку наклона 5 сек, затем собирает статистику
- Ставит руль высоты вверх, просит поставить самоль носом вверх
- Элероны влево, наклоняем самоль влево
- Элероны вправо, наклоняем вправо.
- Машет всеми рулями, просит зависнуть точно в горизонте, это будет начальным референсным положением с нулевыми рулями.
- Еще раз машет всеми рулями, просит наклонить самолет так, чтобы придать правильное триммерное положение рулям. в этот момент рули отслеживают наклоны и повторяют углы. Пользователь смотрит, где достаточно. Затем нажимает кнопку. Плата запоминает положение наклонных триммеров.
- Выход из режима каллибровки.
В те моменты когда самоль будет наклонятся, можно автоматом калибровать компас и аксель.
А если у меня плата встает только боком, или только с наклоном градусов 30? Все пропало?
Ничего не пропало.
Вот например у мну, можно девайс хоть как поставить. Просто нужно использовать в качестве референсных значений для определения горизонта показания акселя и магнетометра именно в таком положении. Фишку 30-ю аналогично ставить можно как угодно, но обязательно обучив ее при этом горизонту.
А гиры калибруются вне зависимости от положения девайса, главное чтоб он в покое оставался на протяжении всей калибровки.
Вот например у мну, можно девайс хоть как поставить.
Что значит как угодно? Можно задом наперед поставить? Как она узнает, где направление вперед?
Что значит как угодно? М
В разумных пределах по крену и тангажу
В разумных пределах по крену и тангажу
ну вот, а я хочу в неразумных пределах. Поставить задом наперед, вверх ногами. Ну или ось YAW с Roll поменять, например.
Рассказываю. Задаем т.н. референсный фрейм. В нормальном положении по акселю x=0g y=0g z=1g. Хотите перевернуть девайс z=-1g.
И крутитесь вокруг этого фрейма.
С магнето тоже самое.
если у меня плата встает только боком, или только с наклоном градусов 30?
Под неизменяемой установкой, имеется в виду не засовывать каждый раз как угодно.
Но сама установка - может быть любой. Просто программно вводятся коэффициенты поворота в нормаль по каждой из осей.
Плюс тонкая тримирование… Плюс автокалибровка. Ничего изобретатьь не надо .Просто посмотрите, как это у других сделано. 😃
В нормальном положении по акселю x=0g y=0g z=1g.
кто-то из нас тормозит 😃
И что для платы, которая знает только, что z=1g будет означать y>0 в этом случае? Это будет лево или право по отношению к самолету?
Дайте мне ссылку на инструкцию к FY-XX, я прочитаю что там пишут, а то вы все тут меня совсем запутали.
Это будет лево или право по отношению к самолету?
Вот жеж эти электронщики-теоретики…
при z=1g y>0 быть не может, увы. Это чё, там где вы находитесь g какоето другое?
Т.к расположение акселерометров относительно гироскопов неизменно, можно не наклонять, а попросить один раз повернуть на 1 оборот блинчиком и один раз - сделать “петлю” ( носом от горизонта вверх), потом поставить в покое в горизонте. Этих данных должно быть достаточно для калибровки направлений осей и горизонта.
Хотя, кажется, достаточно попросить сделать один известный по направлению оборот вокруг любой из осей и оставить в горизонте.
Вот жеж эти электронщики-теоретики
хорошо, мы такие. А вы, практики, никак объяснить не можете.
z=1
y=-0.789E-4
x=+0.45215
Как из этого понять где у самолета левый борт, а где правый?
Я вот о чем талдычу? Сама плата конечно знает, где у нее право, а где лево. Но, плата не знает, совпадает ли направление ее осей, с осями самолета (reference body frame). Если мы договариваемся, что плата может быть внутри самоля ориентирована по любому, то нужно учить плату ориентации внутри самолета и только после этого учить самолет горизонту.
Хотя, кажется, достаточно
неа, не будет этого достаточно.
Я вот сейчас подумал. должно быть так:
- поставить в горизонт, зсечь вектор тяжести.
- Наклонить влево, пауза
- Наклонить вперед, пауза
- Поставить в горизонт
Вот теперь все. Тогда направление pitch и roll будет известно, а yaw уже векторным прозведением можно расчитать да и GPS будет, если что откорректирует на ходу
хорошо, мы такие. А вы, практики, никак объяснить не можете. z=1 y=-0.789E-4 x=+0.45215
Этого в покое быть НЕ МОЖЕТ!
Суммарный вектор = 1, а тут уже только по z единица!
Такое может быть если z вертикально вниз смотрит, а по оси x дёрнули плату.
Ну или сдвинули по всем осям
Да, и еще такое может выть если оси у вас не перпендикулярны. Но это уже совсем сложный случай. 😃
Найти середину - это вариант,
И второе действие: “выровнять оси” - не забудьте,
иначе не сойдется с гирой.
Лога с сырыми датчиками посмотреть еще нет?
(время отсчета и три оси, по трем датчикам: аксель,гира,маг. ;
минут пять покрутить, чтобы конец маг-а заполнил(зачертил) сферу)
Передумал…
Лога с сырыми датчиками посмотреть еще нет?
да я чо-то как-то в основную работу погрузился. Платку пока отложил. До субботы буду занят на основной работе. Прежде чем с компасом ковыряться хочу еще сингулярность на pitch угле запатчить. Надо как-то вырубить искусственно установку этого угла точно в 90 градусов. Я все не решу на каком этапе алгоритма это получше сделать.
Я кстати реализовал кватернионы, только чо-то пака не уверен, что ошибок нет. Они субъективно хуже горизонт на перегрузках держат. Может ошибся где, надо еще покопаться получше в этой теме.
А какой толк на сырые данные смотреть? Тебе компас интересен или все в куче? Могу дать лог, только какой с него толк?
такое может выть если оси у вас не перпендикулярны
Ну я ж условно, для примера. Ясен пень, что не может.