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

Samer

Если констатировать то гиры по осям считают углы очень точно, и уход измерений очень медленный.
Но только не совпадают эти углы с реальными углами относительно горизонта , при больших наклонах обоих
осей . Трудно представить ситуацию когда коптеру будут давать команду летать по кругу , меняя оси поочередно. ( передом, боком и задом )
Если мы летим прямо по камере то задаем только 1 угол. И при таком полете расчета по осям хватит на 100 %. Не совсем понятно зачем нам нужна ориентация , кроме использования компаса. Коптеры летают с наклоном 30-40 град.И если они наклонились больше, то в этом виновата стабилизация. А те кто летает в АКРО то как я
понимаю там все на гирах и полностью ручное управление.
Кстати аксель калибровать не обязательно. Я у себя сделал калибровку мозгов, в отличии от стандартной схемы где калибруют пульт. Стиками при висении выравниваю коптер и нажимаю кнопку.
Значения стиков записываются в ОЗУ и потом вычитаются из значений новых( есть задержка на запись) При включении коптера значения считываются из памяти .

trim_x =constrain ( 125 - EEPROM.read(0) , -6 , 6 ) ;
trim_y =constrain ( 125 - EEPROM.read(1) , -6 , 6 ) ;
trim_z =constrain ( 125 - EEPROM.read(2) , -2 , 2 ) ;

if (kom5==1 && kof==0)
{ kof=1;
EEPROM.write(0,BIT3); trim_x =constrain ( 125 - BIT3, -6 , 6 );
EEPROM.write(1,BIT4); trim_y =constrain ( 125 - BIT4, -6 , 6 );
EEPROM.write(2,BIT5); trim_z =constrain ( 125 - BIT5, -2 , 2 );
}

oshibka_x = ug_xg - dx - trim_x ;
oshibka_y = ug_yg - dy - trim_y ;

dx и dy углы с пульта.

SergDoc

Чёт я наверно не с той планеты?
наклонили мы ось x на 30 гр. повернулись вокруг неё ещё на 30 гр. что покажут ДУС и аксель, и как это смешать?
существует вообще 5 алгоритмов нахождения положения в пространстве, но только 2 из них удобоваримые (матричный метод и кватернионы) и заметьте во всех алгоритмах общий вектор по всем осям, а не выискивание отдельных векторов и потом коррекция их не знамо по чём…

SergejK
Samer:

Не совсем понятно зачем нам нужна ориентация , кроме использования компаса.

Насколько я понимаю для таких примочек как инс, компенсация центрифугальных ускорений да и собственно вообще стабилизация по GPS. А так да, если не вращаться по яву то такой подход выглядит рабочим для ручного управления.

Samer
SergDoc:

что покажут ДУС и аксель, и как это смешать?

Проделал опыт : Наклонил по X на 30гр а потом на 30 по Y , смотрел по гирам. Гиры показывают 30 30 а аксель 30 36. Появилась ошибка 6 градусов по Y. ( гиры не стабилизированны по акселю)
Если мы летим прямо , по Х 30 гр и даем например в право стиком 30гр по Y,
то гиры стабилизируют наклон по Y до 30 гр по своему. Коптер летит наискось.
Через время коррекции гир они начинают стремится к 36 гр. Но с пульта идет
30 по X и 30 по Y . Гиры как бы перекрутили немного и уменьшат наклон.
Коптер некоторое время полетит не под 45 гр от прямого полета ,а чуть больше.
Если перекладка курсов будет не быстрая , то все должно быть отлично

Чтоб летать только по гирам то с пульта надо слать не абсолютные угы наклона,
а ошибку по осям.( плюс убрать коррекцию гир ) Чем больше отклонение стика от нулевой оси , тем больше ошибку должны слать. Будет постоянное вращение по оси , пока не вернём стик в 0.

SergDoc
Samer:

Чтоб летать только по гирам то с пульта надо слать не абсолютные угы наклона, а ошибку по осям.( плюс убрать коррекцию гир ) Чем больше отклонение стика от нулевой оси , тем больше ошибку должны слать. Будет постоянное вращение по оси , пока не вернём стик в 0.

да и угол считать не надо, достаточно пропорции с угловых скоростей в управление мешать - это велосипед КУК
а если ещё аксель добавить со своими пропорциями, то это КК2 (второй КУК)

rual
SergDoc:

да и угол считать не надо, достаточно пропорции с угловых скоростей в управление мешать - это велосипед КУК
а если ещё аксель добавить со своими пропорциями, то это КК2 (второй КУК)

Дык я вот эти формулы выше и написал))) Нафиг все синусы-косинусы, всё вообще можно считать с фиксированнной запятой (целочисленной математикой).

alexeykozin

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

SergDoc
alexeykozin:

обсуждаем как деградировать до кука

эээ не скажи, там в KK2 довольно интересный регулятор (ПИД в смысле)…

oleg70
Samer:

Проделал опыт : Наклонил по X на 30гр а потом на 30 по Y , смотрел по гирам.

Сергей, мне тоже стало интересно: а почему не сделать “как положено” для нормальной ИНС ? В этом какой то глубинный замысел ? что б тратить на это время… в чем прикол то ?
(если уж идти по пути упрощения математики то можно вообще две гиры китайских на раму поставить будет летать “на ручках” тоже неплохо…)

Samer
oleg70:

Сергей, мне тоже стало интересно: а почему не сделать “как положено” для нормальной ИНС ?

На что хватает понимания то и делаю, а просто брать кусок кода не зная что и как работает не хочется ( в смысле математики ).
В принципе у меня все работает нормально.
Тогда надо брать готовые прошивки и возится с настройками.
Тема называется :
Создание СОБСТВЕННОЙ системы стабилизации.
Плохая или хорошая , но СОБСТВЕННАЯ .

alexmos
Samer:

На что хватает понимания то и делаю, а просто брать кусок кода не зная что и как работает не хочется ( в смысле математики ). В принципе у меня все работает нормально. Тогда надо брать готовые прошивки и возится с настройками. Тема называется : Создание СОБСТВЕННОЙ системы стабилизации. Плохая или хорошая , но СОБСТВЕННАЯ .

Хорошая позиция, но только тогда непонятно упорство с которым вы отрицаете то решение, что вам предлагают. Вы же сами задали вопрос, почему так происходит - все отлично при движении раздельно по осям, но возникает ошибка при сложном движении. Вам говорят как это решается - и это единственный способ. И не настолько уж и сложный, алгоритм DCM к примеру достаточно прост. Но вы пытаетесь решить проблему вводом каких то посторонних сущностей и поправочных коэффициентов без какого-либо обоснования, повторяя то, что прошли самодельшики 10 лет назад и резльтатом которого стали рабочие автопилоты типа Мультивия или Ардупилота.

rual
oleg70:

Сергей, мне тоже стало интересно: а почему не сделать “как положено” для нормальной ИНС ? В этом какой то глубинный замысел ? что б тратить на это время… в чем прикол то ?

Я хоть и не Сергей, своё мнение выскажу: качество применяемых нами датчиков не позволяет сделать 100% ИНС, с удержанием позиции без опоры хотя бы десятки минут. В основном борьба идет за плавность и точность перемещения с опорой на ГНСС, при достаточно сложных алгоритмах и местами весьма неустойчивых. КУКовские же алго весьма просты и устойчивы, некоторая проблема возникает если хотим прикрутить навигацию, но и это решаемо. Когда читал ветку про немецкий полетнег (МК вроде), то сложилось впечатление что алго там именно такой, и у мелкой китайшины тоже.
Ну и самое главное:

Samer:

Тема называется :
Создание СОБСТВЕННОЙ системы стабилизации.
Плохая или хорошая , но СОБСТВЕННАЯ .

К тому же если пока (или вообще ) нет желания заниматься навигацией, то нафига козе баян? Сначала закручивать вектора в оператор ориентации ( а некоторые это делают ещё и синусами-косинусами), а потом обратно раскручивать в вектора моментов стабилизации, ради чего, когда их можно взять сразу с датчиков?

В начале зимы было у меня желание написать статейку-конструктор про примитивную стабилизацию с раскладкой на пальцах, но увидев, что большинство на форуме обсуждает цветовую гамму нового фантика - забил… ну ещё и лень сильно поддакивала 😁

SergDoc
rual:

но увидев, что большинство на форуме обсуждает цветовую гамму нового фантика - забил…

Жги есчё )))
del - rcopen.com/forum/f123/topic363499/15 пдф-ки открываются нет?
вроде у меня глюк просто
что бы не потерялось:
rcopen.com/forum/f123/topic363499/15
rcopen.com/forum/f123/topic363499/18
rcopen.com/forum/f123/topic363499/19
rcopen.com/forum/f123/topic363499/22
rcopen.com/forum/f123/topic363499/26
rcopen.com/forum/f123/topic363499/28
rcopen.com/forum/f123/topic363499/31
rcopen.com/forum/f123/topic363499/32
s3.amazonaws.com/…/Certificate.pdf
у меня остались ещё куски кода на питоне от задач, но смысла в них нет без среды…

alexmos
rual:

К тому же если пока (или вообще ) нет желания заниматься навигацией, то нафига козе баян? Сначала закручивать вектора в оператор ориентации ( а некоторые это делают ещё и синусами-косинусами), а потом обратно раскручивать в вектора моментов стабилизации, ради чего, когда их можно взять сразу с датчиков?

Хм, может я чего то не понимаю, но при чем тут ИНС и удержание позици? Да самая элементарная вещь - коррекция по акселю - требует знания ориентации в виде хотя бы вектора. Как можно скорректировать две непонятные величины, которые мы получим после интегрирования гироскопа раздельно по осям, и связать их с ВЕКТОРОМ гравитации? В этом нет никакого математического смысла, кроме идеалных одномерных случаев.

rual
alexmos:

коррекция по акселю - требует знания ориентации в виде хотя бы вектора

Ориентацию дает нормированный вектор акселя - вертикаль (0,0,1). Отклонение от вертикали создает проекцию оси гравитации на горизонтальные оси акселя, вот они в качестве пропорциональной и интегральной составляющей вводятся в ПИД, составляющая Д берется с оси ДУСа. Для мелких и шустрых может понадобится составляющая Д’ (угловое ускорение) - численное дифференцирование оси ДУС.

alexmos:

Как можно скорректировать две непонятные величины, которые мы получим после интегрирования гироскопа раздельно по осям, и связать их с ВЕКТОРОМ гравитации?

Почему непонятные? Вполне понятные, если ДУС не интегрировать. ДУС в данном случае выполняет роль демпфера угловой скорости, т.е. стремится удержать установленное положение с нулевой угловой скоростью, не важно как расположенное к вектору гравитации. Дополняя его проекциями вектора гравитации на горизонтальные оси акселя получаем двумерный синус отклонения от вертикали, который даст ПИ-составляющие, которые будут возвращать коптер в горизонт. Если сюда добавить дестабилизацию от РУ, то получим управление в горизонте(в АПМ вроде ЛИВЕЛ называется), если убрать аксель - получим управление угловыми скоростями (АКРО). Есть мат.модель, будет время соберу ардумодельку (хотел про это статью написать, но придется размазывать).
Ну и демпфер газа - смесь РУ_газа с вертикальной ось акселя (совпадающей с осью тяги), позволяет сделать более плавное руление по газу. Китайцы, которые этого не знают, будут в восторге.
Формулы я выше писал, они рабочие.

alexmos
rual:

Отклонение от вертикали создает проекцию оси гравитации на горизонтальные оси акселя, вот они в качестве пропорциональной и интегральной составляющей вводятся в ПИД

Нельзя использовать аксель в обратной связи, он же шумит страшно, а все вибрации рамы будут усилены пид-контроллером. Аксель если и использовать, то отфильтрованный с частотой среза сотые доли герц (как это делают комплиментарные или Калман-фильтры).

rual:

очему непонятные? Вполне понятные, если ДУС не интегрировать

  • изначально речь шла про интегрирование и “непонятную” ошибку после этого.
oleg70
rual:

качество применяемых нами датчиков не позволяет сделать 100% ИНС

Добавлю к этому: у меня ни стого ни ссего подох акселерометр (видимо от старости)) в BMX055… долго не мог понять в чем дело и в конце концов обнаружил что появилось КЗ на ножках датчика (именно на ножках а не на плате)…
Т.е. работал работал и умер! … хорошо что не в полете а на столе. Так что имеем в виду, что и такое бывает… , Во

mahowik
SergDoc:

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

я ранее писал создателю курса Юргену по поводу исходников их SIM-а и он меня заредиректил на их девелопера… если интересно, то могу покопаться…

jShadow
mahowik:

В MIT разработали систему позиционирования по сигналу Wi-Fi с дециметровой точностью
geektimes.ru/post/273686/

Впечатляет!