Проект Мегапират на самик!

Syberian
alex-ber:

можно было скомпенсировать в настройках, теперь нет.

В Б1 было то же самое.
А где видео-то?

alex-ber
alex-ber:

Вечером приду домой - закачаю…

Вобщем вот видео посадки и проверки после первого полета - качество сильно пострадало от сжатия (двойного - мной и Ютубом…) но надеюсь видно как горизонт поплыл…

:blink:

ПС вторую посадку выкладывать нет смысла - там уже все в порядке: и горизонт на месте и при вращении не плывет… впринципе видно (хоть и плохо-пожалось засильно) что уплыв горизонта начался не в полете а после приземления (примерно через 2 сек) и зависел от положения самика относительно сторон света - когда я крутился вместе с самиком…😮
Причем потом самик просто полежал (я отключал компас - как окозалось зря - на управление не влияет…), я даже питание не передергивал…

LeonVS

Ндя косяк… крен то еще туда сюда, а вот тангаж плавает очень сильно…

Алекс, может у тебя до сих пор МАРГ залит 😉))?

alex-ber
LeonVS:

Алекс, может у тебя до сих пор МАРГ залит ))?

Да не… Перепрошивался на новую прошивку… да и старая вообще горизонт не держала (2.24) а 2.26 перезагружала плату.
Так самое интересное то, что во втором полете это не вылазило!
У меня теперь шальная мысля проскачила - может в вортексе что-то там оставалось, а потом стерлось… надо еще раз проверить - спецом больше ничего менять не буду… Как есть так и полечу…
типо - для подтверждения или опровержения…

Syberian
ViktorDoma:

про миксы прокомментируй плиз.

Как проверю - прокомментирую

alex-ber:

потом самик просто полежал

Ни фига. Я, конечно, весь глаз сломал, но видел, что садился ты с сильно заниженным питчем. Сижу вот, голову ломаю.

А с В1, говоришь, все было отлично?
Может, ее DCM попробовать…

ViktorDoma

Я уже шальным делом попробовал процедуру переделаить - вообще не работает 😦

void flight_mixer(void)
{ // debias the channels
static long chm_in[6];
byte i,j;
long chm_out[6];

chm_in[0]= g.channel_roll.radio_out-1500;
chm_in[1]= g.channel_pitch.radio_out-1500;
chm_in[2]= g.channel_throttle.radio_out-g.channel_throttle.radio_min;
chm_in[3]= g.channel_rudder.radio_out-1500;
chm_in[4]= g.rc_7.radio_out-1500;
chm_in[5]= g.rc_8.radio_out-1500;

for(i=0;i<6;i++)
{chm_out[i]=0;
for(j=0;j<6;j++)
chm_out[i]+=mxt[6*i+j]*chm_in[j];
chm_out[i]/=100;
}
g.channel_roll.radio_out=chm_in[0]+1500;
g.channel_pitch.radio_out=chm_in[1]+1500;
g.channel_throttle.radio_out=chm_in[2]+g.channel_throttle.radio_min;
g.channel_rudder.radio_out=chm_in[3]+1500;
g.rc_7.radio_out=chm_in[4]+1500;
g.rc_8.radio_out=chm_in[5]+1500;

APM_RC.OutputCh(CH_1, g.channel_roll.radio_out); // send to Servos
APM_RC.OutputCh(CH_2, g.channel_pitch.radio_out); // send to Servos
APM_RC.OutputCh(CH_3, g.channel_throttle.radio_out); // send to Servos
APM_RC.OutputCh(CH_4, g.channel_rudder.radio_out); // send to Servos
APM_RC.OutputCh(CH_7, g.rc_7.radio_out); // send to Servos
APM_RC.OutputCh(CH_8, g.rc_8.radio_out); // send to Servos
}

Дабы посмотреть чЁ в Ардуплан по каналам серв летит.

после переделки кода - микс вообще перестал работать, как после калибровки.

Такое ощущение, что после вызова flight_mixer() есть еще какая то обработка сигналов.

Ща буду копатЦо в APM_RC.OutputCh, не факт что вкурю, но попытаюсь.

Жаль что нет отладчика 😦

alex-ber
Syberian:

А с В1, говоришь, все было отлично? Может, ее DCM попробовать…

Да - с В1 все пучком! Если небыло сильных порывов ветра передатчик можно было просто положить на землю и стоять и смотреть как самик сам летает (проделывал такой фокус пару раз - выпендривался перед зрителями…). При порывах ветра (особенно боковых) подруливал только РН - для коррекции курса… Крен и тангаж - идеально держал АП (впрочем я уже раньше писал, что на В1 достаточно выключить двигло и самик сам садился…). В В1 все было хорошо, кроме авторежимов - что-то у меня с ними не сраслось сразу, а потом уже и не проверил - новые прошивки пошли…
Грубо говоря - если не получится с этими - вернусь на В1 (авторежимы тестировать…).

LeonVS
Syberian:

Может, ее DCM попробовать…

Идея не плохая! ДЦМ в Б1 работал вполне не плохо 😃

А это так просто? переменные все те же остались?

Syberian

Там DCM сильно переколбасили, но зависимости остались те же.
У В1 растут ноги от ардупилота 2.12, а 2.24 - ясно откуда, и разрыв между ними - полгода.

ViktorDoma:

попробовал процедуру переделаить

отсыл обратно в radio_out - это погоня за собственным хвостом. В APM_RC тоже ковырять нечего - это конечная точка, где уже на сервы передается.

===
Вот, скопируйте в библиотеки AP_DCM из этого архива В1 …googlecode.com/…/MegaPiratePlaneB1.zip
Работает сразу, ничего перестраивать не нужно.

Алекс, а у тебя GPS вообще работал? почему-то на осд не видно было стрелки домой.
++Ага, нашел косяк.
В _EOSD.pde надо заменить
hom=get_bearing(&current_loc,&home);
на
hom=get_bearing(&current_loc,&home)-dcm.yaw_sensor;

ViktorDoma
Syberian:

отсыл обратно в radio_out - это погоня за собственным хвостом

Была надежда, что протокол обмена по ЮЭСБИ подхватит обновленные величины и пульнет их в комп.

Не найду никак вызов set_servos(), и flight_mixer() походу только из нее запускается ?

Syberian
ViktorDoma:

Не найду никак вызов set_servos()

вызывается из megapirateplane.pde, строка 520

Серво пуляются в комп из mavlink_common.h, строка 202 и далее, каналы с 5 по 8 вообще забиты нулями

Поставь себе что-то типа FAR manager, там есть полнотекстовый поиск по файлам.

ViktorDoma

Я разобрался в проблеме

Миксер работает, но есть НО
Ща пообмозгую и изложу СУТЬ

LeonVS

Похоже НО обмозговыванию не поддалось 😃

alex-ber
LeonVS:

Похоже НО обмозговыванию не поддалось 😃

Поделись с народом - может мозговой штурм поможет…
Я сейчас сидел с самиком разбирался (хочу завтра с работы смотаться на поле…) - целый час гонял его на всех режимах - глюк не вылазит. В самике ничего не менял (в смысле прошивку и т.д.).
Всетаки хочу попробовать так как есть - для того чтоб или подтвердить или опровергнуть наличие косяков в данной прошивке.
Надеюсь завтра получится…
Леонид как разберешься с миксами - отпишись. Очень интересно так как собираюсь Вортекс на другой носитель переставить, а там миксы будут нужны…
Спасибо.

ViktorDoma

Подмозговыванию поддаётся, только если б еще и работать было не надо - процесс был бы побыстрее.

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

ViktorDoma

Олег, подскажите как включить режим CLI , хочу в терминал отправлять значения переменных для посмотреть и отладки.

alex-ber

ну что - вырвался я в поле (начальство было в отъезеде а на улите почти штиль…).
правда не на долго - полчаса…
Один полет:
стабилизация держит отлично!
Глюк не проявлялся (компас я включил обратно)!
Проверил (чуток) режим РТЛ - при включении на высоте 70 метров (показания ОСД) самик врубил двигло на полную и начал кругами набирать высоту! Самое главное что он уже не хочет к шахтерам!!!
При наборе высоты (до 98 метров я выдержал и отключил режим - стало сцыкотно - туман и самика почти не видно а я летал визуально…) около заданной самик снизил обороты!
Так как самик я от базы далеко не отводил то и возврата как такового почти небыло - самик просто летал кругами…
Далеко отводить не стал по двум причинам - туман на поле и то, что ждал звонка (могли бы вызвать на работу и надо было бы быстро свернуться…).
Так же проверил работу режима Лойтер (только в ОСД оно почемуто пишется Холд).
вобщем самик летит сам и пытается держать заданную высоту - слышно как движком отрабатывает.
ВЫВОД:
Для второго полета - очень даже неплохо! (надо побольше потестить…).
Стабилизация работает отлично (а если еще и ПИДами поиграть…) - садил самик только РН (менял курс) элероны и РВ вообще не трогал!
ПС почемуто у меня стали спутники в полете пропадать… старт - 9, в полете 4… Странно - раньше наоборот было. Конфигурацию видео не менял, может изза тумана…
ну пока вот так… Кто еще отлетается - напишите как у вас.

Syberian

т.е. от В1 функцию DCM ты не втыкал?

Там еще прикол есть, в акселе стоит диапазон 3G. По идее, для такой злой штуки как глайдер надо ставить все 8, а то и 16. Тогда оно просто не сможет выбить алгоритм и повредить горизонт.