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

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

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

#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 КБ) 1240 просмотров

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

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

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

#17

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

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

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

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

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

#18

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

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

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

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

#19

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

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

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

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

#20

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

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

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

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

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

#21

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

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

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

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

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

#22

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

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

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

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

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

#23

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

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

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

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

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

#24

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

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

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

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

#25

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

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

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

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

#26

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

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

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

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

#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

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


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