Code Monkey home page Code Monkey logo

unmannedaerialvehicle's People

Contributors

li2s avatar nomonsters avatar pugacha avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

unmannedaerialvehicle's Issues

Начальная реализация САС

Согласно #3 нужно реализовать начальный шаблон системы.

Он должен в себя включать:

  • Управление двигателем через реле
  • Управление серво-приводом для выпуска парашюта
  • Принимать сигнал на срабатывание САС с другого контроллера

Выбор ДУС и Акселерометров

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

Корпус для GPS

Нарисовать и распечатать корпус для GPS

Размеры и подробности в project в ВК, потом надо сюда перенести

Описание радиоприемника

#13

  • Частота ШИМ около 45.5 Гц
  • Во времени имеют следующий порядок:
  1. Газ (скважность 900 - 1875 мкС)
  2. AUX
  3. Крен (Aile)
  4. Тангаж и рысканье одновременно (Elev и Rudd)

Про канал переключаетль вкл/выкл (Gear):

  • Вкл - длина импульса ШИМ больше 1800 мкС
  • Выкл - длина импульса ШИМ меньше 1000 мкС

Про канал газа

  • Сейчас 0 газа - 935 мкС

Корпус для STM32L4 Discovery

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

Обновление сборки

Сильно пересмотрел идею сборки. Все изменения в новом реквесте будут: vscode-include-path-change. Теперь для сборки необходимо иметь файлы ОС непосредственно в корне репозитрия. Так же добавил поддержку прикомпиленного варианта ОС для ускорения сборки. Скоро добавлю в вики. Скажите вам вообще нужно сейчас знать как там чего собирается для mbed?
@PugachA @Li2s

Проверка heartbeat в таймере

Стоит добавить проверку heartbeat в таймере, например чтобы он проверял раз 0.1 сек. Таким образом можно разгрузить main

Считать сигнал с приемника сигнала ДУ

Краткое описание: Пилот перемещает стики на пульте ДУ. Система считывает принятые приемником сигнала ДУ положения стиков и сохраняет их.

Основной поток:

  1. Пилот переместил один из стиков (тангаж, крен, рысканье, газ, доп канал)
  2. Приемник передает сигнал о перемещении в систему в виде сигнала ШИМ
  3. Система замеряет длину скважности каждого импульса, для каждого канала
  4. Система сохраняет значения скважности каждого сигнала в микросекундах для дальнейшей обработки.

Постусловия:
Система сохранила положение каждого стика пульта ДУ (в виде скважности ШИМ)

Технические детали:

Служат выполнению требования:

Перегородки для ERS

Нужно переделать перегородки для системы спасения, вырезать двери, навесить петли.
Текущие перегородки не подходят.
Нужно добавить стойки, на которых будут держаться пружины в сжатом состоянии

Калибровать пульт ДУ

Краткое описание: Система должна калибровать пульт, в зависимости от крайних положений стиков.

Предусловия:

  • Все триммиры пульта ДУ в 0, кроме газа (газ + 3-4 клика от крайнего нижнего, чтобы работал сценарий из #43 ).
  • Пилот перешел в режим калибровки пульта

Основной поток:

  1. Пилот перемещает все стики и доп переключатели пульта ДУ в их крайние положения
  2. Система запоминает максимальные и минимальные значения скважности ШИМ по каждому каналу отдельно. (На данном этапе пердусматривается хранить конфиг только для одного пульта ДУ)
  3. После того как пилот передвинул все стики в их крайние положения он отпускает их в 0. Газ тоже в 0.
  4. Пилот выходит из режима калибровки
  5. При выходе система сохраняет в энергонезависимую память считанные значения

Постусловия:
Пульт ДУ откалиброван. Крайние положения стиков записаны в системе

Альтернативный поток 1а

  1. Пилот в режиме калибровки, но не переместил никакие стики или переместил только часть.
  2. Значения для каналов, стики по которым не были передвинуты в крайнее положение будут:
    макс_скважность = 0, мин_скважность = 0. Т.о. работа системы будет некорректна.
  3. Система выдает сообщение об ошибке.
  4. Значения текущей сессии калибровки не записываются в энергонезависимую память

Технические детали:

Служат выполнению требования:

Доработать плату сенсоров

  • Сделать единый кабель подключения платы с датчиками (данные + питание)

  • (Опционально) Аккуратнее всё распаять, сейчас там лютая каша

ERS потеря связи с пультом ДУ

Краткое описание: Система должна выпустить парашют при потере связи с пультом ДУ

Предусловия:

  • Сигнал от пульта ДУ управления потерян более чем на 2 секунд.
  • Приемник сигнала не распознает его. Приемник перешел в режим FailSafe (предустановленный заводской режим: по каждому каналу выставляется такой ШИМ, который был при сопряжении пульта ДУ и приемника. Грубо говоря стики "ставятся" в положение на момент сопряжения)

Основной поток:

  1. Система (основная плата) распознает потерю связи с ДУ (Определяет, что на каком-то из каналов ШИМ стал меньше заданного, предположительно на канале газа)
  2. Система запускает таймер (фоном, остальное функционирование продолжается). Отсчитывает 2 секунд
  3. Основная плата сигнализирует о потере связи резервной плате использованием механизма heartbeat из #42
  4. Выполняется основной поток из #42 (Остановка движка, активация серво и т.д.)

Постусловия:
Парашют выпущен

Альтернативный поток 2а
2. Система запускает таймер (фоном, остальное функционирование продолжается).
3. До истечения 2 секунд появляется сигнал с пульта ДУ
4. Система продолжает функционирование в обычном режиме

Технические детали:

Служат выполнению требования:

Научиться определять уровень заряда аккумулятора

Думаю стоит научиться определять уровень заряда аккумулятора. Это может пригодиться например:

  1. Для определения хватит ли заряда, чтобы долететь до цели или до приземлится
  2. Если заряда аккумулятора мало, можно заранее выпустить сработать САС, чтобы потом не было проблем
  3. Если САС и и все остальное буду питаться от одного акк, заблаговремменно выпустить парашют

Cледует разделить логику класса на два. Один будет обрабатывать ШИМ. Второй будет отвечать за радиоуправление

Плохое решение. Показывает что следует разделить логику класса на два. Один будет обрабатывать ШИМ, мерить там всё PWМProccessor. Второй будет отвечать за радиоуправление RadioController и внутри себя использовать PWМProccessor

Originally posted by @PugachA in #52

Управлять сервоприводами с пульта ДУ

Краткое описание: Пилот с пульта управляет положением сервопривода в каждом канале

Предусловия: #13 - считывание данных с приемника

Основной поток:

  1. Система передает на сервопривод значение скважности по каждому каналу отдельно

Постусловия:
Сервопривод меняет положение соответственно стику

Технические детали:

  • Нужна калибровка для пульта. Т.е. мы перемещаем стики в крайние положения. Далее эти значения сохраняются. И как-то мапится этот диапазон на диапазон крайних положений сервоприводов. Но это только режим Direct. Для других режимов крайние положения стиков будут иметь другую семантику. Но однажды сохранив их в режиме калибровки мы можем потом использовать много где.

Служат выполнению требования:
#14

ERS радиоуправление

Краткое описание: Пилот отправляет с пульта ДУ сигнал на использование САС, система выпускает парашют

Предусловия: пилот отправил сигнал САС

Основной поток:

  1. Радиоприемник получает от пульта ДУ сигнал САС
  2. Приемник передает сигнал САС на резервную плату
  3. Резервная плата переключает ШИМ от основного контроллера, на свой ШИМ, который соответствует 0 оборотов двигателя
  4. Двигатель останавливается
  5. Резервная плата отправляет на сервопривод сигнал на открытие люка
  6. Сервопривод открывает люк

Постусловия:
Парашют выпущен

Технические детали:

  • Используем дополнительный ШИМ резервного контроллера, скважность которого соответствует 0 об/мин (935 мкС) скорости вращения двигателя
  • Для переключения сигнала с ШИМ основного контроллера на ШИМ резервного контроллера используем мультиплексор
  • Используем доп. ШИМ, т.к. если просто положить сигнальный провод на 0, двигатель останавливается слишком долго - 5 секунд

Служат выполнению требования:
#30 - про обработку сигнала с пульта ДУ

Сборка в Keil

Можно ли в Keil отделать папку со всем этим барахлом от папки с исходниками? Наверняка можно. Выши пулл реквесты невозможно ревьюить. Я буду их заворачивать пока тут не будет ответа, возможно или нет.

Распределение интеграторов по таймерам

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

ERS потеря связи с основным контроллером

Краткое описание: Система должна выпустить парашют при потере связи с основным вычислителем

Предусловия: Сигнал от основного вычислителя потерян более чем на 0.5 с (изменился/исказился т.е. стал невалидным)

Основной поток:

  1. Резервная плата переключает ШИМ от основного контроллера, на свой ШИМ, который соответствует 0 оборотов двигателя
  2. Двигатель останавливается
  3. Резервная плата отправляет на сервопривод сигнал на открытие люка
  4. Сервопривод открывает люк

Постусловия:
Парашют выпущен

Технические детали:

  • Используем дополнительный ШИМ резервного контроллера, скважность которого соответствует 0 об/мин (935 мкС) скорости вращения двигателя
  • Для переключения сигнала с ШИМ основного контроллера на ШИМ резервного контроллера используем мультиплексор
  • Используем доп. ШИМ, т.к. если просто положить сигнальный провод на 0, двигатель останавливается слишком долго - 5 секунд

Служат выполнению требования:
#29 - проверка HeartBeat в таймере (что бы это ни значило)
#24 - что мы вообще обрабатываем что-то

Апдейт библиотек Servo и RCChannel

Я думаю, что удобней на выходе с RCChannel иметь отклонение стика в процентах (условных единицах), а на вход Servo подавать градусы отклонения сервы. Это упростит работу с алгоритмами и исключит ошибки при пересчете из и в микросекунды.

Актуализировать репозиторий

  • Удалить остатки mbed
  • Перенести текущую бортовую сборку в master (Придется пройти через всю цепочку feature->develop->release->master)
  • Удалить неиспользуемые сущности

Добавить обработку heartbeat от основного вычислителя

Основной вычислитель (ОВ) должен отправлять сигнал на порт САС с периодом не больше 1сек. Это будет говорить о том, что он жив. Если ОВ в течении 1 секунды не прислал сигнал, будем считать что он мертв и должна сработать САС.

Начальная сборка БПЛА

  • Собрать планер
  • Закрепить сервоприводы
  • Установить двигатель
  • Установить основной вычислитель
  • Разместить САС с парашютом
  • Доработать хвост (сделать рули направлений)

Оценить частоты работы систем

Оценить какова частота опроса сенсоров, каналов управления, управления сервоприводами двигателем. Оценить быстрдействие контроллера для этих целей и возможности ОС. Исходя из этих данных выбирать и подход использования ОС

Реализоавть фильтры

Реализовать библиотеку с фильтрами, единую для всех платформ и положить в libraries

Платы для подключения электроники

Необходимо разаработать следующие платы:

  • PDB. К ней подключаются АКБ, регуль, 2 DC-DC для питания авионики
  • Sensor board. Должны быть разведены все разъемы для питания и подключения сенсоров. Делитель напряжения для чтения данных с флюгарки. Какие-то конденсаторы для ПВД
  • Servo board. Просто платка с кучей разъемов для подключения сервоприводов.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.