А давайте обсудим Arducopter - APM

Alex_from_Israel
DWK:

Извините не допонял.
С выкосом перпендикулярно лучам опыта нет.

У меня тоже. Но хочу проверить. Все же компас на АРМ штука неточная. Может быть выкосами можно будет облегчить работу контроллера на удержание курса.

minoboron

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

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

aka_Дмитрий
strizhmax:

Бага у них, пофиксили вроде

не баг, а просто логически понятная особенность, про которую и говорят. а фикс заключается в том, чтобы малоопытные пилоты видели вращение винтов более пропорциональным позиции стика и не драли стик вверх… в России это называется “защита от кое-кого”

fpv_mutant

(прим.для админа.свое сообщение перенес в эту ветку)
Подскажите по ws2812…у меня есть 1 метр,есть ардуина мини…прошивка на апм 3,1,5
Чего я хочу? на каждый из четырех лучей прилепить по 8 диодов ws2812 и моргать предупреждениями АПМа и +свои эффекты.

gorbln
fpv_mutant:

Чего я хочу? на каждый из четырех лучей прилепить по 8 диодов ws2812 и моргать предупреждениями АПМа и +свои эффекты

Вам как минимум не хватает ULN2003 или силовых транзисторов.

fpv_mutant
gorbln:

Вам как минимум не хватает ULN2003 или силовых транзисторов.

Скоро приедет,но зачем? Ведь ws2812 управляется одним “дата” проводом,а остальные два идут на питание,
т.е. пускается серия ипульсов на драйверные диоды.
А ULN2003 нужна для обычных светодиодов или не драйверной гирлянды.
ULN2003 - тупо усилитель.

Мне нужна прошивка,каторая снимает сигналы с АПМ,переваривает их и рулит адресной лентой.

RTemka

Есть прошивка на аттини для управления чем либо.
Можно ее на канал режимов повесить.
Или брать исходник декодера мавлинк и телеметрию переваривать.

fpv_mutant
RTemka:

Есть прошивка на аттини для управления чем либо.
Можно ее на канал режимов повесить.
Или брать исходник декодера мавлинк и телеметрию переваривать.

Где можно разжевано поглядеть? а именно протокол мавлинк,чтоб его контроллер (мега,стм) гирлянды анализировал и вылавливал нужные мне команды и светил их)
Mega 328 слаба для таких целей?

SergDoc
minoboron:

после арма давал газу, но обороты не наростали и после прохождения 50-ти процентного рубежа коптер резко начал набирать обороты.процесс взлета был остановлен. если бы взлетал в этом режиме с земли, то возможно были бы “дрова”.

хренеть - всегда так взлетаю - никаких дров, и ни на метр, а сантиметров 30…

men68

Отчего в МП может постоянно гореть красная надпись FAILSAFE? Пока не пробовал лететь, подключил по USB. Все failsafe отключены (убедился в полном списке по фильтру). ARM\DISARM отрабатывает,на газ реагирует,3DFIX есть возле окна. Но смущает эта красная надпись.

SergDoc
men68:

Отчего в МП может постоянно гореть красная надпись FAILSAFE? Пока не пробовал лететь, подключил по USB. Все failsafe отключены (убедился в полном списке по фильтру). ARM\DISARM отрабатывает,на газ реагирует,3DFIX есть возле окна. Но смущает эта красная надпись.

fs throttle уменьшить?

parahawk

Всем привет!

Гекса летает хорошо, но хочется больше тяги для 3500 грамм груза и подольше летать.

Завершил (пока механический) апгрейд рамы гексы x6 в соосную гексу x12 на 18" пропах. ВМГ (5010 288kv 18x6.1, низ 5008 330kv 18x6.1) работает хорошо - вибраций почти нет, тяга ровная (2кг=235ватт при 6S), механика на пятёрочку короче говоря.

Но поможет ли в этом процессе АПМ? Судя по моему тесту и чтению последних 60 страниц топика - вероятно не поможет, если только не хитрость какая. Смекалка должна помочь.

Итак, тест конечно же показал что с явом на соосной гексе у нас будет проблема, если на луче нижние двиги в другую сторону крутят проп относительно верхних, которые крутятся как положено по мануалу для гексы X.

По факту - очень нежно даю газу, гекса плавно отрывается от планеты в 5-10см и неспеша начинает кручение по яву в правую сторону с явным ускорением этого кручения. При 90 градусах поворота сажу аппарат. Всё понятно.

Крутить в одну сторону пропы на луче - не вариант судя по отзывам, и даже проверять лень. Может потом на стенде проверю какая будет эффективность при этом. Зато по идее с явом проблем не будет в данной конфигурации.

Какие у меня пока есть варианты согласно прочитанному в топике:

  1. На двестипятидесятой странице rcopen.com/forum/f123/topic233564/10069 понравилась идея:
Mongoose9999:

Я би ешо поверил если коптер подключать по Y6 схеми и паралельна включать соседние ротори в плоскости, а не луч.

Проблема - не понимаю как моторы подключать?

  1. На 284й странице rcopen.com/forum/f123/topic233564/11479 Алексей Козин предложил:
alexeykozin:

тогда нужно пару моторов ставить таким образом чтобы один был в верху например с пропом 14*4.7
а второй внизу с пропом 14*5.5
тоесть мотор к каналу 4 что на четыре часа с пропом 14*5.5 направлен вниз а мотор к каналу 4 что на шесть часов с пропом 14*4.7 вверх

Пока не разобрался почему именно такая конфигурация, но вариант нравится.

To Алексей: Сработает ли? Я понимаю что мне ещё какое-то время экспериментировать и экспериментировать, но моторы местами менять туда сюда - уже чуток приуныл я как-то. 😃

  1. Далее вариант:
SergDoc:

тут как бы надо библиотеку создавать: AP_MotorsHexaCoax.cpp
Код:
void AP_MotorsHexaCoax::setup_motors()
{
// call parent
AP_MotorsMatrix::setup_motors();

// hard coded config for supported frames
if( _flags.frame_orientation == AP_MOTORS_PLUS_FRAME ) {
// plus frame set-up
add_motor(AP_MOTORS_MOT_1, 0, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 1);
add_motor(AP_MOTORS_MOT_2, 0, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 7);
add_motor(AP_MOTORS_MOT_3, 180, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 4);
add_motor(AP_MOTORS_MOT_4, 180, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 8);
add_motor(AP_MOTORS_MOT_5,-120, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 5);
add_motor(AP_MOTORS_MOT_6,-120, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 9);
add_motor(AP_MOTORS_MOT_7, 60, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 2);
add_motor(AP_MOTORS_MOT_8, 60, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 10);
add_motor(AP_MOTORS_MOT_9, -60, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 6);
add_motor(AP_MOTORS_MOT_10, -60, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 11);
add_motor(AP_MOTORS_MOT_11, 120, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 3);
add_motor(AP_MOTORS_MOT_12, 120, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 12);
}else{
// X frame set-up
add_motor(AP_MOTORS_MOT_1, 90, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 2);
add_motor(AP_MOTORS_MOT_2, 90, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 7);
add_motor(AP_MOTORS_MOT_3, -90, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 5);
add_motor(AP_MOTORS_MOT_4, -90, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 8);
add_motor(AP_MOTORS_MOT_5, -30, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 6);
add_motor(AP_MOTORS_MOT_6, -30, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 9);
add_motor(AP_MOTORS_MOT_7, 150, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 3);
add_motor(AP_MOTORS_MOT_8, 150, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 10);
add_motor(AP_MOTORS_MOT_9, 30, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 1);
add_motor(AP_MOTORS_MOT_10, 30, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 11);
add_motor(AP_MOTORS_MOT_11,-150, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 4);
add_motor(AP_MOTORS_MOT_12,-150, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 12);
}
ну со всеми вытекающими…

Проблема для меня - что значит библиотеку создавать и не понимаю какого характера вытекающие? 😃

  1. Ну и иной вариант - покупка другого контроллера для x12. В принципе не проблема, но это время, деньги, мозг, информация… Не хотелось бы доходить до крайностей. 😃 Но, с другой стороны всё что не делается - делается к лучшему.

Поэтому надеюсь на лучшее, а это апгрейд АПМа или особенная конфигурация роторов.

Так как летает АПМ хорошо, висит в точке тоже прекрасно. Главное прошивку какую-попало не шить и быть внимательным. А заменить контроллер - всегда можно успеть.

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

DWK
Alex_from_Israel:

Может быть выкосами можно будет облегчить работу контроллера на удержание курса.

Если что то найдёте по перпендикулярному выкосу на лучах буду очень признателен если поделитесь ссылкой.

Necromant
DWK:

Если что то найдёте по перпендикулярному выкосу на лучах буду очень признателен если поделитесь ссылкой.

Не понимаю, в чем вопрос? ну выкашивай сколько нравиться, главное чтобы на всех лучах на одинаковый угол(что довольно сложно, а иначе будет болтать по курсу). Выкос делается в направление, в которое этот мотор вращает аппарат. Больше выкос - резче вращение по курсу. Использую выкос на мелкой пилотажной гексе, на глаз градуса 4. Крутиться на месте как сумашедшая.

SergDoc
parahawk:

Проблема для меня - что значит библиотеку создавать и не понимаю какого характера вытекающие?

тута github.com/diydrones/ardupilot/tree/…/AP_Motors новую раму делать, а потом объяснить ардукоптеру, что есть такая, планнеру желательно тоже - хотя там параметр только меняется с + на х , а сколько моторов неважно, должно прокатить и без доработки…

parahawk:

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

можно попробовать стандартный файл гексы github.com/diydrones/…/AP_MotorsHexa.cpp подправить
на то что я накалякал:
это:

 // hard coded config for supported frames
    if( _flags.frame_orientation == AP_MOTORS_PLUS_FRAME ) {
        // plus frame set-up
        add_motor(AP_MOTORS_MOT_1,   0, AP_MOTORS_MATRIX_YAW_FACTOR_CW,  1);
        add_motor(AP_MOTORS_MOT_2, 180, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 4);
        add_motor(AP_MOTORS_MOT_3,-120, AP_MOTORS_MATRIX_YAW_FACTOR_CW,  5);
        add_motor(AP_MOTORS_MOT_4,  60, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 2);
        add_motor(AP_MOTORS_MOT_5, -60, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 6);
        add_motor(AP_MOTORS_MOT_6, 120, AP_MOTORS_MATRIX_YAW_FACTOR_CW,  3);
    }else{
        // X frame set-up
        add_motor(AP_MOTORS_MOT_1,  90, AP_MOTORS_MATRIX_YAW_FACTOR_CW,  2);
        add_motor(AP_MOTORS_MOT_2, -90, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 5);
        add_motor(AP_MOTORS_MOT_3, -30, AP_MOTORS_MATRIX_YAW_FACTOR_CW,  6);
        add_motor(AP_MOTORS_MOT_4, 150, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 3);
        add_motor(AP_MOTORS_MOT_5,  30, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 1);
        add_motor(AP_MOTORS_MOT_6,-150, AP_MOTORS_MATRIX_YAW_FACTOR_CW,  4);
    }

заменить на это:

// hard coded config for supported frames
    if( _flags.frame_orientation == AP_MOTORS_PLUS_FRAME ) {
        // plus frame set-up
        add_motor(AP_MOTORS_MOT_1, 0, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 1);
        add_motor(AP_MOTORS_MOT_2, 0, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 7);
        add_motor(AP_MOTORS_MOT_3, 180, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 4);
        add_motor(AP_MOTORS_MOT_4, 180, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 8);
        add_motor(AP_MOTORS_MOT_5,-120, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 5);
        add_motor(AP_MOTORS_MOT_6,-120, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 9);
        add_motor(AP_MOTORS_MOT_7, 60, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 2);
        add_motor(AP_MOTORS_MOT_8, 60, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 10);
        add_motor(AP_MOTORS_MOT_9, -60, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 6);
        add_motor(AP_MOTORS_MOT_10, -60, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 11);
        add_motor(AP_MOTORS_MOT_11, 120, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 3);
        add_motor(AP_MOTORS_MOT_12, 120, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 12);
    }else{
        // X frame set-up
        add_motor(AP_MOTORS_MOT_1, 90, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 2);
        add_motor(AP_MOTORS_MOT_2, 90, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 7);
        add_motor(AP_MOTORS_MOT_3, -90, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 5);
        add_motor(AP_MOTORS_MOT_4, -90, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 8);
        add_motor(AP_MOTORS_MOT_5, -30, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 6);
        add_motor(AP_MOTORS_MOT_6, -30, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 9);
        add_motor(AP_MOTORS_MOT_7, 150, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 3);
        add_motor(AP_MOTORS_MOT_8, 150, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 10);
        add_motor(AP_MOTORS_MOT_9, 30, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 1);
        add_motor(AP_MOTORS_MOT_10, 30, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 11);
        add_motor(AP_MOTORS_MOT_11,-150, AP_MOTORS_MATRIX_YAW_FACTOR_CW, 4);
        add_motor(AP_MOTORS_MOT_12,-150, AP_MOTORS_MATRIX_YAW_FACTOR_CCW, 12);
    }

может и проканает…
только с моторами разобраться, последняя цифра - это номер выхода на плате, цфирка после AP_MOTORS_MOT_(номер в микшере), - угол луча, нечётные - верхние(соответствуют стандартной гексе), чётные - нижние …
если не ошибаюсь у APM есть 4 лишних выхода на сервы, так вот они по идее должны стать недостающими моторами…
то что предложил alexeykozin должно летать,но “коряво” крен к тангажу будет примешиваться 😦

parahawk

Спасибо, мощный вариант, но понял что пока не готов в исходники лезть. Может предложить ардукоптеру внести вариант в прошивку с x12? Но это им как-то тестить же надо. Странно что нет такой конфигурации в апм, наверное есть основания. А вдруг с Y6 сработает?..

mejnkun:

а схему Y6 разве не прокатит?ну типа по 2 луча на канал запаралелить? через Y-переходники? у меня в режиме квадра 6-моторник нестандартной схемы летает и ничего…

А как правильно подключить при Y6 конфе АПМа 12 двигателей через Y кабели?

Y6B если брать в расчёт, правильно я понимаю?

Немного поразмыслил и сам отвечу на свой вопрос пока что на примере Y6A:

нумерация двигов у гексы

Запараллеливаем сигналы регов 2 и 3й луч гексы X - на левый луч Y6
5 и 1й двиги гексы X - это правый луч Y6
6 и 4й двиги гексы X - хвост Y6

Правильно?