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

LeonVS

Вчера весь вечер крутил-дергал вортекс, не одного перезагруза не с включенным модулем не с выключенным. А вот при отправке команд “с земли” они происходят раз в 10-15 команд…

К стати по УСБ такая же фигня, тобишь по какому интерфасу команда попадает не важно…

ukkr:

Хочется верить, что виновата эта кривая дотнетовская поделка.

Увы но виноват все же код пирата…
Пробовал отправлять команды из “HK’s Ground Control Station - Lite Version” такая же фигня

А вот что выдает при конекте 40 планер.

Syberian
LeonVS:

а координированный поворот твоя разработка или это микс ардупилота?

ардупилота. Он мне тоже не нравится, я его отключал (ставил 0 в планере)

ukkr:

а наш код МегаПирата не модифицировался в плане работы с АРС 2хх?

24-я версия переделывалась в плане уменьшения потока, и вначале, при запросе параметров, менялась скорость выдачи не 1 параметр в 20мс, а в 100мс, иначе АРС “глотал” пакеты. Крайне раззвиздяйская реализация мавлинка в пилоте 😦 Делай что хочешь, но роди 115200 полный дуплекс!
Леонид, вероятно, полудуплекс в новой версии планера тоже не катит по той же причине. Из-за начального запроса параметров, сразу, быстро и большой кучей.

Поступление команд с земли тоже приводит к чему-то очень плохому в плане перехлеста буферов, что приводит к нарушению целостности стека и, соответственно, перезагрузке.
Слишком много наворочено библиотек и объектов. Начинаю подозревать, что “Тардуино IDE”, изначально предназначенное для “лампочкой помигать на макетке”, не было рассчитано на компиляцию такого большого проекта.
Помимо более-менее работающего g++ компилятора, код обрабатывает еще какой-то парсер на яве, чтобы вытащить глобальные переменные, расположить функции в порядке вызова и проч.
Его главный баг, до сих пор не пофиксенный - это лютая ненависть к составным названиям типов, т.е. unsigned int, static unsigned long и т.п.

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

Напрашивается мысль сделать “более православный” автопилот на основе пирата, переписав код чуть более, чем полностью и сделав его надежным, как танковый каток. Также уменьшить протокол на землю, чтобы укладывался в 19200 без пропусков. И, естественно, уйти от ардуино, к примеру, на codevision. Более того, прога получится быстрее и меньше в размере, т.к. автоматом зачистим ненужный HIL и другие глупости, в самолете не нужные.
По поводу прошивки платы, оставить стандартный бутлоадер от ардуино, только шить его через USB из HEX с помощью команды avrdude.
Я мог бы за это взяться, только кто возьмется за программу для виндомс? Протокол обмена согласуем, даже исходники Планнера есть на их странице.
Вообще, много чего сложного на AVR делал, даже контроллер асинхронной сети связи из 54 нодов (тоже AVR) на 8-мегабитной параллельной шине прямо на порту A. Нигде не было таких неявных галюнов, как в ардуине.

В плане написания “новой” GCS тоже вижу большой плюс: если забить на .NEТ, можн сделать такую прогу, которую можно запускать и на *NIX через вайн, и на MAC через bootcamp.

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

Здесь предлагаю остановиться на 24-й прошивке или 26-й без GCS чисто для истории. Надоело “подчищать хвосты” за джейсоном. По крайней мере, буду уверен, что самолет не гробанется из-за непонятного глюка где-то в дебрях тысячи вложенных процедур.

LeonVS
Syberian:

Здесь предлагаю остановиться на 24-й прошивке или 26-й без GCS чисто для истории.

Мысль конечно здравая, но свой проект родить дело не простое и далеко не быстрое…
Вспомни как было с МАРГ, в теории то же казалось все просто, на деле же зацепили столько глюков что откатились опять на ДЦМ…
Так что предлагаю сразу не рубить сплеча, а попытаться порезать лишнее, может чего дельное все же можно будет собрать 😃

Syberian
LeonVS:

попытаться порезать лишнее

Беда в том, что резать слишком много. А как подумаешь о портировании новой версии - руки опускаются. Я не хочу больше ронять самолеты из-за чьего-то кривого кода. Пусть это будет мой собственный гыгы (шютка) 😁 по крайней мере посыпать голову пеплом буду с чистой совестью.

Короче, я уже начал. Условное обозначение MegaPirate X. Буду двигаться постепенно: IMU - RTH - миссии - geofencing - thermal search.
Заменить MARG на IMU здесь будет гораздо проще.

Кстати 115200 в ордуино выставляется с погрешностью 4%, судите сами о качестве линка.

LeonVS
Syberian:

Короче, я уже начал.

Чем планируешь пользоваться для заливки миссий смены ПИДов и тд тп?

Syberian

Свое накорябать. Хотя бы без миссий на первое время.

LeonVS

Нда, “военной” стабильности в сие проекте явно не хватает…
Интересно как обстоят дела в самом ардупилоте на его родном железе? то же глюк на глюке или с родным железом все тип топ?

ukkr
Syberian:

Здесь предлагаю остановиться на 24-й прошивке или 26-й без GCS чисто для истории. Надоело “подчищать хвосты” за джейсоном. По крайней мере, буду уверен, что самолет не гробанется из-за непонятного глюка где-то в дебрях тысячи вложенных процедур.

Syberian:

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

Блин, Олег – прям мои мысли высказал. Я чем больше в код МегаПирата\АрдуПлейна вглядываюсь, тем больше тоска за сердце берёт. Даже в 28й есть много перлов.

LeonVS:

Интересно как обстоят дела в самом ардупилоте на его родном железе? то же глюк на глюке или с родным железом все тип топ?

Лёнь, дело не только и не столько в железе. Глюки, которые вылазят у нас на 90% вызваны не проблемой с железом. Вызваны они кривостью самого кода АрдуПлейна и библиотек, которые он юзает( феерический глюк с ФастСериал сразу в голову влез).

БТВ, поскольку меня мало устраивает дотНетовский МишнПланнер, тихонько пописываю на java альтернативную гуйню. Должно работать на всех платформах, где работает java. Пока, задача номер один – написать гуйню, которая сможет визуализировать показания всех датчиков БлекВортекса. Интерфейс связи с БлекВортексом – COM портовый, также как и родной МишнПланнер. Протоколы общения планирую реализовывать как классы-плагины. Для начала будет грёбанный Мавлинк.
П.С. Но это всё военная тайна. Пока не получу красивый результат – никто ничего не слышал и не видел.

Syberian
ukkr:

Но это всё военная тайна.

Тааак… Костя, ты-то мне и нужен 😉 как раз планирую с датчиков начать.

Можешь сделать загрузку произвольного HEX в вортекс через бутлоадер? Если в ардуино при загрузке удерживать шифт, в консоли отображаются все команды загрузки и работы с программатором avrdude

Syberian

Ну все, доразрабатывался тля. На вортексе начал греться GPS-модуль и 3.3В упало до 0.4В. Пипец котенку. Это я его в первый раз включил после того, как трикоптер рухнул.

Кто знает, какую дорогу перерезать, чтобы модуль обесточить?

LeonVS

Скраю платы две ноги спаяно, полагаю это и есть +… Алекс молчит?

alex-ber

Олег. Жаль твой модуль - может банально что попало на (под) ноги?
Я так понял, что мы (пардон -вы с Костей) будем писать свой новый код? Чем могу помочь? Сразу оговорюсь - я не програмист и по Английски понимаю с переводчиком… Но идей и желания - море! могу тестировать…
Да - кстати : если уж писать свой код с нуля, то зачем называть старым именем? Новый код не портирование, значит и не обязательно в названии исходник вспоминать…

Syberian

На разъеме GPS 12 Ом сопротивление. Так и должно быть? Видимых соплей не обнаружено.
Возможно, что-то влетело под крышку.

У меня только посередине ноги спаяны. Написал Алексу.

LeonVS
Syberian:

На разъеме GPS 12 Ом сопротивление. Так и должно быть?

У меня там что то странное скачущее (может кондер стоит?) но ни как не 12 Ом…

alex-ber

Олег.
Появилась мысля - ты антену отключил? Антена ведь активная, т.е. на нее питалово должно поступать… Может во время краша кабель антенный замкнул?

ukkr
Syberian:

Ну все, доразрабатывался тля. На вортексе начал греться GPS-модуль и 3.3В упало до 0.4В. Пипец котенку. Это я его в первый раз включил после того, как трикоптер рухнул.

Кто знает, какую дорогу перерезать, чтобы модуль обесточить?

Олег, соболезную, я несколько дней назад тоже думал, что пипец…
По поводу распиновки – вот блохастый сайт, там в документах вроде как распиновка есть.
www.u-blox.com/en/…/neo-6-family.html
Могу ща у себя посмотреть, если надо.

Олег, над красной буквой u второй вывод слева сверху. 3.3В Ну да, по референсу так и есть u-blox.com/…/LEA-6_NEO-6_MAX-6_HardwareIntegration… VCC туды идёт.

Я б отпаял эту ножку и загнул вверх на время. Или откусил, если реально сгорело.

Syberian:

Можешь сделать загрузку произвольного HEX в вортекс через бутлоадер? Если в ардуино при загрузке удерживать шифт, в консоли отображаются все команды загрузки и работы с программатором avrdude

Чё-то я не понял, а зачем? Можно ж банальный батник написать, который делает то же, что и Ардуиновская ИДЕ. Только сделать его с одним параметром – именем файла прошивки.

alex-ber

Олег.
ну что разобрался с ГПС или мерять ноги?
Кстати - всех участников проекта с Днем Защитника (во придумали название… ). Короче - пацаны всех с Днем Советской Армии!!!

ukkr

Да, всех мужиков с Праздником. И дедам нашим спасибо.

Syberian

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

Syberian

отрезал провод питания GPS. Работаем дальше.

Осилил процесс загрузки произвольного HEX в ордуино через юсби.
Прилагаю сборку программатора с образцовым (пустым) HEX. Запускать avrdude.cmd
В командном файле надо поменять ком-порт на нужный и подставить имя НЕХ-а соответственно.
По умолчанию выбран чип 2560, что также меняется в командном файле.

dl.dropbox.com/u/63786348/MegaPirateX.zip

Syberian

Теперь греется гироскоп, пальцем держать невозможно. Вместо 3.3В 2.5В. Вроде работает, но сколько протянет - неизвестно. Моя плакаль 😦
Вероятно, при падении чиркнуло платой по железкам и на низковольтную попало 5В.

LeonVS
Syberian:

Осилил процесс загрузки произвольного HEX в ордуино через юсби.

Олег, чтот я все же не совсем догоняю… Если я правильно понял, ошибка даже не столько в коде, сколько в компиляторе??? В аурдино даже при идеальном коде глюки все равно будут??? Чтот не ожидал я такого подвоха от аурдино… 😦

Syberian
LeonVS:

В аурдино даже при идеальном коде глюки все равно будут???

да, потому что есть

  1. собственные аурдинские библиотеки макросов, типа глючного serial
  2. есть парсер на java с багами
LeonVS

В чем планируешь писать код? Какой язык будет использоваться?

Syberian

C++ с элементами ассемблера в среде codevision. Ни одной сторонней библиотеки.