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

LeonVS
Syberian:

Нужно запускать установку от имени одмина

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

LeonVS

Да ладно, на шкафу сервачок еще валяется для домашнего кинотеатра на w2k3, на нем буду заливать, слегка не удобно, но что делать 😃

Syberian
LeonVS:

на нем буду заливать,

заливать можно, насколько я знаю, на любой машине. только кодевижон дурит под х64, до версии 2.04
Поставь себе последнюю версию, может, проканает?

LeonVS
Syberian:

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

Эм… не вылезет чудес?

Syberian

ты же не собрался автопилот с нуля писать? 😉
а лампочкой поморгать и так сойдет.
А я буду выкладывать сразу “православные” НЕХы.
Ну, и код по желанию.

LeonVS

Ну рано или поздно захочется и от себя что нить впендюрить 😉

Syberian

ха, вообще красота! codevision 2.05 вообще неправильно компилирует!
в проге при вызове ahrs происходит повреждение стека и ребут. на 1.25.3 все в норме.

Что и требовалось. Больше туда ни ногой.

ukkr
Syberian:

ха, вообще красота! codevision 2.05 вообще неправильно компилирует!
в проге при вызове ahrs происходит повреждение стека и ребут. на 1.25.3 все в норме.

Что и требовалось. Больше туда ни ногой.

Олег, а 1.25.3 знает про атМегу 2560?
П.С. Прикольно, если уже есть ahrs – значить ты достаточно давно начал тайный прожект ухода с Ардуино на КодеВижн? 😉

Syberian

знает.
В любом случае, 1280 и 2560 полностью совместимы до 128 кБ

Кстати, с AHRS весь проект занимает 16кБ. Самая крупная часть после всего будет базовый протокол. 128кБ хватит с верхом.

Что самое противное, в ардупелоте после AP_ADC опять же оси датчиков перехреначены. Приходится “на глаз” заново настраивать.

“тайный уход” я начал, когда запостил тут, так что это целых 2 дня 😃

=======================================

Ну, вот как бы первый промежуточный этап окончен.
Что это:

  • это “костяк” нашего автопилота в виде секвенсора процессов, обменник с КОМ-портом и инерциалка.
    Что умеет:
  • в окне терминала на 57600 выводит roll pitch yaw и тайминг основного цикла в микросекундах
    Как пользовать:
  • залить HEX, запустив avrdude.bat, поправив в файле номер ком-порта. можно колупнуть исходник на тему вывода чего-нибудь другого.
  • важно при запуске держать плату ровно, т.к. калибровка акселя проходит каждый запуск (за неимением базы на компе)
  • сконнектить терминал на 57600 (ардуинский, ардупланер, putty или из кодевижена) и смотреть.

dl.dropbox.com/u/63786348/mpx_preview.rar

Через пару дней ссылка будет недоступна.

LeonVS
Syberian:
  • в окне терминала на 57600 выводит roll pitch yaw и тайминг основного цикла в микросекундах

Костя, накрапаешь на яве оболочку аля авиагоризонт для визуализации 😃?

LeonVS
Syberian:

погоди, тут прОтокол нужен

Мавлинк 😄
Что думаешь по сие поводу? Что то стандартное, или самим просто договориться, что за чем передается?

Syberian

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

alex-ber

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

Syberian
alex-ber:

Вопросик - АРС2хх поддерживаться будет? И Е-осд

конечно

alex-ber:

Может кол-во исполняемых команд на канал уменьшить с возможностью быстрой смены команд? типо - на трехпозиционнике три команды : стабилизация, РТФ, мануал… (через наземку меняем на другие три…)

нифига не понял… впрочем, до команд еще далеко.

alex-ber
Syberian:

нифига не понял…

Не парься! Это я пытаюсь быть типо полезным…
Все кто с Вортексом на Мегапирате летал - проблему с переключением режимов АП уже решили (надеюсь…), поэтому эта идея не актуальна…
Тормознул…

LeonVS

Блокировку движка сразу в код заложи, а то запарился я контакты от движка каждый раз отстегивать…

LeonVS

Пока Олег строит АП с нуля, продолжаю мучать 26 прошивку 😃 Кто нибудь летал в режиме FBW-B??? У меня в этом режиме РВ работает в инверте 😃 Ручку на себя, самуль вниз движка в минимум, ручку от себя самуль вверх газ добавляет 😃 Пытаюсь понять где крутнуть, чтот мутно как то усе…

Причем в режиме FBW-А есть следующая строчка:
nav_pitch = g.channel_pitch.norm_input() * (-1) * g.pitch_limit_min;
В режиме FBW-B она вот такая:
altitude_error = g.channel_pitch.norm_input() * g.pitch_limit_min;

Полагаю в этом и есть проблема? Вставка (-1) = инверт которого почему то не хватает в FBW-B…

LeonVS

Кто подскажет где кусок кода отвечающий за выполнение условия прохождения точки? Хочу туда добавить обязательное условие “высоты полета”, сейчас АП пофиг, хоть там 500м стоит, нужные координаты пролетел, и считает что точка пройдена…

static bool verify_nav_wp()
{
hold_course = -1;
update_crosstrack();
if ((wp_distance > 0) && (wp_distance <= g.waypoint_radius)) {
gcs_send_text_fmt(PSTR(“Reached Waypoint #%i”),nav_command_index);
return true;
}
// add in a more complex case
// Doug to do
if(loiter_sum > 300){
gcs_send_text_P(SEVERITY_MEDIUM,PSTR(“Missed WP”));
return true;
}
return false;
}

Оно?

AlexSneg

Сделал порт DCM алгоритма от Мегапирата в свой проект на STM32. Поисследовал результаты в графиках и цифрах. Когда плавно изменяю положения платформы, то вообщем-то вопросов нет. Однако если взять плату потрясти поделать восьмерок в воздухе с переворотами и перегрузками, а потом резко положить в горизонт, то возникает однозначно воспроизводимая жопская картина. Горизонт сбит градусов на 30 и медленно ползет к нулю, затем уходит в другую сторону градусов на 20 затем медленно идет назад но до нуля никогда не доходит. чтобы заставить встать горизонт на место нужно слегка покачать плату, тогда горизонт медленно приходит в ноль. После прохождения дебаггером и отслеживания значений переменных я вижу почему такое происходит.

Олег (или кто-то, кто близко к исходникам), скажи, ты код компиляешь для реальных полетов именно с такими коэффициентами коррекции, как в исходниках установлены ???

#define Kp_ROLLPITCH 0.05967
#define Ki_ROLLPITCH 0.00001278

Оно же с такими значениями не дает алгоритму по акселю нормально откорректироваться. А может оно для вертолетов такое выставлено? Для коптеров, когда необходимо висеть и плавно двигаться, оно как раз в тему.
Я вот поигрался всяко разно и пришел к варианту:

#define Kp_ROLLPITCH 0.85967
#define Ki_ROLLPITCH 0.01001278

Оно по крайней мере дает алгортму в течение первой секунды горизонт поставить на место с погрешностью до 15 градусов по окончании любых расколбасов платформы. Да возникает эффект Roll раскачки, но он СУЩЕСТВЕННО меньше, чем при дефолтных коэффициентах и проходит в течение второй секунды, а дальше четко в ноль встает.

Есть еще вариант интегральный коэффициент вообще отключить.

Собственно, если сможешь проясни ситуацию, а я пока Кальмана реализую для живого сравнения с DCM.