Проект "Трикоптер" — различия между версиями

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
(Программирование)
 
(не показано 14 промежуточных версий 8 участников)
Строка 1: Строка 1:
 
Проект, осуществляемый [[Клуб технического творчества|Клубом технического творчества]] при поддержке кафедры [["Теоретическая Механика"]].
 
Проект, осуществляемый [[Клуб технического творчества|Клубом технического творчества]] при поддержке кафедры [["Теоретическая Механика"]].
 +
 
== Участники ==
 
== Участники ==
*[[Веренинов Игорь]]
 
*[[Верховых Михаил]]
 
 
=Трикоптер v1.0=
 
  
== Оборудование ==
+
* [[Веренинов Игорь]]
 +
* [[Верховых Михаил]]
 +
* [[Кузькин Виталий]]
 +
* [[Пшенов Антон]]
 +
 
 +
== Трикоптер v1.0 ==
 +
 
 +
=== Оборудование ===
 
*Платформа сборки: Arduino
 
*Платформа сборки: Arduino
 
*Гироскопы: Melexis MLX90609 типа MEMS, 300 deg/sec
 
*Гироскопы: Melexis MLX90609 типа MEMS, 300 deg/sec
Строка 14: Строка 18:
 
*Двигатели: 200Вт 1000kv бесколлекторные
 
*Двигатели: 200Вт 1000kv бесколлекторные
  
+
=== Рама ===
== Рама ==
 
Самое начало проекта, установлен только один мотор.
 
  
[[Файл:Cptr1.JPG|400px]]
+
<gallery widths=300px heights=210px perrow = 2>
 +
Файл:Cptr1.JPG|Самое начало проекта, установлен только один мотор
 +
Файл:Cptr3.JPG|Поворотный механизм
 +
Файл:Cptr2 1749.JPG|Полностью собранный коптер установлен на стенд для настройки ПИД коэффициентов
 +
Файл:Cptr4.JPG
 +
</gallery>
  
Поворотный механизм.
+
=== Структурная схема ===
  
[[Файл:Cptr3.JPG|400px]]
+
[[Файл:3copter_scheme.jpg‎]]
  
Полностью собранный коптер установлен на стенд для настройки ПИД коэффициентов.
+
=== Программирование ===
  
[[Файл:Cptr2 1749.JPG|400px]]
+
Программирование осуществлялось на языке/диалекте Wiring-C++ в среде Arduino.
 +
Первым делом надо было просто заставить коптер полететь, поэтому алгоритмы обработки датчиков и управления предельно простые.
  
[[Файл:Cptr4.JPG|400px]]
+
==== Вычисление угловой скорости ====
  
 +
В этом проекте использованы три гироскопа 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];
 +
}
  
[[Файл:3copter_scheme.jpg‎]]
+
Использование оверсэмплинга, то есть многократного повторного чтения входа, позволяет увеличить разрешение на бит.
 +
 
 +
==== Задание угловой скорости ====
 +
 
 +
На данном этапе, управление аппаратом организовано посредством задания угловой скорости вокруг каждой оси с пульта управления.  Данные о положении джойстиков кодируются и передаются на приемник,  находящийся на коптере. Микроконтроллер получает информацию с приемника и  приводит ее к формату удобному для вычисления.
  
I actaully found this more entertaining than James Joyce.
+
[[Файл:futaba.JPG‎|400px]]
  
=трикоптер v1.1=
+
==== ПИД-регулятор ====
  
После отладки алгоритма и тестовых полетов, рама коптера пришла в полную негодность, появились трещины и люфты. Для продолжения работы понадобился новый трикоптер. Версия 1.1 почти в два раза больше первой, лучи подросли до 30см, увеличилась и площадка под электронику .Новые шасси должны хорошо аммортизировать жесткие посадки и обеспечивать более стабильный взлет. Электроника осталась прежней.
+
Пропорционально-интегрально-дифференциальный (ПИД) регулятор — устройство в цепи обратной связи, используемое в системах автоматического управления для формирования управляющего сигнала. ПИД-регулятор формирует управляющий сигнал, являющийся суммой трёх слагаемых, первое из которых пропорционально входному сигналу, второе — интеграл входного сигнала, третье — производная входного сигнала. [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 Подробнее...]
  
Рама собрана, начинается разводка проводов.
+
В каноническом виде уравнение ПИД-регулятора выглядит так:
  
[[Файл:wiring.JPG‎|400px]]
+
: <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>
  
Почти вся электроника  на своих местах
+
Программная реализация. Входом регулятора служит разность желаемой и текущей угловых скоростей.
  
[[Файл:wiring1.JPG|400px]]
+
      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 ==
  
[[Файл:copter.JPG|400px]]
+
После отладки алгоритма и тестовых полетов, рама коптера пришла в полную негодность, появились трещины и люфты. Для продолжения работы понадобился новый трикоптер. Версия 1.1 почти в два раза больше первой, лучи подросли до 30см, увеличилась и площадка под электронику .Новые шасси должны хорошо аммортизировать жесткие посадки и обеспечивать более стабильный взлет. Электроника осталась прежней.
  
Облетал v1.1  - [http://www.youtube.com/watch?v=bNR5G9Fad5g видео]
+
<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>
  
[[Файл:DSC05675.JPG|400px]]
+
== Создание адаптивного регулятора ==
  
=создание адаптивного регулятора=
+
=== Моделирование ===
  
==моделирование==
+
Важной задачей для разработки эффективной системы управления является создание виртуальной модели коптера. На ней можно провести все испытания, не подвергая при этом опасности реальный аппарат.  
Важной задачей для разработки эффективной системы управления является создание модели коптера. На ней можно провести все испытания, не подвергая при этом опасности реальный аппарат.  
+
Модель была запрограммирована в среде [http://www.mathworks.com/products/simulink/ SIMULINK], управлять ей можно, как и настоящим коптером при помощи пульта.
Модель была запрограммирована в среде SIMULINK, управлять ей можно, как и настоящим коптером - при помощи пульта.
+
[http://www.youtube.com/watch?v=qhvg1urI5EY Первые виртуальные полеты]  
[http://www.youtube.com/watch?v=qhvg1urI5EY первые  виртуальные полеты]  
 
  
 
Программа пока работает не очень точно, это связано с тем что не вводились параметры реального аппарата.
 
Программа пока работает не очень точно, это связано с тем что не вводились параметры реального аппарата.
==регулятор==
 
здесь будет про фази-пид
 
  
==алгоритм оптимизации==
+
=== Регулятор ===
 +
 
 +
''Здесь будет про фази-ПИД...''
  
Алгоритм swarm был написан Антоном Пшеновым.
+
=== Алгоритм оптимизации ===
 +
 
 +
Алгоритм 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>
  
 
== Планы ==
 
== Планы ==
В дальнейшем планируется создать адаптивный (самонастраивающийся) PID-регулятор.
+
 
 +
В дальнейшем планируется создать адаптивный (самонастраивающийся) ПИД-регулятор.
 +
 
 +
== Публикации по теме проекта ==
 +
 
 +
*  Веренинов И.А., Кузькин В.А. Разработка математической модели и прототипа трикоптера // Сборник трудов конференции "Неделя науки СПбГПУ", 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 бесколлекторные

Рама[править]



Структурная схема[править]

3copter scheme.jpg

Программирование[править]

Программирование осуществлялось на языке/диалекте 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]; 
}

Использование оверсэмплинга, то есть многократного повторного чтения входа, позволяет увеличить разрешение на бит.

Задание угловой скорости[править]

На данном этапе, управление аппаратом организовано посредством задания угловой скорости вокруг каждой оси с пульта управления. Данные о положении джойстиков кодируются и передаются на приемник, находящийся на коптере. Микроконтроллер получает информацию с приемника и приводит ее к формату удобному для вычисления.

Futaba.JPG

ПИД-регулятор[править]

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

В каноническом виде уравнение ПИД-регулятора выглядит так:

[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см, увеличилась и площадка под электронику .Новые шасси должны хорошо аммортизировать жесткие посадки и обеспечивать более стабильный взлет. Электроника осталась прежней.



Создание адаптивного регулятора[править]

Моделирование[править]

Важной задачей для разработки эффективной системы управления является создание виртуальной модели коптера. На ней можно провести все испытания, не подвергая при этом опасности реальный аппарат. Модель была запрограммирована в среде SIMULINK, управлять ей можно, как и настоящим коптером — при помощи пульта. Первые виртуальные полеты

Программа пока работает не очень точно, это связано с тем что не вводились параметры реального аппарата.

Регулятор[править]

Здесь будет про фази-ПИД...

Алгоритм оптимизации[править]

Алгоритм swarm был написан Антоном Пшеновым.

Результаты[править]

  1. Данный проект был представлен на международной конференции школьников Сахаровские Чтения 2011, где удостоился специального диплома "за успешное продвижение в работе над перспективной темой".
  2. 15 Июня 2011г. трикоптер, совершил свой первый полет
  3. Первые фотографии с борта


Планы[править]

В дальнейшем планируется создать адаптивный (самонастраивающийся) ПИД-регулятор.

Публикации по теме проекта[править]

  • Веренинов И.А., Кузькин В.А. Разработка математической модели и прототипа трикоптера // Сборник трудов конференции "Неделя науки СПбГПУ", 2011 [направлено в печать] (prerint_v.01, prerint_v.02)

См. также[править]