А давайте обсудим Arducopter - APM

Shuricus
ssilk:

Сообщение от raefa
Гироскоп - фиксирует ускорение по осям, акселерометр - положение в пространстве.

Наоборот…)

Сергей, ну вы то не первый день замужем, и пишите такие вещи.

Прибор который отвечает за горизонт - это АКСЕЛЬ, АКСЕЛЬ, и только АКСЕЛЬ.

Никаких наоборот.

Вы все забываете одну простую вещь - аксель имеет две функции, и не только измеряет ускорение, но и положение в пространстве.

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

alexeykozin
Shuricus:

Прибор который отвечает за горизонт - это АКСЕЛЬ, АКСЕЛЬ, и только АКСЕЛЬ.

в ардупилоте горизонт считают исходя из показаний следующих датчиков:
-гироскоп
-аксель
-жпс
подсиcтема одной из функций которой является вычисление горизонта и углов по крену и птчу называется AHRS
посмотреть можно тут github.com/diydrones/ardupilot/…/AP_AHRS.cpp

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

// @Param: RP_P
// @DisplayName: AHRS RP_P
// @Description: This controls how fast the accelerometers correct the attitude
// @Range: 0.1 0.4
// @Increment: .01 AP_GROUPINFO(“RP_P”, 5, AP_AHRS, _kp, 0.2f)

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

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

the_fly
Shuricus:

Прибор который отвечает за горизонт - это АКСЕЛЬ, АКСЕЛЬ, и только АКСЕЛЬ.

Никаких наоборот.

в теме коптеров я совсем недавно.
но телефоны с гироскопом - четко регистрируют положение устройства
телефоны с акселерометром - четко регистрируют шаги.

Если в телефоне нет гироскопа - поворот экрана срабатывает кривовато, не четко. Да, с акселерометром определяют положение устройства, но настолько плохо, что для создания сферических панорам 360 они не пригодны
пример - LG PhotoSphere, Google PanoSphere
да и сомневаюсь я, что устройство в названии которого стоит ускорение - не будет замерять ускорение

Более того, вопрос - каким образом первые камеры кэнон имея на борту лишь гироскоп могли отвечать за горизонт?

macrokernel

Друзья, подскажите, это нормально что дома при закрытых окнах и дверях (сквозняка нет) коптер сносит в сторону?

Для проверки подлетел немного над кроватью, поднял сантиметров на 20-30, коптер улетает вперед со скоростью меньше 1 м/с на глаз. Результат повторяется в 100% случаев, сносит всегда вперед, может, еще немного в сторону. При наборе высоты коптер по горизонтали не смещается. Аппаратура показывает, что стик в центре. Радио, регуляторы, акселерометр и компас калибровал.

APM 2.6, рама F450, моторы SunnySky 2212 всё с Банггуда, пропеллеры боле-менее отбалансированы изолентой, развесовка нормальная, никакая сторона не перевешивает. Прошивка 3.2.

В поле даже при довольно сильном ветре в лоитере позицию держит хорошо.

Shuricus
the_fly:

в теме коптеров я совсем недавно.

Вот именно, при чем тут телефон.
Я уже обьяснял. Для полета коптеру МИНИМУМ необходим контроллер с гироскопами по трем осям. Но никакого автолевела при этом не будет. Тем не менее, без акселя - он будет отлично летать!
Что бы было выравнивание в горизонт, необходимо добавить акселерометр.

Летать нужно было на Куках, что бы это знать, а не на мобильных телефонах.

alexeykozin:

в ардупилоте горизонт считают исходя из показаний следующих датчиков:
-гироскоп
-аксель
-жпс

Ну и Алексей, вы же понимаете, что для автолевела, ЖПС ну совершенно не нужен.

Единственный датчик, который будет помнить где у коптера горизонт - это Аксель. И хоть убейся, гироскоп тут совершенно не причем. Он нужен, для того что бы оставалась мгновенная стабильность коптера, которую аксель обеспечить не в состоянии в силу своей тормознутости.

techbv

Прекрасно, по акселю , если разложить ускорение свободного падения по векторам можно вычислить вертикаль. И я как понял из даташита это реализовано, напруга на выходах по осям при покое не нулевая, а зависит от положения акселя. Понятно. Зачем тогда гироскоп? Угол поворота всегда можно найти взяв вторую производную по ускорению вращательного движения.

the_fly
Shuricus:

Вот именно, при чем тут телефон.
Я уже обьяснял. Для полета коптеру МИНИМУМ необходим контроллер с гироскопами по трем осям. Но никакого автолевела при этом не будет. Тем не менее, без акселя - он будет отлично летать!
Что бы было выравнивание в горизонт, необходимо добавить акселерометр.

Летать нужно было на Куках, что бы это знать, а не на мобильных телефонах.

при том, что принцип работы и задачи очень близкие. Более того, не удивлюсь, если чипы те же самые. каким образом, если он замеряет лишь ускорения?

С Вашего поста выше - четко сказано, что акселерометр помогает, а не является единственным кто это решает.

Shuricus:

Единственный датчик, который будет помнить где у коптера горизонт - это Аксель.

techbv:

Зачем тогда гироскоп

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

techbv

Гир показывает скорость поворота и ВСЁ. Взяв производную по времени получите угол. В покое гир ничего вам не даст. Только при изменении положения даст скорость с которой оно поменялось. Так что угол в любом случае вычисляется.

alezz

Еще в раз. Гироскоп увы определяет не абсолютные отклонения, а угловую скорость. Зная время измерения мы можем определить угол относительно горизонта. Единственная проблема - конечная точность расчетов, в расчетах всегда присутствует небольшая ошибка. Так как система относительная, то у нас постоянно будет накапливаться ошибка. Для компенсации этой ошибки и используется акселереометр (и жпс)
Акселерометр может достаточно точно определить угол относительно горизонта только если система в покое, в движении тоже есть погрешность, а в свободном падении акселерометр в плане определения угла вообще бесполезен

SergDoc
Shuricus:

Единственный датчик, который будет помнить где у коптера горизонт - это Аксель. И хоть убейся, гироскоп тут совершенно не причем.

Влезу:
нужен - да при интегрировании показаний возникает ошибка, но в краткосрочной перспективе показания очень точны, акселерометр же наоборот шумный и медленный и не справился бы с этой задачей, и может дать правильные показания только в долгосрочной перспективе (задушеный фильтром)
расчёт угла ведётся и по ДУС-ам и по акселю потом “смешиваются” в нужных пропорциях:
например: 0.9 - расчёт угла из показаний ДУС и 0.1 - расчёт угла из показаний акселя (можете назвать это корректировкой)…
и на последок вспомните прибор такой - Флайментор (в принципе и сейчас продаётся) - ставится на модель верталёта для новичков. Так вот у него всего лишь 3 ДУС enc03 те же что и в КУКе, но горизонт он держит намного дольше чем КУК (напомню в КУКе нет вообще расчёта углов там просто пропорция составлена от показаний датчиков), а тут он рассчитывает “горизонт”…
так что ни без одного ни без другого горизонта у вас не получится…
это надо в вопросы новичка перенести…

Shuricus

Спасибо Сергей, спасибо, что наконец подробно объяснили.

Только мне кажется, флайментор не горизонт удерживал, а текущее положение. Но и кук может очень долго его сохранять, при хорошей настройке.

Видимо софтом еще многого можно добиться. Но по прежнему, без акселя - горизонт невозможен. И если он плывет, то это в первую очередь проблема акселя, а не гир. Я так думаю 😃

alezz:

Гироскоп увы определяет не абсолютные отклонения, а угловую скорость. Зная время измерения мы можем определить угол относительно горизонта.

Не можем. Гиры не знают где горизонт. Им вообще пофиг. ЖПС к горизонту вообще никаким боком.

SergDoc
Shuricus:

Только мне кажется, флайментор не горизонт удерживал, а текущее положение.

так я его в кавычки и засунул )))
А вообще, применительно к Арду: наращивание мощи проца: PX4/Pixhawk, vrbrain… борды под линуксом, а алгоритм то тот же…

alezz
Shuricus:

Не можем. Гиры не знают где горизонт. Им вообще пофиг. ЖПС к горизонту вообще никаким боком.

конечно гирам пофиг, не пофиг контроллеру 😃 Для того чтобы он знал где горизонт и нужна калибровка ground level при подключении батареи (и при первом арминге). А дальше контроллер постоянно считает угол основываясь на данных о угловой скорости от гирика (основная информация в определении угла наклона) и данных о векторе ускорения от акселерометра (информация для компенсации ошибки). Данные от GPS нужны для уточнения вектора скорости (ускорения), это особенно важно для больших скоростей

SergDoc
alezz:

Для того чтобы он знал где горизонт и нужна калибровка ground level при подключении батареи (и при первом арминге).

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

Shuricus
alezz:

Для того чтобы он знал где горизонт и нужна калибровка ground level при подключении батареи (и при первом арминге).

Алексей, ну вы вааще не в теме 😃

И вы вообще не читаете, что тут пишут, и вообще я тоже перестаю с вами спорить.

Калибровка левела в виде ВНИМАНИЕ - акселя! делается один раз и навеки, дома через гуи, (до следующей калибровки). И НИКОГДА при подключении батареи или арминге.

alezz:

Данные от GPS нужны для уточнения вектора скорости (ускорения), это особенно важно для больших скоростей

Покажите код в Арду который данные ЖПС использует для расчета горизонта?

alezz
SergDoc:

они калибруются не для этого, датчики тоже капризные и ноль у них не всегда на месте (температура например), и данная калибровка проводится для того, чтобы проц знал нулевые показания датчиков и от них считал и не важно в каком положении будет находиться мосх, хоть вверх ногами, лижбы не трясся…

а ты попробуй поставить коптер криво, например две ноги выше а две ниже, подключить батарею, заармится и попытаться взлететь. Только подальше отойди 😃

Shuricus

Я так всегда и делаю, братан.

И как я и сказал - ты вообще не хочешь читать и понимать, что тебе пишут:

SergDoc:

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

Физкульт привет!

alezz
Shuricus:

Калибровка левела в виде ВНИМАНИЕ - акселя! делается один раз и навеки, дома через гуи, (до следующей калибровки). И НИКОГДА при подключении батареи или арминге

наконец то, зачатки трезвого мышления! Аксель, да калибруется в мишн планнере. Левел задается при подключении батареи и арминге. Проведи эксперимент о котором я сказал выше.

Shuricus:

Покажите код в Арду который данные ЖПС использует для расчета горизонта?

жпс используется не непосредственно для расчета горизонта а для определения вектора ускорения, читай внимательно. А уже вектор ускорения используется для компенсации погрешности в расчете горизонта. 😃

Shuricus
alezz:

Левел задается при подключении батареи и арминге. Проведи эксперимент о котором я сказал выше.

Пипец. Полный пипец. Аксель и левел - это одно и тоже. Твои зачатки трезвого мышления, даже не в перспективе.

Посмотри мои видео на всякий случай. Я экспериментов уже обэксперементировался.

alezz:

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

КОД?

the_fly
alezz:

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

мы сперва тогда сразу и не поняли чего его постоянно несло в одну сторону. при том, что откалиброван он был давно на ровном месте

SergDoc
alezz:

а ты попробуй поставить коптер криво, например две ноги выше а две ниже

Нет я каждый раз когда взлетать собираюсь выношу уровень строительный лазерный проверяю всю местность в радиусе 1.5км на предмет отклонений от горизонта - выбираю площадку, ставлю коптер, ещё раз проверяю не криво ли он стоит и тогда подключаю батарейку…
ладно это лирическое…
по поводу старта под большим углом: то что коптер сваливается это не заслуга датчиков, а заслуга воздушной подушки образующейся под коптером, т.е. реально ставя коптер криво вы делаете ему “горку” из воздуха - вот по ней он и “скатывается” но взлетев на 0.5-0.8 метра выравняется…

the_fly:

при том, что откалиброван он был давно на ровном месте

не факт…
тут и неравномерная развесовка и моторы не по одной оси (ну в смысле не параллельно друг другу) и куча всяких разных причин… от температуры внешней и датчиков и т.д…
к слову у меня участок с уклоном весь градусов 8-10 и что мне по вашему под ноги коптера подкладывать что-то чтобы взлететь? поставил батарейку подключил дождался спутников - взлетел тестить gps-режимы, не дождался - погода не лётная, просто для души полетал…