Skip to content
Sergey edited this page Jul 26, 2013 · 1 revision

Todo

  • переставить моторы так, чтобы противоположные вращались в разные стороны
  • добавить ПИД по "вертикальному" углу
  • коэффициенты PID
  • прога для чтения логов
  • переход на arduino due
  • переход на arduino mega
  • использование mpu-9150
  • пофиксить джойстик (кнопка включения)
  • проверить, насколько хорошо работает XBee

Roadmap

  1. Улучшить качество стабилизации. Для этого: поправить коэффициенты PID (все меньше, I больше), использовать MPU-9150 (улучшит третий угол), дописать PID для третьего угла
  2. Переход на mega / due (должно быть несложно, код уже компилируется).
  3. Использовать барометр для поддержания высоты (примерно). Еще один ПИД, контролирующий force. Подумать над ролью джойстика в этом. Сумма (джойстик + результат из ПИД)?
  4. Использовать gps для автоматического полета и поддержания высоты. Для начала реализовать перемещение к заданным координатам по прямой линии. После полет по заданной траектории (последовательность точек, соединенных прямыми).

Для пунктов 2 и 3 понадобится переход на mega/due.

Рассказать

  1. Общая концепция + теория. Силы, моменты сил. Ускорение, скорость, координата. ПИД и его простое применение в регуляторе уровня воды. ПИД в применении к квадрокоптеру (что именно является входным и выходным параметрами).
  2. реализация микроконтроллеры avr, arduino, примеры задач, которые они могут решать (ввод/вывод, простые вычисления). Arm (нужно знать, что он более мощный, в нашем случае). Как данные передаются по проводу? (0 либо 1 кодируется 0 или 5v)
  3. (опционально) базовое представление о том, как работает микроконтроллер ("процессор выполняет инструкции, которые хранятся в памяти", не больше). Assembler, мне кажется, не нужен. Языки программирования (общая концепция: писать все в инструкциях людям не очень удобно, ключевые слова лучше). язык c. Функции (повторяющийся код), операторы, данные (типы данных). Выполнение начинается с main. Указатели особо не нужны. В проекте их почти нет, а быстро это с первого раза не понять (очень базово. Если по ходу не разберутся, придется потратить время на это). Немного о C++ (классы). Библиотеки как способ "не изобретать велосипед".
  4. "Язык arduino". Используем, потому что не привязан к конкретному железу (собирается как для avr, так и для arm, на разных платах). Setup, loop и их "настоящий вид". Примеры программ на arduino (мигание светодиодом, serial, analog read/write etc). Структура многофайлового проекта. Заголовочные файлы.
  5. Общая концепция проекта. Необходимые устройства (коптер, комп, джойстик). Рассказать, как данные передаются (данные накапливаются в буфере, когда =N, выполнение куска кода).
  6. (железо). Рассказать про ESC, трехфазную фигню.
  7. код для коптера. Что задает частоту (датчик)? Почему (нельзя допускать переполнений)? Проблемы с датчиками от invensense (документация по DMP херовая). Почему мы все же их используем (они дают готовый угол)? Зачем нужна высокая частота (например, правильный расчет производной)? Нарисовать график и показать, что программа посчитает не то, если частота будет недостаточной (можно нарисовать синусоиду и показать все нули. Коптер будет думать, что неподвижен, хотя на самом деле колеблется).

Учебные задачи

  1. помигать светодиодом на своей ардуине (должно работать у всех!)
  2. подключить барометр и выдавать его показания на pwm (небольшой диапазон), а также на serial.
  3. программа на qt/чем либо еще, которая будет общаться с arduino и включать светодиод по кнопке. То же самое, только с несколькими байтами. Сделать так, чтобы "мусор" в serial и потерянные байты не мешали работе (не должно произойти "сдвига")
  4. (Миронов, если захочет) MPU-9150. Выдать третий угол на pwm/serial.
  5. GPS. Подключить, разобраться с nmea (библиотечка). Какая точность? Какое время старта?
  6. те же задачи, но на mega/due

Действие по приезду (приезде?..)

  1. настроить интернет
  2. поставить всем участникам необходимое ПО (все будет скачано), собрать коптер
  3. рассказать все, что выше
  4. найти место для полетов
  5. попробовать полетать (можно раньше)
  6. распределить ардуины (хватит всем, более продвинутым - более крутые), задачи