Математика для программиста

Автор темы demetrius2003 
ОбъявленияПоследний пост
ОбъявлениеРекомендации по использованию теха в нашем форуме15.04.2017 21:40
ОбъявлениеПравила и принципы форума «Высшая математика»28.10.2009 15:17
ОбъявлениеВычисление параметров смешанной модели15.11.2017 16:57
25.02.2019 20:52
..
Цитата
zklb (Дмитрий)

вы с кем разговариваете?

С ТС. А вы?..
25.02.2019 21:52
хм
Цитата
alexo2
Цитата
zklb (Дмитрий)

вы с кем разговариваете?

С ТС. А вы?..

странно спрашивать, если я вам вопрос и задавал. интересно, как ваша неуместная бахвальба и сыпанье аббревиатурами поможет ТС разобраться в вышке?
25.02.2019 23:11
...
Цитата
zklb (Дмитрий)
Цитата
alexo2
Цитата
zklb (Дмитрий)

вы с кем разговариваете?

С ТС. А вы?..

странно спрашивать, если я вам вопрос и задавал. интересно, как ваша неуместная бахвальба и сыпанье аббревиатурами поможет ТС разобраться в вышке?
Хочу сказать, что ничего сложного нет, было бы желание.
Естественно, если он действительно шарит как программер.
Я ещё видео выложу, как большой управляет маленьким коптером. Пока не сняли. Погода нелётная...
Кстати, о криптографии, - как уже говорил ранее, если для большого коптера мы сами создавали прошивку полетного контроллера, то мелкий (syma, сантиметров 20 по максимальному размеру) был уже в сборе - штатный, китайский. И, как и положено, - с вытравленными даже надписями на микрухах, с "невыдергиваемыми" прошивками.smile
Но, у него имеется видеокамера (хоть и "хиленькая", но все же.) Управление - либо с пульта радио, либо со смартфона по wi-fi. Видеопоток - также на смартфон.
Родилась идея - поуправлять мелким коптером мозгами крупного прямо в полете. Вначале удалось взломать wi-fi стационарно (благо, оказался старенький алгоритм шифрования WEP). Затем, "для чистоты эксперимента" - перехват управления прямо в полете именно мозгами большого коптера и подчинение командам уже с большого коптера (на такой взлом и перехват управления - порядка 70 секунд времени, несколько тысяч сеансов "рукопожатия"smile). Обратная связь - видеопоток с камеры мелкого, перехваченный на большой...
Так что далеко не Боги горшки обжигают..smile



Редактировалось 2 раз(а). Последний 26.02.2019 00:32.
03.03.2019 17:19
Администраторов тут, видимо, нет...
Ещё используем минитепловизор (матрица 8х8). Баночка с водой имитирует разогретый движокsmile.
На двух картинках - вид с камеры (чередующийся для наладки с предобработанным цветовым фильтром на желтую метку кадром) и вид с тепловизора. Дополнительный фактор для распознавания.
Кстати, для интерполяции в более-менее "нормальную" тепловую картинку (а не 8х8) пришлось применить фильтр Ланцоша...
https://www.youtube.com/watch?v=kUKDmtVScmk
16.03.2019 10:03
Администраторов по-прежнему нет...
Примерно год назад игрались с плисинами (FPGA).
Цель была - предобработка видеопотока от одной из камер дрона простенькой, но пригодной для этих целей OV7670, а именно, - перевод в черно-белое изображение и выделение границ объектов. Далее, обработанный таким образом поток должен был передаваться в следующие алгоритмы уже верхнего уровня. Вся прелесть использования ПЛИС именно практически в он-лайне (для наших целей - с частотой не менее 20 кадров в секунду). Без их использования пришлось бы напрягать мозги основных вычислителей на эти, вроде бы, "не сильно сложные" но все равно ресурсно-затратные алгоритмы. В принципе, и чисто программно, OpenCV с этой задачей неплохо справляется, но грузит ядра вычислителя более чем наполовину...
Использовали алтеровские FPGA Cyclone IV (с максимальной частотой, обеспечиваемой двумя делителями 200 МГц, на 6200 элементов - предварительные расчеты показали, что таких характеристик должно хватить на поставленную выше задачу).
Для отладки нужен был вывод результатов на монитор (которого в дроне не будет по понятным причинам). Пришлось изучить интерфейс камеры по даташиту, - оказался довольно простым, - в двух байтах передается информация о цвете каждого пиксела в несколько урезанном виде RGB565 - самый "полный" из всех возможных режимов, т.е., как "запхнуть" инфо о цветности в два байта (16 бит)? - решено просто - красный и синий урезаны до 5 бит, зеленый - до 6. Ну, ещё, конечно, стробы горизонтальной, вертикальной развертки и клок самого кадра. Собственно, и всё..smile. Затем - найти схему, изучить VGA-интерфейс и "на коленке" быстренько из имевшихся резюков, даже не паяя, а просто скручивая, "изобразить" резисторный делитель для VGA. Получилось куча проводов (интерфейс VGA - то аналоговый..) Ну, и, конечно, "подучить" сам язык для плисок Verilog и среду для программирования алтеровских чипов Quartus.
Тогда ещё не писали видео, поэтому запилю коллаж из трех фоток - собственно наладочная плата с чипом плисины с камерой и "собранным"smile делителем, схема самой резисторной сборки "наколенного" исполнения для VGAsmile и непосредственно результат...
https://a.radikal.ru/a21/1903/11/73c46d8781a5.jpg
Это был период, когда мы не хотели использовать нейросети, а "бодяжить" распознавание "своими силами" и в основном алгоритмами с четкой логикой. Однако, в итоге, залезли в такие "дебри", что поняли - без "нечетких" алгоритмов не обойтисьsmile
Так в итоге и пришли к "стандартным" нейросетевым пакетам, благо, примерно в тот же период гугл открыл коды для своего tensorflow.
Однако, первые же эксперименты на встраиваемых одноплатниках (микрокомпьютерах с показателями - 4 ядра по 1,6 ГГц, 1 ГБ оперативки) показали, что даже задача простого категорирования объектов решается неприемлемо долго - один кадр в секунду, и при этом грузит ядра почти на 100%. Нам нужно было, как минимум, в десять раз быстрее...
Тут как никогда кстати оказался выпуск относительно бюджетного решения для встраиваемых систем ускорителя нейросетей от интел..smile
Насколько я понимаю, все что он делает - это очень быстро работает с матрицами - умножение и сложение (собственно, в этом плане похож на видеокарту), однако обеспечивает 100 Гфлопс при потреблении менее 1 Вт. При прохождении слоев сверточной сети именно операции с матрицами (наложение ядер(фильтров) самое ресурсозатратное "мероприятие"..
Кстати, ДАРПА для новейших истребителей F35 объявила тендер на систему распознавания целей, там, в частности, есть интересное требование, которое мы "почти" покрываемsmile - удельная производительность. Им необходимо 25-50 Гфлопс/Вт. У нас сейчас - 20...biggrin



Редактировалось 1 раз(а). Последний 16.03.2019 10:30.
17.03.2019 07:23
Администраторов по-прежнему нет...
Немного о "нижнем" уровне - полетном контроллере.
Сейчас у нас две разновидности - на базе arduino due и stm32f103.
В принципе, по функционалу они равнозначны и с большим запасом соответствуют решаемым задачам - получение и обработка данных с датчиков (барометр-высотомер, акселерометр-гироскоп - 2 шт. и 2 независимых канала для надежности, магнитометр-компас, gps), управление двигателями коптера посредством ШИМ-регуляторов, выполнение внешних команд по радиосигналу (в управляемом режиме) или от системы управления верхнего уровня (в автономном режиме).
Прошивки для обоих контроллеров созданы "по мотивам" на базе адаптации довольно известной multiwii.
При этом для ардуинки использовалась её собственная среда разработки (такой себе урезанный с++), для stm - eclipse и тоже с++.
Отладочное и настроечное ПО - multiwiiWinGUI, на гитхабе есть его исходники. Его пришлось адаптировать в MS VisualStudio на c#. Его, кстати, видно на видео об отрыве винтов. Тогда для наладки связь была ещё по последовательному интерфейсу (а не по каналу радио).
Ещё один коллаж - как мы искали место в коде (для дуе), в котором непосредственно выдаются команды посредством ШИМ на регули движков. Там, собственно, должно быть понятно - непосредственно само настроечное ПО (WinGUI), место в коде, где произведена подмена вычисляемых значений на константное (наше) и соответственно, то что увидели на входах регуляторов ШИМ посредством логического анализатора - заданную ширину импульсов:
https://c.radikal.ru/c24/1903/97/24e0908969ea.jpg



Редактировалось 2 раз(а). Последний 17.03.2019 07:42.
17.03.2019 15:13
Администраторов по-прежнему нет...
А это - подключение GPS - приемника (для любителей повычислять координаты - перед тем как плеваться в консоль, прога применяет смещениеbiggrin)
https://www.youtube.com/watch?v=fdC_D2eXbtA
17.03.2019 15:59
Администраторов по-прежнему нет...
интересноbiggrin



Редактировалось 9 раз(а). Последний 18.03.2019 18:55.
Извините, только зарегистрированные пользователи могут публиковать сообщения в этом форуме.

Кликните здесь, чтобы войти