В настоящее время я внедряю автономный квадрокоптер, который недавно получил полет и который был стабильным, но не может исправить себя при наличии значительных внешних помех. Я предполагаю, что это из-за недостаточно настроенных коэффициентов усиления ПИД-регулятора, которые необходимо дополнительно настроить в полете.
Текущий прогресс:
- Я исключил барометр, поскольку сфера моих исследований - только полеты в помещении, а отклонение барометра, по словам моего коллеги, составляет + -5 метров.
- В настоящее время я использую ультразвуковой датчик (HC-SR04) для оценки высоты, который имеет разрешение 0,3 см. Однако я обнаружил, что частота обновления ультразвукового датчика 20 Гц слишком медленная, чтобы получить достаточно быстрый отклик для коррекции высоты.
- Я попытался использовать ускорения на оси Z от акселерометра, чтобы получить данные о высоте, интегрируя ускорение, чтобы получить скорость, которая будет использоваться для ПИД-регулятора скорости в схеме каскадного контроллера пида. Текущая реализация для ПИД-регулятора высоты представляет собой однопетлевый ПИД-регулятор, использующий Р-контроллер с позиционным входом от ультразвукового датчика.
- Я учел отрицательные измерения ускорения под действием силы тяжести, но независимо от того, сколько я вычисляю смещение, все еще существует отрицательное ускорение (например, -0,0034). Я вычислил гравитационное смещение, установив квадрокоптер на плоскую поверхность, а затем собрал 20 000 выборок с оси z акселерометра для усреднения, чтобы получить «смещение», которое сохраняется как постоянная переменная. Затем эта переменная вычитается из выходных данных оси z акселерометра, чтобы удалить смещение и установить его в «ноль», если он не ускоряется. Как сказано в вопросе, все еще существует отрицательное ускорение (например, -0,0034). Затем мой квадроцикл продолжает постоянно подниматься на высоту. Только с контроллером ультразвукового датчика P мой квадроцикл колеблется на 50 см.
Как можно эффективно бороться с этим постоянным отрицательным показанием ускорения?
Возможное решение : я планирую сделать каскадный ПИД-контроллер для удержания высоты с помощью внутреннего контура (ПИД-регулятор) с использованием акселерометра и внешнего контура (Р-контроллер) с использованием сонарного датчика. Мой консультант сказал, что даже однопетлевого контроллера P достаточно, чтобы квадрокоптер удерживал высоту даже при медленном датчике. Этого достаточно? Я заметил, что только с усилением P, квадрокоптер будет превышать свою высоту.
Leaky Integrator: я обнаружил, что эта статья объясняет, как он справлялся с отрицательными ускорениями с помощью негерметичного интегратора, однако у меня возникли некоторые затруднения с пониманием, почему это будет работать, поскольку я думаю, что отрицательная ошибка просто превратится в положительную ошибку, а не в решение проблемы. Я не совсем уверен. http://diydrones.com/forum/topics/multi-rotors-the-altitude-yoyo-effect-and-how-to-deal-with-it
Одноконтурный контроллер PD только с ультразвуковым датчиком: возможно ли это с помощью обратной связи от медленного датчика?
Источники:
Лист данных LSM303DLHC: http://www.st.com/web/en/resource/technical/document/datasheet/DM00027543.pdf
Негерметичный интегратор: http://diydrones.com/forum/topics/multi-rotors-the-altitude-yoyo-effect-and-how-to-deal-with-it
ArduPilot PID Loop: http://copter.ardupilot.com/wp-content/uploads/sites/2/2012/12/Alt-Hold-PID-version-3.0.1.jpg