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

ViktorDoma

Сначала о грустном, полеты не случились.
Во первых, налетели “белые мухи”, при этом на улице 0 +1 по цЭльсию. Это усё течёт и в поле хрен выберешься.
Во вторых дернули на арбайтЭн и если быб не “мухи”, мож но б на работу было и подзабить.

Но есть и положительные моменты - пока сервак на работе кряхтит над базами, можно посидеть и покодить над “ПИРАТОМ”.

На текущий момент Миксер ВЫХОДных каналов доработан до 8 каналов. То есть можно заюзать ВСЕ ноги М1-М8 по своему усмотрению.
Ща бьюсь над ногами ПАН и Тильт, дабы их тоже заюзать в миксер. Пока не получаиЦО 😦

Пока что таблица миксоФ ОДНА на все полетные режимы, но уже придумал как сделать разные мискы для полетных режимов автопилота.

Теперь вопрос к тем кто планирует юзать МИКСЫ.

Как лучше или правильнее сделать:
Вариант 1 - Транслировать диапазон входных каналов в выходные как есть (Тоесть то что получает радио).
(напимер ВХОД от 954 до 1875 и середина 1543, на выход подавать тот же диапазон и та же середина (или правильнее ТРИМ));

Вариант 2 - Устанавливать ДИАПАЗОН Выходных каналов в таблице, а входные каналы использовать как основу для пересчета в правильный диапазон
(напимер ВХОД от 954 до 1875 и середина 1543, на выход подавать диапазон от 1000 до 2000 и середина 1500 (ТРИМ) - сответственно сделаю таблицу диапазонов и середины для всех Выходных каналов);

Поскольку программированием на Сях я занимался ище при советской власти - процесс идет трудно, но “мы не привыкли отступать” (с) как гриЦо.

Еще момент - оказывается есть режим АВТО ТРИМ, как он работает, я пока не разобрался, но он есть - может кто пользовал - просветите пожалуйста.

Может стоит сделать режим ручной фиксации виртуальных тримеров по команде оператора (пилота), то есть летим в мануале - решили что борт идет как надо, нажимаем кнопку, и АП запоминает положения каналов.
После чего можно бросить стики. Эдакое полуавтоматическое тримирование. Соответственно миксы будуть потом считаться от ТРИМЕРОВ или начальных или установленных по команде.

А возможно я туплю и это уже есть.

Syberian
ViktorDoma:

Ща бьюсь над ногами ПАН и Тильт, дабы их тоже заюзать в миксер. Пока не получаиЦО

APM_RC.outputch(ch_5,xx);
APM_RC.outputch(ch_6,xx);

  • это на пантилт камеры. В вортексе они выходят прямо на одноименные разъемы.

Автотриммирование где-то закопано в коде.
И прошу, не спрашивай меня “как будет вести себя самоль, если…” 😃 Я сам дальше одной проверки RTH и полетов в стабилизе не уехал.

Как будет готов миксер, сбрось, включу в сборку. И вообще, спасибо за участие в проекте 😃

ViktorDoma

Олег, спасибо за ответ.
Я в тоже библиотеке раскопал, что этоch_5 и ch_6 - вот только я походу черти чё намутил в миксере, ща разбираюсь.

Олег, хотелось бы почитать Ваше мнение о вариантах пересчетов МИКСОВ. Прокоментируйте пожалуйста.

Как лучше или правильнее сделать:

ViktorDoma:

Как лучше или правильнее сделать:
Вариант 1 - Транслировать диапазон входных каналов в выходные как есть (Тоесть то что получает радио).
(напимер ВХОД от 954 до 1875 и середина 1543, на выход подавать тот же диапазон и та же середина (или правильнее ТРИМ));

Вариант 2 - Устанавливать ДИАПАЗОН Выходных каналов в таблице, а входные каналы использовать как основу для пересчета в правильный диапазон
(напимер ВХОД от 954 до 1875 и середина 1543, на выход подавать диапазон от 1000 до 2000 и середина 1500 (ТРИМ) - сответственно сделаю таблицу диапазонов и середины для всех Выходных каналов);

Олег, к Вам еще один вопрос. Только теперь по прерываниям.

Подскажите какая функция запускается после подсчета длины импульса по входным радио каналам ?
Как часто она вызывается ? (меня интересует отслеживание каждого импульса в отдельном канале)

Для чего нужна:
У меня аппа турнига, перешита прошивкой от ВитГо rcopen.com/blogs/50021/9239.
В прошивке есть Фича - УПЛОТНЕНИЕ КАНАЛОВ 4 в 1.
Как это происходит:
Отправляем маркер начала уплотненной посылки и кладем в первую пачку на отправку на борт.
Затем берем 4-ре управляющих сигнала из аппы и отправляем каждый управляющий сигнал в новой пачке по очереди.
По идее на борту получаем все четыре канал, Каждые 5 пачек сериал ППМ.
Из минусов - каналы на борту обновляются с частотой не 50Гц а 10Гц, но для “медленных” каналов (моды, закрылки, камера, свет и прочее) это не критично.
За то позволяет из 8-ми канальной аппы сделать 11-ти канальную и более.

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

Syberian
ViktorDoma:

Как лучше или правильнее сделать:

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

ViktorDoma:

какая функция запускается после подсчета длины импульса

В APM_RC есть прерывание ISR(PCINT2_vect) на изменение порта, там все 8 каналов, обсчитывается каждый импульс и кладется в свой буфер.

ViktorDoma

Олег, спасибо за подсказку. Еще раз внимательно покурил код обработчика. В принципе, дешифратор уплотнённых каналов можно попытаться наколдовать.

Я тут выяснил почему у меня ПАН И ТИЛТ не работали. Оказалось все просто - на плате я сразу пропаял перемычку (+)сов, а перемычку (-) почему то решил не паять, вот и вылезла 😦 трабла.

Оказывается минусы тоже нужно пропаивать с ножками ® или подавать на сервы внешнее питание.

Кароче вынул плату из “платформы” - сидю паяю, примус починяю.

LeonVS

А присутствует ли переменная отношения расходов управляющих поверхностей к скорости? Допустим на минимальной скорости пиды при одинаковых расходах будут одни, при увеличении же скорости раза в два-три, на этих же самых пидах планер будет ходить волнами… Правда для сие дела уже без датчика воздушной скорости будет уже тяжко 😃
К стати Олег, как там дела обстоят с датчиком тока и ОСД для вортекса?
Облетали в общем с коллегой полный цикл не трогая кроме включения АВТО режима пульта вообще, что сказать, все тип топ, взлетел пролетел сел 😃 Единственное что автопосадка уфигачить может метров на 100 от предполагаемого места приземления легко 😃 К нулю по высоте он как то особо не стремится, предпоследняя точка была 10 метров, подошел он к ней где то на метрах 15-20, и пошел к точке посадки уже особо не снижаясь, при пролете точки посадки оно просто вырубило двиг и пофигачило в поле по прямой 😃 Садиться плавненько и аккуратно, но крайне не там где бы хотелось 😃
Вот думаю может закрылки замутить? Как только программа доходит до команды автопосадки, с выключением двигла самуль выпускает закрылки, при этом растояние которое придется профигачить по полю пешем, можно сильно сократить 😃

alex-ber

Леонид!
Молодцы! У меня в эти выхи не срослось на поле выехать …
За то закончил наземку!
Вы лог полета писали? Скинь посмотреть…
Какая прошивка?
Спасибо.

LeonVS

Прошивку не менял, как залит тогда 26 так она и крутится 😃
Не залить… файл весит 1.9мб, форум позволяет только 972кб…

dpiter.info/35.rar

Там несколько полетов, в середине автопосадка улетела в кусты 😃)) Тот что вконце, полная автономка, сел на поле, но все равно крайне не близко 😃

Еще заметил что в полете глючил передатчик, врубался РТЛ… видимо из багажника авто дальность крайне сокращается 😃

Syberian
LeonVS:

при пролете точки посадки

Маленкое уточнение 😃 воспринимай точки в мисси как команды. Т.е. LAND это не точка посадки, а команда выключить движок и поддерживать нулевой тангаж и сохранять курс. Предполагается, что самоль сам сядет. Однако, в прошиве есть режим авто-флаперонов при посадке. Надеюсь, Виктор нас чем-нибудь порадует в плане миксера 😉

LeonVS
Syberian:

Маленкое уточнение воспринимай точки в мисси как команды.

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

Syberian:

Однако, в прошиве есть режим авто-флаперонов при посадке.

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

dundel1
LeonVS:

просто вырубило двиг и пофигачило

Из мануала

Auto landing instructions

To land the plane, simply add a NAV_LAND command to the end of your mission indicating the latitude, longitude and altitude of your desired touchdown point. In most cases, the altitude should be set to 0. During landing, the APM will shut down the throttle and hold the current heading as soon as the plane is within 2 seconds of the touchdown point horizontally, or as soon as the plane is lower than 3 meters above the touchdown point, whichever occurs first.

On approach, the APM will fly normally if you have an airspeed sensor. If you do not have an airspeed sensor, the APM will hold 0 pitch.

Мой вольный перевод:), как я это понял
"Инструкции автоприземления

Чтобы посадить самолёт. добавьте в конце миссии команду NAV_LAND, укажите широту, долготу и высоту желаемой точки приземления. В большинстве случаев высота устанавливается в 0. Во время приземления APM убирает обороты и и удерживает текущее положение, как только самолёт находится “в горизонте” в течение 2 секунд после точки приземления , или как только самолёт ниже чем на 3 метра высоты точки приземления, (что произойдёт раньше).

На подходе, APM будет лететь нормально, если есть датчик воздушной скорости. Если у вас нет датчика воздушной скорости, APM удерживает тангаж 0."

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

LeonVS

Олег, есть новости по обвесам для вортекса? Датчик тока, бароскорость, ОСД?

ViktorDoma

Господа, временно (дня 2-3) я не смогу заняться проектом и миксами, так как работаю в конторе торгующей в том числе и конфетами. У нас щас ДУРДОМ круглосуточный.
И эта хрень прекратится только 30-го ночером.

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

Чё успел. У меня заработали ВСЕ каналы на выход (можно миксовать любые каналы по желанию).

Возникла трабл - почему то при калибровке радио каналов (Вход из приемника), не эрегирует на 6-й канал (R6) соответственно. Проверил выход из приемника осцилом - журчит, но Вортекс его не видит упорно.

Разбираться почему - пока нет возможности 😦 по причинам изложенным выше.

Как тока цунами голодных прекратится - примусь за проект.

Жду прихода из буржуинства радио модемоФ. Присмотрел Авиа-Джой с 6-ю пропорциональными каналами и туевой хучи кнопок - эх, ещуб да магаза вырвацО.

alex-ber

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

LeonVS

Господа, а можно как то вызвать LAND режим, дабы протестировать кой чего?
Хочу выпустить закрылки при включении сие режима. У кого есть навыки кодинга в пирате, подскажите 😃?

case MAV_CMD_NAV_LAND:
calc_nav_roll();

if (g.airspeed_enabled == true){
calc_nav_pitch();
calc_throttle();
}else{
calc_nav_pitch(); // calculate nav_pitch just to use for calc_throttle
calc_throttle(); // throttle based on altitude error
nav_pitch = landing_pitch; // pitch held constant
}

if (land_complete){
g.channel_throttle.servo_out = 0;
Сюда вставляем допустим 8 канал отклонить на 50%
}
break;

Это нужный кусок кода???

ViktorDoma
LeonVS:

Господа, а можно как то вызвать LAND режим, дабы протестировать кой чего?
Хочу выпустить закрылки при включении сие режима. У кого есть навыки кодинга в пирате, подскажите 😃?

case MAV_CMD_NAV_LAND:
calc_nav_roll();

if (g.airspeed_enabled == true){
calc_nav_pitch();
calc_throttle();
}else{
calc_nav_pitch(); // calculate nav_pitch just to use for calc_throttle
calc_throttle(); // throttle based on altitude error
nav_pitch = landing_pitch; // pitch held constant
}

if (land_complete){
g.channel_throttle.servo_out = 0;
Сюда вставляем допустим 8 канал отклонить на 50%
}
break;

Это нужный кусок кода???

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

А заодно посмотрю как отрабатывается переключение режимов полета по миссии полета.

А то может Олег заглянет и подскажет ПРАВИЛЬНОЕ решение.

LeonVS

Было бы не плохо 😃 Искал как правильно обзываются доп каналы, чтот не понял толком… По основным все понятно
g.channel_throttle.servo_out
g.channel_roll.servo_out
g.channel_pitch.servo_out
g.channel_rudder.servo_out
А как обзываются допы??? Не зная имени послать туда что то проблематично 😃

ViktorDoma

Отправить конкретное значение для выходных Каналов (Значение от 1000 до 2000)

APM_RC.OutputCh(CH_3, Значение); // send to Servos // R1 Тротле
APM_RC.OutputCh(CH_4, Значение); // send to Servos // R2 Рудер
APM_RC.OutputCh(CH_1, Значение); // send to Servos // R3 РОЛЛ
APM_RC.OutputCh(CH_2, Значение); // send to Servos // R4 ПИТЧ
APM_RC.OutputCh(CH_7, Значение); // send to Servos // R5
APM_RC.OutputCh(CH_8, Значение); // send to Servos // R6
APM_RC.OutputCh(9, Значение); // send to Servos // R7
APM_RC.OutputCh(10, Значение); // send to Servos // R8
APM_RC.OutputCh(CH_5, Значение); // send to Servos // Pan
APM_RC.OutputCh(CH_6, Значение); // send to Servos // Tilt

Пользовать крайне осторожно , предварительно откатав на столе.
Лучше всего запихивать в _MIXER - в процедуру flight_mixer(void) - она вызывается после всех обработок автопилотом.

LeonVS:

servo_out

Это переменная используется в системе стабилизации и нафигации. Не стоит пользовать пока не разберетесь как она дрыгается.

LeonVS

Хм… просто выпуск закрылков надо встроить в процедуру отвечающую за режим посадки.
А servo_out как раз таки там и используется для выключения движки… Тобишь по логике туда бы надо вставить и команду выпуска закрылок…

case MAV_CMD_NAV_LAND:
calc_nav_roll();

if (g.airspeed_enabled == true){
calc_nav_pitch();
calc_throttle();
}else{
calc_nav_pitch(); // calculate nav_pitch just to use for calc_throttle
calc_throttle(); // throttle based on altitude error
nav_pitch = landing_pitch; // pitch held constant
}

if (land_complete){
g.channel_throttle.servo_out = 0;
APM_RC.OutputCh(CH_8, 1800);
}
break;

Но что то мне подсказывает, что так оно работать не будет 😃

ViktorDoma
LeonVS:

if (land_complete){
g.channel_throttle.servo_out = 0;
APM_RC.OutputCh(CH_8, 1800);
}

Раз движок вырубает, значит процедура посадки выполнена, тоесть борт уже у самой земли.
Моё ИМХО закрылки выпускать уже поздно, так как полет у заемли и так не стабилен, а закрылки могут внести дисбаланс.

Как вариант - нужно делать замедлитель канала, чтобы закрылки выходили постепенно, секунд за 5-6. Это даст время в случае не штатного поведения переключиться в мануал.

А в идеале, ЗАКРЫЛКИ выпускаютя на глисаде, до того как борт достигнет посадочной зоны (полосы).

К сожалению я так и не добрался до пирата. Завтра днюха у супруги и меня не поймут если я засяду за “самолетики”.

Так что теперь ТОЧНО только после НГ смогу занятся Пиратом вплотную.

ВСЕХ С НОВЫМ ГОДОМ !!!

LeonVS
ViktorDoma:

Раз движок вырубает, значит процедура посадки выполнена

Как показала практика это не совсем так, посмотрите мой лог полета… как только самуль заходит в точку координат автопосадки он выключает движок и следует куда летел поддерживая курс, нулевой крен и тангаж. А так как скай планирует очень не плохо, с метров 20-30 он крайне далеко умотает 😃
Поэтому и хочется сделать что при входе в точку автопосадки, он одновременно с выключением движка выпускал закрылки.

ViktorDoma:

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

Угол на который надо выпускать закрылки находится опытным путем, главное научиться их выпускать, остальное дело техники 😃

Всех с НАСТУПАЮЩИМ!!!