Проект "Трикоптер" — различия между версиями
(→ПИД-регулятор) |
|||
(не показано 12 промежуточных версий 7 участников) | |||
Строка 1: | Строка 1: | ||
Проект, осуществляемый [[Клуб технического творчества|Клубом технического творчества]] при поддержке кафедры [["Теоретическая Механика"]]. | Проект, осуществляемый [[Клуб технического творчества|Клубом технического творчества]] при поддержке кафедры [["Теоретическая Механика"]]. | ||
+ | |||
== Участники == | == Участники == | ||
− | |||
− | |||
− | |||
− | |||
− | == Оборудование == | + | * [[Веренинов Игорь]] |
+ | * [[Верховых Михаил]] | ||
+ | * [[Кузькин Виталий]] | ||
+ | * [[Пшенов Антон]] | ||
+ | |||
+ | == Трикоптер v1.0 == | ||
+ | |||
+ | === Оборудование === | ||
*Платформа сборки: Arduino | *Платформа сборки: Arduino | ||
*Гироскопы: Melexis MLX90609 типа MEMS, 300 deg/sec | *Гироскопы: Melexis MLX90609 типа MEMS, 300 deg/sec | ||
Строка 14: | Строка 18: | ||
*Двигатели: 200Вт 1000kv бесколлекторные | *Двигатели: 200Вт 1000kv бесколлекторные | ||
− | + | === Рама === | |
− | == Рама == | ||
− | |||
− | + | <gallery widths=300px heights=210px perrow = 2> | |
+ | Файл:Cptr1.JPG|Самое начало проекта, установлен только один мотор | ||
+ | Файл:Cptr3.JPG|Поворотный механизм | ||
+ | Файл:Cptr2 1749.JPG|Полностью собранный коптер установлен на стенд для настройки ПИД коэффициентов | ||
+ | Файл:Cptr4.JPG | ||
+ | </gallery> | ||
− | + | === Структурная схема === | |
− | [[Файл: | + | [[Файл:3copter_scheme.jpg]] |
− | + | === Программирование === | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Программирование осуществлялось на языке/диалекте Wiring-C++ в среде Arduino. | Программирование осуществлялось на языке/диалекте Wiring-C++ в среде Arduino. | ||
Первым делом надо было просто заставить коптер полететь, поэтому алгоритмы обработки датчиков и управления предельно простые. | Первым делом надо было просто заставить коптер полететь, поэтому алгоритмы обработки датчиков и управления предельно простые. | ||
− | === | + | ==== Вычисление угловой скорости ==== |
В этом проекте использованы три гироскопа MLX90609 , они имеют аналоговые выходы для данных о угловой скорости и встроенный температурный датчик для устранения дрифта. | В этом проекте использованы три гироскопа MLX90609 , они имеют аналоговые выходы для данных о угловой скорости и встроенный температурный датчик для устранения дрифта. | ||
Микроконтроллер получает от гироскопа значения в диапазоне 0-1024, затем с учетом чувствительности 300 градусов в секунду производит расчет угловой скорости. Кроме того вычитается байес - значение которое показывает сенсор при отсутствии вращения. Таким образом окончательная формула выглядит так: | Микроконтроллер получает от гироскопа значения в диапазоне 0-1024, затем с учетом чувствительности 300 градусов в секунду производит расчет угловой скорости. Кроме того вычитается байес - значение которое показывает сенсор при отсутствии вращения. Таким образом окончательная формула выглядит так: | ||
− | |||
− | |||
for( int i=0; i<3; i++) | for( int i=0; i<3; i++) | ||
Строка 57: | Строка 52: | ||
} | } | ||
+ | Использование оверсэмплинга, то есть многократного повторного чтения входа, позволяет увеличить разрешение на бит. | ||
− | + | ==== Задание угловой скорости ==== | |
− | |||
− | === | ||
На данном этапе, управление аппаратом организовано посредством задания угловой скорости вокруг каждой оси с пульта управления. Данные о положении джойстиков кодируются и передаются на приемник, находящийся на коптере. Микроконтроллер получает информацию с приемника и приводит ее к формату удобному для вычисления. | На данном этапе, управление аппаратом организовано посредством задания угловой скорости вокруг каждой оси с пульта управления. Данные о положении джойстиков кодируются и передаются на приемник, находящийся на коптере. Микроконтроллер получает информацию с приемника и приводит ее к формату удобному для вычисления. | ||
Строка 66: | Строка 60: | ||
[[Файл:futaba.JPG|400px]] | [[Файл:futaba.JPG|400px]] | ||
− | + | ==== ПИД-регулятор ==== | |
− | + | Пропорционально-интегрально-дифференциальный (ПИД) регулятор — устройство в цепи обратной связи, используемое в системах автоматического управления для формирования управляющего сигнала. ПИД-регулятор формирует управляющий сигнал, являющийся суммой трёх слагаемых, первое из которых пропорционально входному сигналу, второе — интеграл входного сигнала, третье — производная входного сигнала. [http://ru.wikipedia.org/wiki/%D0%9F%D0%98%D0%94-%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80 Подробнее...] | |
− | + | В каноническом виде уравнение ПИД-регулятора выглядит так: | |
+ | |||
+ | : <math>u(t) = P + I + D = K_p\,{e(t)} + K_i\int\limits_{0}^{t}{e(\tau)}\,{d\tau} + K_d\frac{de}{dt}</math> | ||
+ | |||
+ | Программная реализация. Входом регулятора служит разность желаемой и текущей угловых скоростей. | ||
− | + | error = RCToDeg(RC[i+1]) - omega[i]; | |
+ | Ipart+= error*Dt; | ||
+ | Ipart= constrain(Ipart,-20,20); | ||
+ | Dpart = (omega - oldomega)/float(Dt); | ||
+ | oldomega =omega; | ||
+ | axisPID = Pgain*error + Dgain*Dpart + Igain*Ipart; | ||
− | + | == Трикоптер v1.1 == | |
− | + | После отладки алгоритма и тестовых полетов, рама коптера пришла в полную негодность, появились трещины и люфты. Для продолжения работы понадобился новый трикоптер. Версия 1.1 почти в два раза больше первой, лучи подросли до 30см, увеличилась и площадка под электронику .Новые шасси должны хорошо аммортизировать жесткие посадки и обеспечивать более стабильный взлет. Электроника осталась прежней. | |
− | + | <gallery widths=300px heights=210px perrow = 2> | |
+ | Файл:wiring.JPG|Рама собрана, начинается разводка проводов | ||
+ | Файл:wiring1.JPG|Почти вся электроника на своих местах | ||
+ | Файл:copter.JPG|Коптер - первые минуты на ногах | ||
+ | Файл:DSC05675.JPG|Облетал v1.1 - [http://www.youtube.com/watch?v=bNR5G9Fad5g видео] | ||
+ | </gallery> | ||
− | + | == Создание адаптивного регулятора == | |
− | + | === Моделирование === | |
− | + | Важной задачей для разработки эффективной системы управления является создание виртуальной модели коптера. На ней можно провести все испытания, не подвергая при этом опасности реальный аппарат. | |
+ | Модель была запрограммирована в среде [http://www.mathworks.com/products/simulink/ SIMULINK], управлять ей можно, как и настоящим коптером — при помощи пульта. | ||
+ | [http://www.youtube.com/watch?v=qhvg1urI5EY Первые виртуальные полеты] | ||
− | + | Программа пока работает не очень точно, это связано с тем что не вводились параметры реального аппарата. | |
− | = | + | === Регулятор === |
− | + | ''Здесь будет про фази-ПИД...'' | |
− | |||
− | |||
− | |||
− | + | === Алгоритм оптимизации === | |
− | == | ||
− | |||
− | + | Алгоритм swarm был написан [[Пшенов Антон|Антоном Пшеновым]]. | |
− | + | == Результаты == | |
− | |||
# Данный проект был представлен на международной конференции школьников [http://www.school.ioffe.ru/readings/2011/meeting.html Сахаровские Чтения 2011], где удостоился специального диплома "за успешное продвижение в работе над перспективной темой". | # Данный проект был представлен на международной конференции школьников [http://www.school.ioffe.ru/readings/2011/meeting.html Сахаровские Чтения 2011], где удостоился специального диплома "за успешное продвижение в работе над перспективной темой". | ||
# 15 Июня 2011г. трикоптер, совершил свой [http://www.youtube.com/watch?v=5WGxiVSGcUY&feature=player_embedded первый полет] | # 15 Июня 2011г. трикоптер, совершил свой [http://www.youtube.com/watch?v=5WGxiVSGcUY&feature=player_embedded первый полет] | ||
+ | # Первые фотографии с борта | ||
+ | <gallery widths=220px heights=200px perrow = 3> | ||
+ | Файл:Height.jpg | ||
+ | Файл:Tree.jpg | ||
+ | Файл:House2.jpg | ||
+ | </gallery> | ||
== Планы == | == Планы == | ||
− | В дальнейшем планируется создать адаптивный (самонастраивающийся) | + | |
+ | В дальнейшем планируется создать адаптивный (самонастраивающийся) ПИД-регулятор. | ||
+ | |||
+ | == Публикации по теме проекта == | ||
+ | |||
+ | * Веренинов И.А., Кузькин В.А. Разработка математической модели и прототипа трикоптера // Сборник трудов конференции "Неделя науки СПбГПУ", 2011 [направлено в печать] ([[Медиа: Vereninov_2011_SW_05.pdf |prerint_v.01]], [[Медиа: Vereninov_2011_SW_04.pdf | prerint_v.02]]) | ||
+ | |||
+ | == См. также == | ||
+ | |||
+ | * [[Беспилотный летательный аппарат]] | ||
+ | * [[Клуб технического творчества]] | ||
+ | |||
[[Category: Студенческие проекты]] | [[Category: Студенческие проекты]] | ||
+ | [[Category: Проект "Трикоптер"]] |
Текущая версия на 17:09, 25 декабря 2011
Проект, осуществляемый Клубом технического творчества при поддержке кафедры "Теоретическая Механика".
Содержание
Участники[править]
Трикоптер v1.0[править]
Оборудование[править]
- Платформа сборки: Arduino
- Гироскопы: Melexis MLX90609 типа MEMS, 300 deg/sec
- Радиолинк: Spektrum DSM2 FHSS-технология. Аппаратура все время меняет частоту передачи, обеспечивая надежную связь в радиусе до 1км.
- Серво поворотного механизма: Hitec HS-81MG , с металлическим редуктором.
- Аккумулятор: Li-Po 2.2Ah 25C 11.1V
- Двигатели: 200Вт 1000kv бесколлекторные
Рама[править]
Структурная схема[править]
Программирование[править]
Программирование осуществлялось на языке/диалекте Wiring-C++ в среде Arduino. Первым делом надо было просто заставить коптер полететь, поэтому алгоритмы обработки датчиков и управления предельно простые.
Вычисление угловой скорости[править]
В этом проекте использованы три гироскопа MLX90609 , они имеют аналоговые выходы для данных о угловой скорости и встроенный температурный датчик для устранения дрифта. Микроконтроллер получает от гироскопа значения в диапазоне 0-1024, затем с учетом чувствительности 300 градусов в секунду производит расчет угловой скорости. Кроме того вычитается байес - значение которое показывает сенсор при отсутствии вращения. Таким образом окончательная формула выглядит так:
for( int i=0; i<3; i++) { float tmp=0; for(int j=0;j<10;j++) { tmp+=analogRead(pin[i]);// oversampling } tmp/=10.0; omega[i]=(tmp-bias[i])*gain[i]; }
Использование оверсэмплинга, то есть многократного повторного чтения входа, позволяет увеличить разрешение на бит.
Задание угловой скорости[править]
На данном этапе, управление аппаратом организовано посредством задания угловой скорости вокруг каждой оси с пульта управления. Данные о положении джойстиков кодируются и передаются на приемник, находящийся на коптере. Микроконтроллер получает информацию с приемника и приводит ее к формату удобному для вычисления.
ПИД-регулятор[править]
Пропорционально-интегрально-дифференциальный (ПИД) регулятор — устройство в цепи обратной связи, используемое в системах автоматического управления для формирования управляющего сигнала. ПИД-регулятор формирует управляющий сигнал, являющийся суммой трёх слагаемых, первое из которых пропорционально входному сигналу, второе — интеграл входного сигнала, третье — производная входного сигнала. Подробнее...
В каноническом виде уравнение ПИД-регулятора выглядит так:
Программная реализация. Входом регулятора служит разность желаемой и текущей угловых скоростей.
error = RCToDeg(RC[i+1]) - omega[i]; Ipart+= error*Dt; Ipart= constrain(Ipart,-20,20); Dpart = (omega - oldomega)/float(Dt); oldomega =omega; axisPID = Pgain*error + Dgain*Dpart + Igain*Ipart;
Трикоптер v1.1[править]
После отладки алгоритма и тестовых полетов, рама коптера пришла в полную негодность, появились трещины и люфты. Для продолжения работы понадобился новый трикоптер. Версия 1.1 почти в два раза больше первой, лучи подросли до 30см, увеличилась и площадка под электронику .Новые шасси должны хорошо аммортизировать жесткие посадки и обеспечивать более стабильный взлет. Электроника осталась прежней.
Облетал v1.1 - видео
Создание адаптивного регулятора[править]
Моделирование[править]
Важной задачей для разработки эффективной системы управления является создание виртуальной модели коптера. На ней можно провести все испытания, не подвергая при этом опасности реальный аппарат. Модель была запрограммирована в среде SIMULINK, управлять ей можно, как и настоящим коптером — при помощи пульта. Первые виртуальные полеты
Программа пока работает не очень точно, это связано с тем что не вводились параметры реального аппарата.
Регулятор[править]
Здесь будет про фази-ПИД...
Алгоритм оптимизации[править]
Алгоритм swarm был написан Антоном Пшеновым.
Результаты[править]
- Данный проект был представлен на международной конференции школьников Сахаровские Чтения 2011, где удостоился специального диплома "за успешное продвижение в работе над перспективной темой".
- 15 Июня 2011г. трикоптер, совершил свой первый полет
- Первые фотографии с борта
Планы[править]
В дальнейшем планируется создать адаптивный (самонастраивающийся) ПИД-регулятор.
Публикации по теме проекта[править]
- Веренинов И.А., Кузькин В.А. Разработка математической модели и прототипа трикоптера // Сборник трудов конференции "Неделя науки СПбГПУ", 2011 [направлено в печать] (prerint_v.01, prerint_v.02)