В настоящее время я внедряю автономный квадрокоптер, который недавно получил полет и который был стабильным, но не может исправить себя при наличии значительных внешних помех. Я предполагаю, что это из-за недостаточно настроенных коэффициентов усиления ПИД-регулятора, которые необходимо дополнительно настроить в полете.
Текущий прогресс:
- Я исключил барометр, поскольку сфера моих исследований - только полеты в помещении, а отклонение барометра, по словам моего коллеги, составляет + -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
источник
Ответы:
Барометр, который нес на ястребе, имеет высотное разрешение 10 см. Если этого недостаточно, вы можете написать фильтр Калмана, который использует данные акселерометра на этапе прогнозирования и ультразвуковой датчик и / или барометр на этапе коррекции.
Но я не вижу решения этой проблемы. Точного измерения высоты при 20 Гц должно быть достаточно, если все, что вы пытаетесь сделать, это удерживать высоту.
Какова постоянная времени / собственная частота и демпфирование на вашем контроллере?
Я полагаю, я не закончил читать твой вопрос сегодня утром (это было до моего кофе). Ускорение от imu - это измерение ускорения плюс сила тяжести. Чтобы получить инерционное ускорение imu, вычтите вектор гравитации из измерения. Вы никогда не сможете контролировать встроенные измерения ускорения. Измерения искажены шумом, и вы не можете исправить это.
--- ответ на контрольную часть вопроса
Предположим, что все, что вы пытаетесь сделать, - это удерживать высоту и не беспокоиться о том, чтобы удерживать позицию на данный момент (хотя этот подход будет работать и для этого). И при условии, что вы можете командовать любым толчком, который хотите (в пределах разумного), тогда это становится легкой проблемой.
Первый проход в динамике системы выглядит
где положительныйZ вверх Давайте добавим компонент зависания к нашему дросселю, который имеет дело с гравитацией. Так
Наша новая динамика выглядит
Круто! Теперь мы разрабатываем закон управления, чтобы мы могли достичь желаемой высоты.
Наша система управления будет виртуальной пружиной и демпфером между нашим квадратором и желаемой высотой (это pd контроллер).
Система должна теперь вести себя как система второго порядка.Кп а также Кd может быть выбран для достижения коэффициента демпфирования и естественной частоты, которую вы ищете.
На этом этапе я хотел бы повторить, что интеграция данных акселерометра не является правильным способом для получения оценок состояния. Если вы действительно хотите быстро собрать что-то вместе, передайте результаты измерений гидролокатора через фильтр нижних частот с соответствующей частотой спада. Ваш автомобиль не будет колебаться на частоте 20 Гц, поэтому управление только данными гидролокатора будет в порядке.
источник