А давайте обсудим Arducopter - APM
Здесь
…а описание протокола,желательно с примерами
Что удалось найти:
www.samba.org/tridge/UAV/…/mavlink.MAVLink.html
А тут о чем я говорю,видео внизу.
Где эти “дяди” выкладывают исходники?(ткните пальцем в гитхаб)
Всем привет!
Гекса летает хорошо, но хочется больше тяги для 3500 грамм груза и подольше летать.
Завершил (пока механический) апгрейд рамы гексы x6 в соосную гексу x12 на 18" пропах. ВМГ (5010 288kv 18x6.1, низ 5008 330kv 18x6.1) работает хорошо - вибраций почти нет, тяга ровная (2кг=235ватт при 6S), механика на пятёрочку короче говоря.
Но поможет ли в этом процессе АПМ? Судя по моему тесту и чтению последних 60 страниц топика - вероятно не поможет, если только не хитрость какая. Смекалка должна помочь.
Итак, тест конечно же показал что с явом на соосной гексе у нас будет проблема, если на луче нижние двиги в другую сторону крутят проп относительно верхних, которые крутятся как положено по мануалу для гексы X.
По факту - очень нежно даю газу, гекса плавно отрывается от планеты в 5-10см и неспеша начинает кручение по яву в правую сторону с явным ускорением этого кручения. При 90 градусах поворота сажу аппарат. Всё понятно.
Крутить в одну сторону пропы на луче - не вариант судя по отзывам, и даже проверять лень. Может потом на стенде проверю какая будет эффективность при этом. Зато по идее с явом проблем не будет в данной конфигурации.
Какие у меня пока есть варианты согласно прочитанному в топике:
- На двестипятидесятой странице rcopen.com/forum/f123/topic233564/10069 понравилась идея:
Я би ешо поверил если коптер подключать по Y6 схеми и паралельна включать соседние ротори в плоскости, а не луч.
Проблема - не понимаю как моторы подключать?
- На 284й странице rcopen.com/forum/f123/topic233564/11479 Алексей Козин предложил:
Пока не разобрался почему именно такая конфигурация, но вариант нравится.
To Алексей: Сработает ли? Я понимаю что мне ещё какое-то время экспериментировать и экспериментировать, но моторы местами менять туда сюда - уже чуток приуныл я как-то. 😃
- Далее вариант:
тут как бы надо библиотеку создавать: 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);
}
ну со всеми вытекающими…
Проблема для меня - что значит библиотеку создавать и не понимаю какого характера вытекающие? 😃
- Ну и иной вариант - покупка другого контроллера для x12. В принципе не проблема, но это время, деньги, мозг, информация… Не хотелось бы доходить до крайностей. 😃 Но, с другой стороны всё что не делается - делается к лучшему.
Поэтому надеюсь на лучшее, а это апгрейд АПМа или особенная конфигурация роторов.
Так как летает АПМ хорошо, висит в точке тоже прекрасно. Главное прошивку какую-попало не шить и быть внимательным. А заменить контроллер - всегда можно успеть.
О предложенных вариантах: второй вариант мне более симпатичен, но вдруг первый тоже рабочий? А может лучше действительно прошивку поправить каким-то образом?
Может быть выкосами можно будет облегчить работу контроллера на удержание курса.
Если что то найдёте по перпендикулярному выкосу на лучах буду очень признателен если поделитесь ссылкой.
Если что то найдёте по перпендикулярному выкосу на лучах буду очень признателен если поделитесь ссылкой.
Не понимаю, в чем вопрос? ну выкашивай сколько нравиться, главное чтобы на всех лучах на одинаковый угол(что довольно сложно, а иначе будет болтать по курсу). Выкос делается в направление, в которое этот мотор вращает аппарат. Больше выкос - резче вращение по курсу. Использую выкос на мелкой пилотажной гексе, на глаз градуса 4. Крутиться на месте как сумашедшая.
Проблема для меня - что значит библиотеку создавать и не понимаю какого характера вытекающие?
тута github.com/diydrones/ardupilot/tree/…/AP_Motors новую раму делать, а потом объяснить ардукоптеру, что есть такая, планнеру желательно тоже - хотя там параметр только меняется с + на х , а сколько моторов неважно, должно прокатить и без доработки…
А может лучше действительно прошивку поправить каким-то образом?
можно попробовать стандартный файл гексы 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 должно летать,но “коряво” крен к тангажу будет примешиваться 😦
Спасибо, мощный вариант, но понял что пока не готов в исходники лезть. Может предложить ардукоптеру внести вариант в прошивку с x12? Но это им как-то тестить же надо. Странно что нет такой конфигурации в апм, наверное есть основания. А вдруг с Y6 сработает?..
а схему Y6 разве не прокатит?ну типа по 2 луча на канал запаралелить? через Y-переходники? у меня в режиме квадра 6-моторник нестандартной схемы летает и ничего…
А как правильно подключить при Y6 конфе АПМа 12 двигателей через Y кабели?
Y6B если брать в расчёт, правильно я понимаю?
Немного поразмыслил и сам отвечу на свой вопрос пока что на примере Y6A:
нумерация двигов у гексы
Запараллеливаем сигналы регов 2 и 3й луч гексы X - на левый луч Y6
5 и 1й двиги гексы X - это правый луч Y6
6 и 4й двиги гексы X - хвост Y6
Правильно?
Фото не смог сделать, но сравнил фото с оф сайтов производителей точьно такие же.
НЕ РЕКЛАМА
…3drobotics.com/…/3dr-gps-ublox-with-compass
А вот медленный
www.rctimer.com/index.php?gOo=goods_details.dwt&go…
оффтоп:
народ, а зачем вы каждый раз пишите НЕ РЕКЛАМА перед ссылками на магазины? Всерьез считаете что вас кто-то обвините в рекламе таких компаний как 3drobotics, rctimer, banggood и т.д.?
Правильно?
нет, есть матрица моторов и в зависимости от расположения есть коэффициенты влияния roll, pith, yaw на каждый из моторов, и для каждой рамы они свои, т.к. лучи под разными углами…
а зачем вы каждый раз пишите НЕ РЕКЛАМА
OFF чтоб никто из присутствующих не лоханулся, и не побежал в тот магазин покупать втридорога 😃
ЗЫ каждый из присутствующих покупает в уже излюбленных магазинах и у проверенных продавцов, и про них никто ничего не говорит, все молчат…
нет, есть матрица моторов и в зависимости от расположения есть коэффициенты влияния roll, pith, yaw на каждый из моторов, и для каждой рамы они свои, т.к. лучи под разными углами…
Вроде всё линейно. Даже вроде не придётся что-то переподключать, а просто в АПМ выбрать конфу Y6 и проверить аппарат. (пока думаю к чему бы его привязать… по ходу всё равно пиды настраивать, нужно трос растягивать где-то и коптер ~8 кг с батареей 10900…)
Вот если Y6B, то тогда надо мне переподключать 6 лучей на выходах АПМ. Или ошибаюсь я где-то?
Ну вот по вашим картинкам:
Y6 - 1 и 2 учавствуют в крене тангаже и курсе, 3 тангаж и курс…
Hexa X - 4 мотора учавствуют и в крене и в тангаже и в курсе кроме 1 и 2 (левый правый), у них только крен и курс…
Hexa + передний и задний - тангаж и курс, левые и правые - крен, тангаж и курс
Подскажите, ненагуглил, хотя проблема наверняка была. Коптер в лойтере, висит нормально, в пределах 1-2м, но если разворачивать вокруг своей оси (по Yaw) начинает уплывать довольно резко на 5-6м в разные стороны (высоту держит нормально). Прошивка 3.1.5
Подскажите, ненагуглил, хотя проблема наверняка была. Коптер в лойтере, висит нормально, в пределах 1-2м, но если разворачивать вокруг своей оси (по Yaw) начинает уплывать довольно резко на 5-6м в разные стороны (высоту держит нормально). Прошивка 3.1.5
Компас откалибруйте более точно. Если компас не очень качественно откалиброван - ещё может “унитазить”, накручивать круги.
Либо пид’ы по yaw уменьшить?..
Подскажите, ненагуглил, хотя проблема наверняка была. Коптер в лойтере, висит нормально, в пределах 1-2м, но если разворачивать вокруг своей оси (по Yaw) начинает уплывать довольно резко на 5-6м в разные стороны (высоту держит нормально). Прошивка 3.1.5
а если не в лойтере, а в алтхолде?
Подскажите, ненагуглил, хотя проблема наверняка была. Коптер в лойтере, висит нормально, в пределах 1-2м, но если разворачивать вокруг своей оси (по Yaw) начинает уплывать довольно резко на 5-6м в разные стороны (высоту держит нормально). Прошивка 3.1.5
Было то-же самое на гексе. Поставил стойку с компасом по центру рамы ( чтобы центр компаса совпал с центром рамы ) и все стало нормально
Было то-же самое на гексе. Поставил стойку с компасом по центру рамы ( чтобы центр компаса совпал с центром рамы ) и все стало нормально
После установки на стойку расстояние от силовых проводов до компаса изменилось?
У меня тоже. Но хочу проверить. Все же компас на АРМ штука неточная. Может быть выкосами можно будет облегчить работу контроллера на удержание курса.
Глупости все это, основное направление берется от гиро, компас дает погрешность 2 градуса, гиро 0.1. Грубо говоря, компас только мешает ввиду своей несовершенности. Выкосы только добавят нагрузку. Не забываем законы: сила действия равна силе противодействия.
И вообще, погода зашибись, надо летать!
Если что то найдёте по перпендикулярному выкосу на лучах буду очень признателен если поделитесь ссылкой.
не надо выкосов, замените своию порнографию на моторах от парк-флаеров, на нормальеые моторы, и все будет нормально.
У кого погода зашибись, у кого даже слишком зашибись… Зашибут и привет коптеру. Пока пробую на веревочке. К сожалению какая то бяка вылезла в передатчике. Хотел через ееРе заархивировать содержимое флэша, но в результате теперь дисплей перевернут на 180 градусов и перепрошиваться отказывается. Странная неисправность. Никогда о таком не слышал раньше.
У кого погода зашибись, у кого даже слишком зашибись… Зашибут и привет коптеру. Пока пробую на веревочке. К сожалению какая то бяка вылезла в передатчике. Хотел через ееРе заархивировать содержимое флэша, но в результате теперь дисплей перевернут на 180 градусов и перепрошиваться отказывается. Странная неисправность. Никогда о таком не слышал раньше.
если зашибут коптер, то Вас будет греть мысль о том, что на это будет затрачено в десятки раз больше ресурсов, чем стоимость коптера, (т.е. Вы по определению одержали победу).Это конечно все шутки, знаю про ситуацию не по наслышке, главное в Вашей ситуации на коптер камеру не вешать.
Да в общем не стремлюсь. Даже если грохнут Патриотом мне, как то по барабану, сколько стоит Патриот, я за него, в отличии от коптера, не платил.