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

ukkr

Яххххххуууууууууууууууууууууууууууууууууу!!!
Я снова в строю!!!
Ночная борьба за жизнь пациента, 3х разовое применение дефибриллятора( программатора ISP), танцы с бубном над кровеносной системой( системой питания), вскрытие под микроскопом увенчались успехом – пациент ожил. Я весь сонный сейчас, бо всю ночь бился за Вортекс, но некоторые выясненные нюансы раскрою.

  1. Не запитуйте Вортекс от 3х банок лития!!! Хоть там и написано 6-18В на вход, от 3х банок лития за каких-то 30-40 минут непрерывной работы плата( или DC-DC) перегревается и Вортекс то отказывается загружаться вообще, то перезагружается. Используйте максимум 2е банки. С ними он работает стабильно на протяжении минимум 1.5 часов( больше тестить сил нету).

  2. Проверяйте свои проводочки, мама-мама и т.д. Я еб…ся с программатором ISP, он всё никак не мог запрограммировать Вортексу бутлоадер – постоянная Signature Verification Failure , каждый раз оно считывало разную сигнатуру Вортекса. Или ошибки чтения фюзов. Трабл оказался в том, что на моём проводочке мама-мама, который я одел на штырёк земли в ISP входе Вортекса+ штырёк земли в программаторе провод отломился от разъёма. А снаружи хрен увидешь, термоусадка надёжно удерживала и разъём и провод вместе. И второй такой же проводок, который я на MOSI надел был надорванным, то контачил, то нет. Только через 3 часа мазохизма до меня дошло проверить эти провода. После замены – бутлоадер залился за минуту.
    Ну а дальше уже дело техники.

  3. Замена

Serial.begin(SERIAL0_BAUD, 128, 128); 

на

Serial.begin(SERIAL0_BAUD, 144, 144); 

приводит к постоянным перезагрузкам при подключённом АРМ Планнере. Возврат на 128 буф-ра уменьшает частоту перезагрузок до 1 раз в 10-15 минут. Пока нет сил разбираться с причиной.

Вот такие вот дела.

Syberian
LeonVS:

Вортекс сцуко завис…

фацк мой моцк… предупреждал ведь, нах вы с 26 связались! 😦

ukkr:

приводит к постоянным перезагрузкам при подключённом АРМ Планнере. Возврат на 128 буф-ра уменьшает частоту перезагрузок до 1 раз в 10-15 минут.

вот оно и есть. У меня 26 чаще всего начинала перегружаться, когда я отдавал команду RTH удаленно (через мавлинк), или корректировал нав. точки.
В 24 я делал уменьшение нагрузки на протокол, отключал лишние данные, период менял… А в 26 эти гаты начали переходить на мавлинк 2.0 и все перенахратили, теперь в библиотеках ничего знакомого нет. Естественно, наколбасили там.

ukkr:

Используйте максимум 2е банки. С ними он работает стабильно на протяжении минимум 1.5 часов

Как я уже писал, надо от регуля запитываться или отдельного UBEC 5В (импульсного) напрямую. Т.е. подавать питание на Sonar+ (это провод 5В общего питания электроники платы). Если подать на штыри “5V”, останется незапитанным 3.3В-стабилизатор, т.к. он развязан диодами.

ukkr

Хух, Олег, у меня ща бошка совсем не варит. Всю ночь реанимацией пациента занимался. Чуть с ума не сошёл от того, что по ISP бутлоадер не шился. А когда разобрался, что всё дело в 2х маленьких проводочках, то чуть не сошёл с ума повторно. Столько времени убил на эту гадость… Эхххх.
По поводу питания – у меня ща вообще весело. Торчат пины на вход от ISP с +5В и землёй, торчат пины на вход 6-18В и отдельно Сонар-овский +5В. Боюсь я, чтоб сдуру два разных АКБ не подсоединить одновременно от усталости.

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

LeonVS
Syberian:

предупреждал ведь, нах вы с 26 связались!

Если бы 24 летала как ей положено не связывался бы… Оно конечно не виснет, но и не летает как ей положено… Так что все же предлагаю думать в сторону 26 и излечения ее от ребутов…

ukkr:

стабильно на протяжении минимум 1.5 часов

Что в моск было загружено? 24?

Syberian:

нах вы с 26 связались!

Олег, не так все плохо 😃 Если бы не кусты выросшие из ниоткуда и не уроганный ветер посадка бы вообще была шикарной 😃 Да и так, в общем то повреждения совсем небольшие 😃

ukkr
LeonVS:

Что в моск было загружено? 24?

Лёнь, 26я, но я вообще-то писал про перегрев железа. А оно от прошивки не зависит. Просто от 3х свежезаряженных банок лития за 30-40 минут беспрерывной работы чипы около входа на 6-18В становятся горячими, “шо капец”. И плата. С Вортексом начинаются полные чудеса. Может отрубиться и очень долго не включаться( даже не знал про встроенную термозащиту). А может начать загружаться и опять уйти в ребут. И так, пока не дашь остыть DC-DC с обвязкой и плате. Потом на холодную опять на 30-40 минут работает. До следующего перегрева. А вот с 2мя банками лития на тот же 6-18В вход всё тип-топом, никакого перегрева. По крайней мере за 1.5 часа.

По поводу же перезагрузок из-за софта 26й я уже написал – всё на месте. Увеличении буфера последовательного порта

Serial.begin(SERIAL0_BAUD, 144, 144);

со 128 на 144 только ухудшило ситуацию при подключении к АРМ Планнеру. С 128ю 10-15 минут оно работает стабильно-- потом перезагруз. Подключение к компу проводное, через ЮСБи. Это – предвосхищая вопрос, знаю ли я про проблемы беспроводных APCшек 😉

LeonVS

Кость, читот твое мое совсем запутать… на 128 оно перезагружается через 10-15 минут, на 144 еще чаще, а на каком буфере оно у тебя 1.5 часа проработало???
Как вообще отключить порт телеметрии, чтоб посмотреть что будет в этом случае?

ukkr
LeonVS:

Кость, читот твое мое совсем запутать… на 128 оно перезагружается через 10-15 минут, на 144 еще чаще, а на каком буфере оно у тебя 1.5 часа проработало???

Вся, я спать, а то людей уже вкрай запутал 😃 Лёнь, я говорил про тепловой перегрев и глюки из-за этого. Это не имеет отношения ни к номеру прошивки, ни к размеру буфера. Просто смотри, когда ты подрубаешь 3 банки на вход Вортексу, то через 30-40 минут( даже, если в Вортексе будет зашит “Hello world” вместо нашей прошивки) --эта паскудина перегревается и начинает чудить не по детски. Перезагрузка из-за переполнения буфера в 26й проше – детский лепет по сравнению с тем, как “веселится” Вортекс от перегрева. То он вообще не включается пока не остынет. То он перезагружается, но так, что не успев заново загрузиться опять уходит на перезагруз. При этом, он, Вортекс, к компу ни на секунду не подключён, никакого переполнения буфера нету.

Прости, если запутал; я всю ночь реанимацией Вортекса занимался, ща мозги вообще набекрень. 😵

LeonVS:

1.5 часа проработало?

—имел в виду “нормальную” как для 26й прошивки работу, а не то “веселье”, что творится с Вортексом при перегреве.

LeonVS
ukkr:

что творится с Вортексом при перегреве.

Эт не мой случай, у меня температура на плате мониториться, выше 35 не поднимается даже дома. Запитано через ДС-ДС конвертер на 10 вольт.

Олег, можешь кидануть фотку откуда куда кидал перемычку чтоб вортекс от УСБ жил? Чтот там усе такое мелкое сцуко…

Syberian
LeonVS:

можешь кидануть фотку

Крайний контакт USB-разъема, самый ближний к линейке М1-М8. Соединять со средним серво. Затарься микроскопом 😉

При ковырянии без питания, сервы придется вытащить, а то USB не потянет. У меня не тянул, по крайней мере. Регуль тоже мотором пикает 😁

===
Сейчас посравнивал 26 и 24 версии. Леонид, напомни еще раз, что не так в 24-ке? У меня как бы летала она домой, только резко рулилась.
Газ я нашел где блокируется в 26. Имена команд изменены. мавлинк гребаный переделан. Что еще?

Можно, конечно, ход конем сделать и начать 28-ю ковырять, но там уже есть статистика разбитых самолетов?

LeonVS
Syberian:

При ковырянии без питания, сервы придется вытащить

Syberian:

Затарься микроскопом

Ну нафиг это шаманство тогда, буду батарейку подрубать 😃

Syberian:

что не так в 24-ке?

Наблюдается неадекватное поведение, летит поворачивает вроде как заложено в программе, потом не с того не ссего, как заложит крен градусов под 60… Далее иногда тупо возьмет и пофигачит тупо по прямой в даль пофиг на все точки… Иногда наблюдаются глюки с компасом самолет летит задом наперед отсюда начинается не полет по точкам а лечу куда хачу обычно петляя и кругами, на 26 это то же иногда было, лечилось отключением компаса, на 24 это не помогало.
Ну в общем то и все, но этого более чем достаточно 😃
26 до сегодняшнего полета был доволен аки слон, летает как по струнке четко и куда надо, в мега ветер правда начинает ходить галсами, но верно лезет в нужном направлении, полагаю то же думаю лечиться пидами 😃 Думаю если бы не отправил команду на изменение миссии все было бы тип топ… Надо ловить глюк…

Syberian:

ход конем сделать и начать 28-ю ковырять

Олег, а откуда прошивки арду выковыриваешь? Хочу посмотреть код ихнего термокомпа 😃

Syberian

code.google.com/p/ardupilot-mega/downloads/list

люто бешено ненавижу гит, на который они перешли. падла ни версию с каментами посмотреть, ни разницу сравнить… Еще и дату изменений не указывает. Думай как хочешь типа.
Даже репо выкачать надо ставить этот гавногит!

LeonVS

Может попробовать на самом деле портировать 28 прошу? По словам Кости виснет она меньше 😃

Syberian

Костя будет дрыхнуть сутки и не скажет, у него что, оригинал ардупилот есть? 28-ю никто не портировал еще.

alex-ber
LeonVS:

Может попробовать на самом деле портировать 28 прошу? По словам Кости виснет она меньше

Или словить и вылечить глюк на 26?
на 24-й наблюдал явления описаные Леонидом только один раз (когда не сделал заливку ПУСТЫХ данных по точкам перед заливкой Миссии - описывал уже…).
26-ю сегодня залил еще раз… Вернулся на 24 - перезагруз продолжается (даже с закоментеным портом телеметрии…) - подключение по ЮСБ.
Жаль…

LeonVS

Как и обещал видео испытаний пирата в экстремальных условиях, все выкладывать не стал, только кусок как он полз против ветра ну и как летел по ветру + моя попытка изменить миссию = режим CIRCLE 😃
dpiter.info/crash.wmv

Syberian

Еще камент по отказу:

LeonVS:

сразу же связь с вортексом рвется у еОСД, и походу врубается режим CIRCLE, начинает кружить с выключенным движком…

При перезагрузе софтина ставит сервы по ее разумению в нейтраль и пытается инициализировать гиру, а для этого нужно держать самоль неподвижно и более-менее горизонтально. Вот она и ждет покоя. Ага, при штормовом ветре.
То есть, самолет твой не раздербанился только благодаря счастливой случайности, на самопланировании. Никаким CIRCLE там и не пахло.
Что еще хуже, даже если бы она прочухалась, домашняя точка была бы назначена там, в воздухе. Т.е. самовозврат на базу тоже отпадает.

Так что отсутствие перезагрузов - это ВАЖНЕЙШИЙ критерий правильной работы софта в нашем случае. Вне зависимости от того, насколько хорошо оно летает по точкам.
Поэтому я и не лезу на 26.
Можно попробовать поискать баг. Но летать до выяснения я бы не советовал.

LeonVS

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

ABL
LeonVS:

Может попробовать на самом деле портировать 28 прошу? По словам Кости виснет она меньше 😃

Я ползовал 28 на APM (не 2). По моему, уже пора перейти с 24 к 28 - пофиксили много баг.
И почему выбросили поддержку SD? Я ползую простой combo тоже - Arduino Mega + Sensor shield + FreeIMU clone. Поддержка SD была бы очень полезна - лог.

Syberian
LeonVS:

просто закоментить установку скорости явно маловасто?

тогда выставится по умолчанию 57600

в принципе отключить ее можно.
в файле gcs_mavlink.pde закоментить все строки после 2037-й, содержащие gcs3.
например:
gcs3.update
gcs3.data_stream_send

а также строку 2095, где COMM_1 написано

Проверяй посылкой команд навигации, переключением режимов удаленно и проч. через ЮСБ.

LeonVS
Syberian:

в файле gcs_mavlink.pde закоментить все строки после 2037-й, содержащие gcs3.
например:
gcs3.update
gcs3.data_stream_send

а также строку 2095, где COMM_1 написано

Алекс, у тебя виснет как я понял постоянно, попробуй сие проделать, измениться ли что?

Хм… а вот интересно что будет, если использовать как я 115200, а потом тупо связь оборвется (выключить наземку или по дальности) то же повиснет из за переполнения буфера???

ukkr

Костя будет дрыхнуть сутки и не скажет

Всем привет. Чуть не проспал на работу. 😃

LeonVS:

По словам Кости виснет она меньше

Эм… Я не говорил, что она виснет меньше. У меня даже негде проверить, больше или меньше она виснет. На Вортекс то оно не портировано. Я только код смотрел, сравнивал с нашей 26й и нашёл много хороших вещей\баго-фиксов в 28й. Вот, цитата себя, любимого:

К стати, посмотрел я на код АрдуПилота для самолётов 28й и 26й версии. Так вот, в 28й очень много изменений по сравнению с 26й. И фиг с ним, с мавлинком. Но там изменения фундаментальней.

  1. Уход с библиотеки Wire на I2C. Это задевает всё, в том числе и работу с датчиком компаса
  2. Сам драйвер компаса AP_Compass_HMC5843.cpp кроме того, что переписан на I2C теперь ещё и сохраняет состояние последней операции( успешно или сбой) в поле healthy и умеет автоматически переинициилизироваться после сбоя:
    Код:
    bool AP_Compass_HMC5843::read()
    {
    if (!healthy) {
    if (millis() < _retry_time) {
    return false;
    }
    if (!re_initialise()) {
    _retry_time = millis() + 1000;
    return false;
    }
    }
    Кроме того, само поле healthy используется в куче разных мест автопилота для расчётов и принятия решения. К стати, то же самое и с бародатчиком.
  3. Улучшен( “причёсан”) DCM. Вынесен резет матрицы в отдельный метод, куда добавлена и разрешение обнуления оф-та компасса:
    Код:
    AP_DCM::matrix_reset(void)
    {
    if (_compass != NULL) {
    _compass->null_offsets_disable();
    }
    _dcm_matrix.a.x = 1.0f;
    _dcm_matrix.a.y = 0.0f;
    _dcm_matrix.a.z = 0.0f;
    _dcm_matrix.b.x = 0.0f;
    _dcm_matrix.b.y = 1.0f;
    _dcm_matrix.b.z = 0.0f;
    _dcm_matrix.c.x = 0.0f;
    _dcm_matrix.c.y = 0.0f;
    _dcm_matrix.c.z = 1.0f;
    _omega_I.x = 0.0f;
    _omega_I.y = 0.0f;
    _omega_I.z = 0.0f;
    if (_compass != NULL) {
    _compass->null_offsets_enable(); // This call is needed to restart the nulling
    // Otherwise the reset in the DCM matrix can mess up
    // the nulling
    }
    }
  4. Пофикшен тупой баг в FastSerial.cpp, было _txBuffer->tail = _rxBuffer->head; , а надо было _txBuffer->tail = _txBuffer->head;
  5. Вместо IMU_Oilpan появился IMU_INS с целой кучей своего барахла.
  6. Появился failsafe самого МегаПилота. Если он обнаруживает, что, что-то не то с МегаПилотом, то он начинает отсылать напрямую команды с приёмника на сервы, без своей обработки.
    7)Появился geo fencing. На сколько я вкурил( поверхностно) – позволяет вам управлять границами полёта, соответственно МегаПилот не даст пепелацу вылететь за эти границы. Соответственно весь код МегаПилота проапдейчен, чтоб учитывать этот самый geo fencing.
  7. Куча всякого другого. Где-то причесали код, где-то зафиксили баги и т.д.

Со всего этого я добавил себе уже фикс бага FastSerial. Остальное ещё не пытался интегрировать.