Колебания квадрокоптера с использованием ПИД-регулятора

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

Сейчас я использую один ПИД-регулятор для каждой оси, хотя функции такие.

dt=0.005;
error = *in - *set;

P = (error * kp);
I = I + (error * ki)*dt;
D_M = ((*in - in1)*kd)/dt;
D_E = ((error - error1)*kd)/dt;
D=D_M*(1-jerk) + D_E*(jerk);

I = constrain(I, LOWER_BOUND*0.75, UPPER_BOUND*0.75);
in1 = *in;
error1 = error;
pid = P + I + D;

pid = constrain(pid, LOWER_BOUND, UPPER_BOUND);
*out = pid;

Ошибка — это угол Эйлера, а заданное значение — это угол, на который я хочу, чтобы она достигла.

Затем я вывожу значения ПИД-регулятора на двигатели, используя библиотеку Arudino Servo.

  motor1 = throttle;
  motor2 = throttle;
  motor3 = throttle;
  motor4 = throttle;

  motor1 += rollOUT;
  motor2 += rollOUT;
  motor3 -= rollOUT;
  motor4 -= rollOUT;

  motor1 -= pitchOUT;
  motor2 += pitchOUT;
  motor3 -= pitchOUT;
  motor4 += pitchOUT;

  motor1 += yawOUT;
  motor2 -= yawOUT;
  motor3 -= yawOUT;
  motor4 += yawOUT;

Что-то мне не хватает в ПИД-регуляторах квадрокоптера? Спасибо за помощь!

, 👍2

Обсуждение

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

@JRobert Я лечу в помещении без каких-либо внешних помех. Квадрат летает и остается чрезвычайно устойчивым в течение примерно 2 секунд, а затем эти небольшие, но случайные «удары» заставляют его раскачиваться, прежде чем он снова стабилизируется. Я читал, что некоторые люди вместо углов используют угловые скорости? Это обычное дело? И если да, то как мне узнать угловую скорость, чтобы установить ее с определенной ошибкой?, @M.Schindler

Я здесь за пределами своих знаний (нет опыта работы с дронами), но мне приходится задаваться вопросом о циклах «устойчивый - колебание - снова устойчивый», особенно если они регулярны. Кажется, что-то его беспокоит — программное обеспечение, электронное, атмосферное — особенно потому, что кажется, что оно вполне способно сохранять устойчивость, даже если это только на короткие периоды времени. Это может быть интересно (но сложно): записать некоторые необработанные данные датчиков и поискать соответствующий шум или другие смещения., @JRobert

Проверьте kd относительно погрешности измерения. Возможно, шум ошибки измерения настолько значителен, что умножения его производной на коэффициент «200*кд» будет достаточно, чтобы нарушить работу системы., @Dave X


1 ответ


2

Я бы предложил установить Kd равным нулю, Kp — минимальному значению и позволить только интегралу функционировать в качестве контроллера. Любая реакция на ошибку может быть медленной, но только интегратор будет контролировать процесс с нулевой ошибкой. После наблюдения за реакцией интеграла в течение определенного периода времени (надеюсь, без проблем, о которых вы упомянули), постепенно вводите пропорциональное управление и наблюдайте за периодической нестабильностью. Если увеличение пропорционального усиления приводит к колебаниям, уменьшите пропорциональное значение до стабильного значения и постепенно увеличивайте производное усиление. Я работал с ПИД на протяжении всей своей карьеры, и описанная вами нестабильность похожа на то, что я ожидал увидеть в результате воздействия производного управления. Ни один датчик не является полностью свободным от шума, и даже если шум имеет низкую амплитуду, скорость изменения все равно может быть довольно большой, что приведет к очень очевидной периодической нестабильности в полете вашего дрона.

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

,

*"Удачи".* Спустя четыре года трудно сказать, получат они это или нет. Я проголосую за это и за то, что кто-то может найти это полезным., @timemage

Я видел, что он датирован 2019 годом, но подумал, что ответ может помочь другим, кто борется с отладкой проблем с ПИД-регулированием и настройкой. Изоляция эксплуатационных нарушений, связанных с PID, является довольно распространенным явлением во многих отраслях, помимо дронов. - Дж.Л., @Jonathan Lambert