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

LeonVS
ukkr:

если не против я на “ты” перейду

Буду только рад 😃

ukkr:

Смотри, вот вся функция этого лупа

Теперь все ясно 😃

LeonVS

Кость, а где ты видел код из арду авто-поиска термиков? Кидани посмотреть? Полагаю его можно легко и в 46 прошивку вклячить 😃

ukkr

Ха, так а кода то и не видно. Закрытый какой-то это форк.
А про фичу поиска термика я в описалове нашёл:

" The ThermoPilot is a full enhancement of the ArduPlane v2.28 which adds the Thermal Hunting capabilitie and some others features for the gliders pilots. "

отсюда diydrones.com/…/full-autonomous-slope-soaring-with…

Есть сырцы этого самого Термопилота, но по дате уж больно старые: code.google.com/p/ardupilotdev/…/Thermopilot

LeonVS

Код к стати запустил, усе пашет как полагается, СПАСИБ за ликбез 😃 Правда исполняемую команду пришлось подшаманить, твоя не заработала, ну и еще добавил чтоб эта фишка включалась только в режиме авто 😃 Дрыгает выходом М7, М8 у меня отдан на закрылки 😃

if(control_mode == AUTO){
if(xxx_wait>2){
xxx_pos=xxx_pos*sign; //change servo direction
xxx_wait=0;
}else{
xxx_wait++;
}
//g.rc_7.closest_limit(xxx_pos);
APM_RC.OutputCh(9, xxx_pos);
}

К стати есть мысли как ему принудительно в любое время врубить режим CIRCLE, тобишь аварийный режим посадки с кружением и выключением двигла?
Суть сие действа в следующем, летит самуль по маршруту, тут по какой то причине захотелось чтоб оно летело на базу в срочном порядке, врубаем РТЛ оно летит, но по прилету АП будет тупо кружить пока не сдохнет батарейко, а хотелось бы его заставить сесть, но не в ручном режиме, а все же на автомате 😃 В общем надо или вызвать LAND, с координатами что прописаны в конце миссии, или чего вполне было бы достаточно режим CIRCLE.

К стати походу где то еще надо крутнуть для безглючности прошивки… из доп выходов адекватными являются только 7 и 8, на 5 и 6 хаотичное дикое дерганье сервы… Команду видит, но дико дергается в районе заданного положения…

И еще обнаружил косяк… думал прицепить бароскорость, но не на одном аналоговом входе данные не идут… Походу в ардупилоте с пиратом в аналоге совпадает только 1 порт с которого берется вольтаж АКБ…

ukkr

Леонид,

Смотреть в полноэкранном режиме надо, канал 6
Код – тот же, что я копировал, только чуть лучше, убрано умножение на sign. Вы у себя можете точно также соптимизировать.

 if(xxx_wait>2){
          xxx_pos=-xxx_pos;//change servo direction
          xxx_wait=0;
  }else{
          xxx_wait++;
  }
  g.rc_6.closest_limit(xxx_pos);

Леонид, сорри за нубский вопрос, а как заставить эту Чёрного Пирата подёргать сервами? Я в какой “М” серву не втыкал, но Пират даже не думает начинать дёргать сервами. При том, что подключен на вход ему и приёмник и на АРМ Планёре смотрю, на каналах в channel_XX_in циферя от моего радио бегут. А вот на Мки оно нифига не шлёт. Должен же он рулить yaw,pitch и т.д. просто после включения? Или ему надо скормить миссию какую-то или в режим какой перевести? А то хотел проверить, чего

исполняемую команду пришлось подшаманить, твоя не заработала

, ведь в показометре у меня на 6м канале всё чётко в АРМ Планёре, а в реальности ты говоришь дохлый номер.

LeonVS
ukkr:

а в реальности ты говоришь дохлый номер.

Тут думаю “хвосты” портирования дают о себе знать 😃
g.rc_6.closest_limit(xxx_pos); - показывает на практике в планере и думаю что будет работать в ардупилоте, но в вортексе сие не пашет…
APM_RC.OutputCh(9, xxx_pos); - сие хрень не где не чего не кажет, но сервой дрыгает 😃
Эт из серии “вам шашечки или ехать” 😃)))
Это все касается только доп каналов, 4 основных канала и отображают нормально и дрыгают 😃 Смотрю у вас приемышь вообще не подключен?

ukkr
LeonVS:

у вас приемышь

Лёнь, мы ж на ты?
У меня на тот момент был не подключён. Я полез проверять после твоего сообщения напрямую, без приёмыша и серв. Когда увидел в показометре, что мой ch6_out дрыгается так, как я и задумал – решил подрубить сервы с приёмышем. Вот тут и писец – никак оно не пыталось дрыгать ни одним из “Motor”. Ни Yaw ни Pitch и т.д не реагировали.

LeonVS
ukkr:

Лёнь, мы ж на ты?

Сорри, привычка 😃
А есть мысли что может вызвать дрожание М5 и М6?

А то кроме их свободных не осталось… Мало ли еще придет в голову бомболюк замутить 😃))

ukkr

Фиг его знает. Пока не смотрел.
Лёнь, а что по поводу этого

Леонид, сорри за нубский вопрос, а как заставить эту Чёрного Пирата подёргать сервами? Я в какой “М” серву не втыкал, но Пират даже не думает начинать дёргать сервами. При том, что подключен на вход ему и приёмник и на АРМ Планёре смотрю, на каналах в channel_XX_in циферя от моего радио бегут. А вот на Мки оно нифига не шлёт. Должен же он рулить yaw,pitch и т.д. просто после включения?

LeonVS

В мануал режиме должно быть IN = OUT без всяких извращений, у тебя стоит RTL, вруби режим CLI и в терминале запрограмь выбор режимов на 5 канале.

alex-ber
ukkr:

Лёнь, мы ж на ты?
У меня на тот момент был не подключён. Я полез проверять после твоего сообщения напрямую, без приёмыша и серв. Когда увидел в показометре, что мой ch6_out дрыгается так, как я и задумал – решил подрубить сервы с приёмышем. Вот тут и писец – никак оно не пыталось дрыгать ни одним из “Motor”. Ни Yaw ни Pitch и т.д не реагировали.

Константин.
Если у тебя Вортекс - не забудь посмотреть на выходах М2-М6 нет питающей шины(!) - я добавлял проводник (в начале ветки есть сообщение…)…
Может и у тебя тупо питалово на сервы не идет? Проверь!
ПС Я уже почти вернулся!!!

LeonVS
alex-ber:

Я уже почти вернулся!!!

Молодца! А то я тут в жало сам с собой общался, сейчас хоть Костя подключился, что радует 😃

alex-ber:

Может и у тебя тупо питалово на сервы не идет?

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

g.rc_7.closest_limit(xxx_pos);
APM_RC.OutputCh(9, xxx_pos);
Поставил в цикл обе строчки, теперь и показывает и дрыгает 😃

alex-ber

Леонид.
Пока я боролся с бюрократами и т.д., вы (вместе с Колей) шагнули далеко вперед!
Ты так вообще (судя по роликам) по полной Вортекс пользуешь, и авторежим уже освоен (кстати - включение флапов в авторежиме впечатлило!!!) и примочки в код добавляешь… Молодец!
Теперь просьба (чтоб быстрее нагнать…) - так как я совсем не програмист, то мог бы ты коментировать свои изыскания по типу - вот это сюда добавим= получим тото и тото…
И еще - ты с настройками ПИДов игрался или на дефолтных летаешь? если менял, то какие и как?
Спасибо!!!

ukkr

Так-с, аксакалы. По порядку. Спасибо, что вы вспомнили, что на M-ках + питалова не подаётся в Вортексах. Именно из-за этого все сервы стояли как вкопанные. Начал прозванивать – “-” у всех М-ок общий, соединён со всеми минусами на плате. А вот “+” – нет. Самое интересное, у М1 и М2 “+” запараллелен. Но к даже там оно не подключено к общим +5В. Короче, я просто прифигел с этого. Если бы вы не вспомнили – чёрта с 2 так быстро разобрался б. Пришлось с обратной стороны платы припоем “ссопливить” все “+” М-ок. Ну и свободной М-ки канал “+” бросить на +5В выход справа. И всё стало шоколадно. Вот бы где фак такой замутить, чтоб такие “ньюансы” складировать.
Второй ньюанс, из-за которого я чуть не растоптал ногой Вортекс – несоответствие номера канала номеру “М-ки”. Т.е., я думал, что g.rc_6 будет выводиться на М6. Не тут-то было. Пришлось взять 9й канал по твоей наводке, Леонид. Бо там ты чётко написал какой оно М-ке соответствует:

Дрыгает выходом М7

. Сразу обрадовало:

Слушайте, а есть где-то линка на документ или текст, чтоб не путаться какому номеру канала какая М-ка соответствует? Ну не писать же 8 прошивок с перетыками сервы для поиска где-чего?

LeonVS
ukkr:

несоответствие номера канала номеру “М-ки”

Не забываем что сие дело портировано с ардупилота, а у них распиновка “слегка” другая 😃
По каналам отнимаем 2 и получаем номер канала, тобишь OutputCh(9, xxx_pos); 9 - 2 = М7 😃

Разобрался как подключить датчик скорости 😃
store.diydrones.com/ProductDetails.asp?ProductCode…
В закладке “sensors” требуется заменить:
(float)adc.Ch(AIRSPEED_CH) - (у вортекса данный вход походу отсутствует как таковой…)
на
analogRead(BATTERY_PIN2)
Датчик при этом цепляем на 2 аналоговый вход вортекса, проверить в полете пока увы не могу, датчик ко мне только еще едет… Но в теории все должно работать, на стенде меняя напругу на аналоговом входе воздушная скорость меняется 😃

LeonVS:

отнимаем 2 и получаем номер канала

Правда на данный момент устойчиво работают только М7 и М8.
С М5 и М6 надо искать в коде глюк, серва дергается как угорелая…

alex-ber:

игрался или на дефолтных летаешь?

Конечно игрался как без этого, и еще чую надо играться, по высоте есть нарекания… слишком он шустро ныряет, надо угол пикирования уменьшать…
Завтра могу скинуть скин с моими пидами 😃 Только вот у тебя вроде Алекс 24 прошивка, пиды отличаются…
К стати Кость, у тебя 26 виснет??? чтот все жалуются на нее, хотя у меня она гораздо стабильней и уверенней летает нежели 24…

alex-ber:

Теперь просьба (чтоб быстрее нагнать…) - так как я совсем не програмист,

Да я в общем то то же кроме бейсика не чего и не крутил 😃 Так по наитию, ну и с подсказками Кости 😃 поэтому с объяснениями туго… но попробовать можно, так что если что спрашивай 😃

ukkr
LeonVS:

В закладке “sensors” требуется заменить:
(float)adc.Ch(AIRSPEED_CH) - (у вортекса данный вход походу отсутствует как таковой…)
на
analogRead(BATTERY_PIN2)

Дело в том, что AP_ADC_ADS7844 (а это и есть adc) у нас на Вортексе вообще нету. Соответственно код, который его юзает – ничего хорошего от него не получит. У нас есть стандартные 5 пинов, которые идут прямо на вход ADC нашего центрального проца Mega2560. С помощью функции analogRead() вы можете читать значения с любого из этих входов в любом месте. На самом деле – Mega2560 пофигу, что подключено на эти пины, оно просто оцифровывает тот сигнал, что вы подаёте на пин. Это может быть как термометр, так и барометр, который выдаёт аналоговый сигнал и т.д.
К стати, по поводу вашего датчика store.diydrones.com/ProductDetails.asp?ProductCode… – готовьтесь, вам надо будет распотрошить его серво-кабель – провод сигнала бросить на любой из аналоговых входов, хоть на тот же BATTERY_PIN2, а вот + и - бросить на +5В и - соответственно.

К стати Кость, у тебя 26 виснет???

– в принципе, я с ней не летал, только застольные испытания. Работает стабильно. По крайней мере 10 минут пока я не шью новую прошивку 😃. Обнаружил интересный глюк – если у меня подключен к компу Вортекс, и в это время в другой ЮСБи порт я вставляю флешку, то Вортекс перезагружается. С чем этот полтергейст связан – ума не приложу.

LeonVS
ukkr:

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

Ну в общем то это я и предлагаю, подсунув значение с 2 входа вместо AP_ADC_ADS7844 😃

ukkr:

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

Ну это само собой 😃

ukkr:

– в принципе, я с ней не летал, только застольные испытания.

У всех кроме меня оно и на столе висло… Полагаю зависон вызывался не закоментированными строчками считывающими в ардупилоте микрики… Что вызвало у меня реверсы каналов…
Алекс, ты эти строчки закоментил?

Syberian
LeonVS:

По каналам отнимаем 2 и получаем номер канала, тобишь OutputCh(9, xxx_pos); 9 - 2 = М7

Совсем не так.
Номер канала (число, а не СН_х) - Мх
0 - М3
1 - М4
2 - М1
3 - М2
4 - PAN
5 - TILT
6 - M5
7 - M6

9 - M7
10- M8

alex-ber

Леонид.
Спасибо за согласие помочь с настройками.
вообще у меня 26 проша глючила, поэтому откатился (особо не разбираясь) на 24-ю…
впрочем сейчас нелетная погода у нас да и времени на полеты пока нет - поэтому завтра постараюсь прошиться вновь на 26-ю и еще раз попробовать с ней поработать (кстати может ты мне кинешь ссылку на 26, которая у тебя залита - может у меня при скачке-заливке что-то не так пошло? просто с СС такая шняга была - скачал прошивку на бук, прошился - не работает… по-новой скачал - прошил - все работает… даже не знаю - система дурит или прошивка…).
Костя.
Класс! сразу вопрос ребром - а можно отправить эти команды на выходы управления камерой (точно не помню - плата в самике а искать фотку долго… Но вроде пан и титл называются (между входами и М-ками расположены…) ) и интервал в крайних положениях задать функцией (вроде так у програмеров обзывается…).
Поясню - камера при переключении тумблера начинает сканирование = поворот вправо до упора, задержка (было бы очень класно, чтоб задержку можно было выставить или в Планере или (что еще круче !) доп каналом с крутелкой…), поворот в центр, поворот влево и т.д.?
у тебя на видео впринципе так и есть - поворот -пауза-поворот… но на другом канале хотелось бы и с паузой в крайних точках…

ukkr

Олег, с возвращением. Позволю себе повторить вопрос

radio.pde
процедура init_rc_out():
Код:
static void init_rc_out()
{
APM_RC.OutputCh(CH_1, g.channel_roll.radio_trim); // Initialization of servo outputs
APM_RC.OutputCh(CH_2, g.channel_pitch.radio_trim);
APM_RC.OutputCh(CH_3, g.channel_throttle.radio_min);
APM_RC.OutputCh(CH_4, g.channel_rudder.radio_trim);

APM_RC.OutputCh(CH_5, g.rc_5.radio_trim);
APM_RC.OutputCh(CH_6, g.rc_6.radio_trim);
APM_RC.OutputCh(CH_7, g.rc_7.radio_trim);
APM_RC.OutputCh(CH_8, g.rc_8.radio_trim);

APM_RC.Init(); // APM Radio initialization

APM_RC.OutputCh(CH_1, g.channel_roll.radio_trim); // Initialization of servo outputs
APM_RC.OutputCh(CH_2, g.channel_pitch.radio_trim);
APM_RC.OutputCh(CH_3, g.channel_throttle.radio_min);
APM_RC.OutputCh(CH_4, g.channel_rudder.radio_trim);

APM_RC.OutputCh(CH_5, g.rc_5.radio_trim);
APM_RC.OutputCh(CH_6, g.rc_6.radio_trim);
APM_RC.OutputCh(CH_7, g.rc_7.radio_trim);
APM_RC.OutputCh(CH_8, g.rc_8.radio_trim);
}
На кой они тут один и тот же код дважды повторяют? Чё-то я глубинный смысл этого не понимаю.

alex-ber
LeonVS:

Алекс, ты эти строчки закоментил?

Ух… Ну вы все и строчить стали - прямо Чат!!!
Не успел написать а тут уже все обсудили…
Леонид - естественно : НЕТ! Я тогда про эти траблы с микриками даже не догадывался! Спасибо - завтра попробую закоментить и залить 26-ю…