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

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. Остальное ещё не пытался интегрировать.

alex-ber
LeonVS:

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

вечером попробую…
Пока на работе…

ukkr

Докладую. Решил поглядеть, как оно, без МАВЛИНКА с ГЦС.
Только я пошёл чутка более радикальным путём, обрамил всё, что связано с ГЦС и МАВЛИНК в #if…#endif. Плюс, застабил несколько gcs_XXXXXX функций.
Вроде как за 40 минут перезагрузок не было, хотя крутил его как бешеного. Сервы работают чётко, без сброса в 0е положение.
В Эттаче голые сырцы этого
MegaPiratePlane2.26-NO_GCSMAVLINK.zip
Застаблены
вот эти функции

#if GCSMAV_ENABLED==DISABLED
void mavlink_delay(long unsigned int){}
void gcs_send_message(ap_message){}
void gcs_data_stream_send(uint16_t, uint16_t){}
void gcs_update(){}
void gcs_send_text_P(gcs_severity, const prog_char_t*){}
#endif

Да, несколько расстроен взаимодействием МегаПирата с сервами.
Пока использовал дешёвые аналоговые С-02СТ от Пилотажа – особо не шумело, работало. Как только подрубил достаточно дорогие корейские цифровые металлические InoLab D202MG – кореец постоянно жужжит, как похотливый майский жук. 😵 Неужели МегаПират не работает с цифровыми сервами?

LeonVS
ukkr:

без МАВЛИНКА с ГЦС.

Полагаю совсем без МАВЛИНКА точки будет то же не занести в моск? Хотя если проработало без проблем, можно пошагово включать малыми порциями постараясь выявить проблемный участок…

ukkr

Ну, точки я и просто так не заносил, всё ж на коленке, тьфу на столе. Достаточно было просто врубить его и крутить и крутить… 10-15 минут давали перезагруз. Ща держит вроде.

ukkr

Разбираю AP_Mount. Блин, намутили они через ж…пу. Но, вроде, выходит каменный цветок.

alex-ber

Да ребята…
А у меня не сложилось… - только с работы приехал. Мозг и без того высушен!
Надеюсь завтра (верней сегодня…) будет спокойней - попробую добраться до железок…
Спокойной ночи!!!