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

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

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

Syberian
ukkr:

кореец постоянно жужжит, как похотливый майский жук.

Значить, серва под нагрузкой, вот и жужжит. У меня в другом проекте стоит цифровая на подсос ДВС, тоже пищит. Туда-сюда стронешь - перестает, а потом опять. Это их цифровое свойство: чуть стронешь с заданной точки - она валит мощность на полную, чтобы вернуться.
Вот если она пощелкивает туда-сюда, это другое дело, но это я пофиксил ранее.

Без мавлинка будет полная опа: ни точки прописать, ни ПИДы сконфигурять. Там 2 объекта телеметрии: gcs0 и gcs3. Соответственно, порты serial0 и serial3. Если gcs3 поудалять, то по ЮСБ управление останется, а по беспроводке уйдет. Соответственно, какая-то там нагрузка уберется и баг, скорее всего, исчезнет.

LeonVS
Syberian:

Сегодня 05:36

Олег, ты вообще спишь 😃?

ukkr
LeonVS:

Олег, ты вообще спишь ?

😆

Syberian

эээ… вообще-то у нас было пол девятого утра 😃