Автономный квадрокоптер

Ваши интересы, хобби.
adiagnost
Автор темы
Сообщения: 408
Зарегистрирован: 04 май 2015, 15:46
Пол: мужской
Поблагодарили: 99 раз

Автономный квадрокоптер

#16

Непрочитанное сообщение adiagnost » 06 апр 2018, 17:24

Что дальше?
Нужно решить две очередные задачи - в ПЛИС выделить границы объектов, и, собственно, их координаты передать на микрокомпьютер для дальнейшей обработки.
Тут есть несколько трудностей:
- в определении границ объектов необходимо, как минимум, три очередных строки (по 640 бит бинарного изображения) держать постоянно в памяти для того чтобы использовать алгоритм Собеля (https://ru.wikipedia.org/wiki/Оператор_Собеля)
Упрощенно для бинарного изображения матрица для алгоритма Собеля вырождается в примитивный вариант 3х3:

XXX
XZX
XXX

где значение Z - "граничный ли это пиксел либо нет" определяется простым правилом:
"для того, чтобы средний пиксел из 9 в матрице 3х3 считался граничным, должны одновременно быть выполнены 2 условия: хотя бы один из окружающих (соседних) пикселов должен иметь то же значение, что и рассматриваемый (средний) пиксел и, одновременно, среди окружающих пикселов должен быть хотя бы один противоположного значения".
В принципе, можно даже не использовать DRAM память, а использовать оставшиеся логические ячейки плиски (как мы помним, в проекте сейчас задействовано около 1 тыс. ячеек, для периодического сохранения трех строк нужно 640х3 = 1920 ячеек ПЛИС). Ну, ещё будут какие-то задействованы для самих лог. операций, но, думаю, все равно должно хватить 5 тыс на "все-провсе"...
Хотя я забыл о второй задаче - нужно на плиске синтезировать какой-то интерфейс для передачи на распберри.
Сразу передавать (например, брать с того же старшего разряда "зеленого", а также синхро- сигналы и передавать это все - сильно сомнительно, что получится).
Даже если передавать по одному разряду на каждый пиксел (а собственно, так и надо для черно-белого изображения), нужно чтобы "адресат" (микрокомп) мог принять с такой скоростью (640 х 480 х 30 = 9216000 бит/сек, т.е., частота приема должна быть не менее 9,2 МГц). Пины миникомпа способны максимум на несколько килогерц, то есть на три порядка меньше..
Выход видится только один - синтезировать со стороны ПЛИС интерфейс SPI, скорость передачи которого достигает нескольких десятков МГц. Этого будет уже достаточно.
А в распберри изначально интегрирован интерфейс SPI.
Задача посложнее, чем две предыдущие, но - безусловно решаемая.
Нашел примерs синтеза SPI интерфейса для ПЛИС/
Например:
https://nikellanjilo.ru/?p=1935
Или вот (работает на 18 МГц):
https://sites.google.com/site/vanyambauseslinux/fpga/fpga-slave-modul-interfejsa-spi
Вообще в процессе коллеги спрашивали - чего я "прицепился" к камере OV7670? Ведь гораздо логичнее использовать спец. камеру для распберри. То есть, плиску логически (и аппаратно, естественно) включить между камерой и распберри. При этом, даже не придется задействовать внешнюю память для буферизации - все преобразования делать "на лету" - интерфейс камеры это, типа, позволяет.
Хотя интерфейс у неё посложнее
48278f.png
48278f.png (112.93 КБ) 1830 просмотров

Но тут 2 "но":
- не хочется "распускать" контактный шлейф камеры
- при получении преобразованного изображения на распберри уже не будет реального, а это не есть хорошо, так как выделение границ только один из алгоритмов, а предполагается ещё, например, цветвой анализ...

adiagnost
Автор темы
Сообщения: 408
Зарегистрирован: 04 май 2015, 15:46
Пол: мужской
Поблагодарили: 99 раз

Автономный квадрокоптер

#17

Непрочитанное сообщение adiagnost » 07 апр 2018, 09:16

В праздничные дни особо работать не рекомендуется, но "чуть-чуть" поразмышлять можно. :)
Так вот, - размышления на тему как в одной плисине на 6200 ячеек уместить все необходимое, привело меня к кардинальному решению.
А именно - есть у меня ещё одна отладочная плата с таким же точно чипом но, практически без "периферии":
Фото0066.jpg

По размерам раза в два меньше, чем первая. На ней нет никаких VGA, IR, внешней памяти (SDRAM), и т.д., ну, практически вообще ничего нет, однако, есть самое необходимое - непосредственно сам чип (точно такой же, как и на первой плате, т.е., на 6200 лог. элементов), JTAG и AS разъемы для его прошивки, 16-мегабитная флэш-память для сохранения конфигурации (прошивки), всякая мелочь в виде кварца, RESET-ов, разъемов и обвязки по питанию да выводы PIN.
Далее специалистам по вент. матрицам читать не рекомендуется :) - я собираюсь использовать вторую плиску.
Понимаю, что это - "из пушки по воробьям", но не стоит забывать, что у нас в очень большой степени ещё и обучающий проект, так что..
Взаимодействие между двумя плисинами на системном уровне организовать проще простого - общий клок и все!
На обеих платах одинаковые 50-мегагерцовые кварцы, сами чипы имеют встроенные множители по 2 шт. (так что спокойно можно работать на частотах до 200 МГц).
Далее - из массы вариантов взаимодействия необходимо выбрать наиболее оптимальный.
Например, вторая плиска принимает данные о бинарном изображении, выделяет границы и по SPI передает на одноплатник (Raspberry)...

adiagnost
Автор темы
Сообщения: 408
Зарегистрирован: 04 май 2015, 15:46
Пол: мужской
Поблагодарили: 99 раз

Автономный квадрокоптер

#18

Непрочитанное сообщение adiagnost » 08 апр 2018, 12:04

Всех - с Праздником!
Прежде чем идти дальше, попросили меня исправить неточности, ошибки, просто более подробно объяснить по предыдущему повествованию... Ну, вобщем, некоторые спецы просмотрели, сказали что "принципиально - все правильно", но - "есть, что подисправить.." :)
Чем пока я и займусь...

Аватара пользователя
Топтыжка
Сообщения: 8640
Зарегистрирован: 08 ноя 2012, 13:17
Пол: мужской
Семейное положение: свободен
Благодарил (а): 429 раз
Поблагодарили: 1220 раз

Автономный квадрокоптер

#19

Непрочитанное сообщение Топтыжка » 08 апр 2018, 13:41

Вообще ничего не понимаю из того, что ты пишешь. Но респект... уважаю знатоков (не из "кто, где, с кем"...
увы, всему на свете есть предел:
облез фасад и высохли стропила.
в автобусе на девку посмотрел,
она мне молча место уступила.

adiagnost
Автор темы
Сообщения: 408
Зарегистрирован: 04 май 2015, 15:46
Пол: мужской
Поблагодарили: 99 раз

Автономный квадрокоптер

#20

Непрочитанное сообщение adiagnost » 08 апр 2018, 14:12

Топтыжка писал(а):Вообще ничего не понимаю из того, что ты пишешь. Но респект... уважаю знатоков (не из "кто, где, с кем"...

Просто, в свое время "поразбрасывался камнями", и вот - пришло время "собирать" :)
На самом деле - просто, не все равно, в каком обществе будут жить мои внуки (как ни пафосно это звучит :) )
Все, что возможно - сделаем. Пусть один из нескольких десятков воспримет то, о чем я пишу - значит, уже все не зря...

downland
Сообщения: 35
Зарегистрирован: 07 апр 2018, 19:04

Автономный квадрокоптер

#21

Непрочитанное сообщение downland » 08 апр 2018, 19:46

adiagnost писал(а):Источник цитаты просто, не все равно, в каком обществе будут жить мои внуки

Как в Халфлайфе2? *facepalm*

adiagnost
Автор темы
Сообщения: 408
Зарегистрирован: 04 май 2015, 15:46
Пол: мужской
Поблагодарили: 99 раз

Автономный квадрокоптер

#22

Непрочитанное сообщение adiagnost » 11 апр 2018, 05:46

Прошу прощения, вышел на работу - а там накопилось.., приходится дома ещё "хвосты" по работе подбирать.. :) На проект времени пока нет.
Думаю, за эту неделю разгрести и продолжим..
downland писал(а):Как в Халфлайфе2? *facepalm*

Надеюсь, что все же получше.
Но занятия для желающих будут в это воскресенье (15 апреля), время - чуть позже уточню..

Аватара пользователя
Dark Pearl
Сообщения: 16636
Зарегистрирован: 08 фев 2008, 22:50
Пол: женский
Благодарил (а): 798 раз
Поблагодарили: 2215 раз

Автономный квадрокоптер

#23

Непрочитанное сообщение Dark Pearl » 11 апр 2018, 09:25

adiagnost писал(а):Источник цитаты Но занятия для желающих будут в это воскресенье (15 апреля), время - чуть позже уточню..

ждем
Ничего не получится из ничего, если ничего не делать

adiagnost
Автор темы
Сообщения: 408
Зарегистрирован: 04 май 2015, 15:46
Пол: мужской
Поблагодарили: 99 раз

Автономный квадрокоптер

#24

Непрочитанное сообщение adiagnost » 12 апр 2018, 18:13

Очередные занятия проведем в воскресенье (15.04) в 13:00...

adiagnost
Автор темы
Сообщения: 408
Зарегистрирован: 04 май 2015, 15:46
Пол: мужской
Поблагодарили: 99 раз

Автономный квадрокоптер

#25

Непрочитанное сообщение adiagnost » 23 май 2018, 07:53

В настоящее время происходит смена формата - на github созданы соответствующие репозитории, работа над проектом будет вестись коллективно. В настоящее время ведется их наполнение кодом. Как будет готово, рег. данные и ссылки будут выложены. Все желающие смогут присоединиться к проекту (так как есть желающие издалека, в том числе из дальнего зарубежья).
Плановых (по расписанию) встреч больше не будет, а местных участников (с Новочеркасска) будем собирать только для конкретных этапов испытаний по результатам предыдущих разработок. В начале июня предстоит первое испытание с винтами (без винтов уже отлажено)...

Аватара пользователя
мike
Сообщения: 17115
Зарегистрирован: 31 окт 2007, 17:36
Пол: мужской
Благодарил (а): 3013 раз
Поблагодарили: 2317 раз

Автономный квадрокоптер

#26

Непрочитанное сообщение мike » 01 июн 2018, 10:13

off
Скрытый текст: Показать
Изображение
Новый выпуск журнала Тайм. Он посвящён дронам. Для обложки почти тысяча аппаратов в утреннем небе составили дизайн обложки.
У человека две жизни, и вторая начинается тогда, когда мы понимаем, что жизнь всего одна.(с)

adiagnost
Автор темы
Сообщения: 408
Зарегистрирован: 04 май 2015, 15:46
Пол: мужской
Поблагодарили: 99 раз

Автономный квадрокоптер

#27

Непрочитанное сообщение adiagnost » 15 сен 2018, 08:22

К сожалению, намеченные на июнь испытания с винтами отложились аж на 3 месяца - непредвиденные обстоятельства (всех и без того малочисленных участников) подвели - каникулы, отпуска, юга, дачи-огороды, ремонты и проч. :) .
К тому же - остался только 1 упорный участник - школьник, с которым мы занимаемся у меня дома - где-то ещё смысла нет.
Профи, конечно, помогают, например, адаптация прошивки полетного контроллера и вся силовая часть сделаны практически полностью одним из них.
На "верхнем" уровне системы управления также есть сдвиги (правда, в сторону усложнения) - одним из профи доказано и наглядно показано, что для распознавания образов недостаточно "тупого" перебора по базе данных, вернее, достаточно, но уж очень долго - для распознавания простого квадратного листа 1 м х 1 м нужно не менее 10 различных ракурсов с различием не менее чем 25%. В общем, оперативное время на такое распознавание - порядка полутора минут, что чересчур много. Поэтому придется использовать элементы ИИ (искусственного интеллекта) - встроенную в OpenCV библиотеку работы с нейросетями со всеми этими интеграциями, обучениями и прочими делами, присущими нейросетям. Это, конечно, интересно (с одной стороны), однако, проект и так уже довольно сложный, но по другому явно не получится - нейросети позволят на пару порядков сократить время распознавания.
Также ПЛИС, как показали опыты не эффективна в распознавании и будет использоваться в связке с "мини - тепловизором" на основе датчика amg8833. Это относительно бюджетный вариант - матрица всего 8 х 8, максимальная частота обновления картинки 10 Гц.
Собственно, вот даташит:
https://www.farnell.com/datasheets/2058257.pdf
А вот описание:
https://www.rlocman.ru/review/article.html?di=276975
С помощью интерполяции можно добиться разрешения 32 х 32, однако, это будет "неправдивое" разрешение, а смоделированное программно. А вот чтобы добиться правдивого (по прикидкам - вплоть до "стандартных" 640 х 480 за 1-2 секунды), нужно использовать дополнительные условия, которые есть у нашего проекта - способность передвижения относительно рассматриваемого объекта. Вот здесь-то ПЛИС будет максимально эффективна - для обработки больших однообразных потоков меняющейся информации в реальном режиме времени.
И у нас появляется дополнительный признак распознаваемого объекта - его температура (даже её "распределенно - площадное" значение)
Сейчас аппарат выглядит так:
IMG_20180915_063008.jpg

Незамысловатое крепление изолентой (синяя изолента - наше все! :) ) - временное, так как нужно будет производить окончательную балансировку. А пока не встроены: видеокамеры с передатчиком, миникомпютер с ПЛИС и тепловизором, GPS навигатор, ультразвуковые датчики расстояния, лазеры.
Ещё из пока не решенного - в проекте изначально не предусматривалось управление стандартными пультами с соответствующими радиоканалами, поэтому для настройки "без винтов" пришлось полопатить исходные коды прошивки, найти и подменить данные от радиоприемника (если кому интересно, - файл Rx.cpp прошивки Multiwii).
А управление подразумевалось по Wi-Fi от ноутбука (можно со смартфона) со своей соответствующей программулиной. Далее, - миникомпьютер на квадрике принимает по Wi-Fi управляющие сигналы и передает их на полетный контроллер. (Альтернатива, кстати, - автономный полет под управлением миникомпьютера, что не противоречит совместному использованию режимов).
Так вот, - пока не сделана прога для ноута (смарта) и не определена связь "миникомп - полетный контроллер". Хотя и есть уже встроенные интерфейсы и там и там I2C и SPY, однако, видимо (в учебно - познавательных целях) задействуем шину CAN, для чего придется задействовать внешние CAN-контроллеры со стороны миникомпьютера (в Raspberry нет встроенной шины CAN), тогда как в Arduino DUE (который у нас является полетным контроллером) - есть.
Кстати, настройка производится довольно легко с помощью спец. приложения для Multiwii - MultiWiiWinGUI:

GUI.png

Так что работа возобновилась - буду добавлять по мере "продвижения" :)

adiagnost
Автор темы
Сообщения: 408
Зарегистрирован: 04 май 2015, 15:46
Пол: мужской
Поблагодарили: 99 раз

Автономный квадрокоптер

#28

Непрочитанное сообщение adiagnost » 03 окт 2018, 13:33

Еще из верхнего уровня – заказан аппаратный акселератор сверточных нейронных сетей Movidius от Интел для встраиваемых роботизированных систем на базе специального проца myriad https://software.intel.com/en-us/neural-compute-stick. Сверточные сети считаются лучшими для рсапознавания изображений.
Вроде, 100 гигафлопс они обещают. А это уже вполне серьезно.
Он производит сверхбыстрые параллельные вычисления по перемножению матриц, а, собственно, для прохода слоев нейросети это самое главное..
Жалко, что не применяется при обучении сети (а это львиная доли времени на разработку). Зато есть прямая поддержка ОС Raspbian для raspberry…

Аватара пользователя
leomond
Сообщения: 17018
Зарегистрирован: 21 май 2009, 22:12
Пол: мужской
Благодарил (а): 204 раза
Поблагодарили: 1476 раз

Автономный квадрокоптер

#29

Непрочитанное сообщение leomond » 03 окт 2018, 16:27

Фюзеляж зачотный :))
Либерализм это иудаизм для гоев (с) Шарон

adiagnost
Автор темы
Сообщения: 408
Зарегистрирован: 04 май 2015, 15:46
Пол: мужской
Поблагодарили: 99 раз

Автономный квадрокоптер

#30

Непрочитанное сообщение adiagnost » 03 окт 2018, 17:40

leomond писал(а):Фюзеляж зачотный :))


Ага, с фикспрайса, по-моему, колобашка... :)
А вообще, - все равно ещё центровать по весу, а потом хотим корпус прикинуть и чертежи для 3Д принтера подготовить.
Вроде, даже на этом форуме кто-то предлагал услуги по 3д - печати..
Хотели взять принтер, однако после изучения вопроса, оказалось, что более - менее нормальный порядка $500, пока нам столько печатать не надо.. :)


Вернуться в «Увлечения»