Таблица миксера моторов

smotors

…у кроля в последней прошивке есть возможность играться геометрией рамы. Там настройка миксеров идет графически. Пользователь выставляет координаты расположения моторов своей рамы.

Gene
smotors:

…у кроля в последней прошивке есть возможность играться геометрией рамы. Там настройка миксеров идет графически. Пользователь выставляет координаты расположения моторов своей рамы.

Это, наверное, самый удобный способ, но с другой стороны, в таком варианте не видны “шестеренки” процесса, пользователь вынужден верить разработчику на слово, что все рассчитано правильно. Кролика я не щупал, но если судить по Вашему описанию, мне больше нравится MK. Таблица выглядит так:

rual

В моей поделке этот выглядит так:

предустановленые наборы:

/* сумматор  */

#include "mixer.hpp"

/*    крен  тангаж      рыск  газ */
/*/ квадро +
int16_t servo_conf[4][4] =
{
      1250, 0,          -500,       1800,
      -1250,      0,          -500,       1800,
      0,          1250,   500,            1800,
      0,      -1250,  500,         1800
};
 */
// квадро Х
int16_t servo_conf[4][4] =
{
      625,  625,  500,  1800,     // канал1
      -625, -625, 500,  1800,       // канал2
      625,  -625,   -500,     1800,       // канал3
      -625,   625,      -500, 1800        // канал4
};
/*
// крыло
int16_t servo_conf[4][4] =
{
      2048,       -2048,      0,          0,
      -2048,      -2048,            0,          0,
      0,    0,                4096, 0,
      0,          0,          0,          4096};
*/

 

Конфигурация задаётся матрицей 4х4, 4 аргумента и 4 выхода на ШИМ. Математика миксера целочисленная, поэтому чтобы не потерять точность коэффициенты задаются 0-1024 дискрет. Если нужен весь диапазон занчений на выходе сумма коэффициентов в строке должна быть 4096, т.к. сумма делится на 4. Получается точность 1024 дискреты.
В квадре канал газа занижен для того чтобы не уперется в ограничение на максимуме и оставить динамический коридор для стабилизатора.

Gene

Интересно! А почему у Вас коэффициент рысканья меньше, чем для крена и тангажа, а тяга настолько больше всех остальных величин?

Gene

Два дня мучил коптер “правильными” миксами. Результат странный. Если учитывать геометрию, коптер летит хуже, чем если ограничиться готовыми таблицами. Объяснения найти не могу 😦

rual
Gene:

А почему у Вас коэффициент рысканья меньше, чем для крена и тангажа

Коэффициены взяты по степени важности для удерждания в воздухе. Основной фактор с которым борется система это сила тяжести, потому тяга имеет максимальный вес, устойчивость определяется каналми тангажа и крена они следующие, ну и рысканье последние по важности для устойчиваости.
По большому счёту это условность, малые коэффициенты можно скомпенсировать ПИДами. Коэффициенты матрицы влияют только на точность присутсвующих в сумме составляющих, чем больше - тем точнее.
Кроме того, матрица при равных ПИДах должна оставлять динамический коридор для регулирования каждого привода, т.е. предотвращает выход канала в нелинейный режим (на отсечку или насыщение).