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

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

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

#31

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

Вот это действительно интересно - на глубокое обучение сверточной сети обычно тратится уйма времени. А это я не знал:

Самое главное, наверное, заключается в том, что самые большие сверточные нейросети, обученные для одних задач распознавания образов, можно модифицировать, приспособить для родственных задач распознавания образов, слегка или совсем слегка их доучив. Причем под «совсем слегка» понимается и то, что такое обучение не требует много времени и что такое дообучение не требует большого количества новых обучающих данных (это, может быть, еще более важно). За счет этого в интернете стали появляться так называемые зоопарки сверточных нейронных сетей, откуда исследователи могут скачать предобученную в течение многих дней или недель и очень хорошо работающую сверточную нейронную сеть определенного типа и доучить такую сеть для частных задач, которые их интересуют.

Сам материал:
https://postnauka.ru/video/66872

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

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

#32

Непрочитанное сообщение adiagnost » 04 окт 2018, 10:47

Пока прибор в пути, посмотрел примеры из зоопарка к мовидиусу. Самый подходящий (причем, практически без изменений и дообучений) это проект video_objects. Из ридми (гугл - переводчик):

Этот проект использует SSD Mobile Net для распознавания и классификации объектов для уличной камеры.

Сеть уже обучена. Изменения коснутся только того, что в готовом примере используется видеопоток не от камеры, а из видеофайла, а также - отрисовывается GUI с выделенными объектами (сам GUI в нашем проекте, естественно, не нужен).

screen_shot.jpg
screen_shot.jpg (14.08 КБ) 1105 просмотров


Остальное - то что нам нужно - по нескольким десяткам категорий ("человек ", "животное".... , "автомобиль" и т.д.). Причем, насколько я понял, некоторые категории ещё подразделяются, например, для человека - пол, возраст. Для авто - цвет - белый, красный, черный и т.д. Животные - собака, лошадь, кошка и т.д.
Дальше - дело техники - удерживать нужный объект(ы) в поле зрения, действовать по заложенной программе и т.д.. В общем, сеть интегрируется в нашу систему, и дальше уже наше ПО верхнего уровня будет работать.

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

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

#33

Непрочитанное сообщение leomond » 04 окт 2018, 12:41

а будет ли происходить такое в процессе обучения?
phpBB [video]
Либерализм это иудаизм для гоев (с) Шарон

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

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

#34

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

leomond писал(а):а будет ли происходить такое в процессе обучения?


Никто не застрахован.. :)
Обучение сети (а с ней и всего верхнего уровня) происходит вообще-то не на "носителе", то есть, "полу- теоретически" - долго рассказывать...
К огибанию препятствий и действиям в аварийных (критических) ситуациях вообще не имеет никакого отношения - это две разные системы, приоритет - у критичной, естественно.
Есть такое подозрение, что ПР тупо подставили (как в безветренную погоду далеко не самый глупый дрон "привели" в стену - это умудриться надо! - он "упрется" всеми своими шестью винтами :D. Ну, либо.. специально сделать )

Аватара пользователя
Дионис
Сообщения: 25633
Зарегистрирован: 15 сен 2013, 16:04
Пол: мужской
Езжу на: двустоповый опорно-двигательный аппарат
Благодарил (а): 10896 раз
Поблагодарили: 1827 раз
Контактная информация:

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

#35

Непрочитанное сообщение Дионис » 04 окт 2018, 16:55

Вот, вот ... "распознавание пол, возраст" ... а потом штрафы за переход на красный приходят. :sorry:
Есть куда стремится - распознавать конкретных людей из базы данных. и бомбить голубинным помётом.
У меня нет принципов — приспособляемость ко всему вот мой принцип.
У меня нет закона — самосохранение мой закон.
У меня нет ни жизни, ни смерти — вечность для меня жизнь и смерть.

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

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

#36

Непрочитанное сообщение adiagnost » 06 окт 2018, 07:18

Дионис писал(а):Есть куда стремится - распознавать конкретных людей из базы данных.

В zoo есть сети и по распознаванию лиц конкретных людей.
Если надо, прогоняется по нескольким сетям - первая категорирует все объекты на изображении, на вход второй, в итоге, подаются только, скажем, распознанные автомобили на белом фоне (или люди-человеки), а эта (вторая) сеть заточена под марки авто (под конкретных людей из базы). Одновременно со второй или опять же последовательно - после второй подается на вход сети заточенной под номера и т.д.
Или все это может делать одна многослойная сеть. Интересно то, что нет никаких четких (и уж тем более математических) рекомендаций, как будет наиболее эффективно в каком-либо конкретном случае.
Кстати, "усредненная" сеть для решения конкретных жизненных задач состоит из нескольких десятков слоев в среднем по 10 ядер (фильтров) на слой. Например, одна из сетей по распознаванию авто и номерных знаков содержит 36 слоев.
Ребята, тестировавшие мовидиус на этой сетке получили результат более 90% в городских условиях четырехполосной дороги за ~ 100 мс на картинке 800 х 600.
Для сравнения - четыре ядра распберри (каждое по 1,2 ГГц) будут обсчитывать один цикл порядка нескольких десятков секунд да ещё при 100% загрузке. Естественно, оперативное время теряется..
Интересно также, что такая настроенная и обученная сеть (слои и фильтры) "весит" всего несколько кБ.

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

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

#37

Непрочитанное сообщение adiagnost » 08 окт 2018, 21:23

Интересно, у них тоже бабло пилят под видом новейших разработок?
Дарпа представило промежуточный этап - потрачено уже около $1млн., как-то не впечатляет по такому бюджету:

https://www.youtube.com/watch?time_continue=160&v=LaXc-jmN89U

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

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

#38

Непрочитанное сообщение adiagnost » 14 окт 2018, 20:22

Пока ожидаем прибытия приборов - ускорителя сетей и батареи (один акк. из двух навернулся), занимаемся потихоньку верхним уровнем.
Налажен обмен с AMG8833 (мини- тепловизором), однако, во-первых, ПО, которое с ним идет "из коробки" необходимо допиливать - пока видим только, к примеру, разогретый процессор или кружку с горячим кофе с расстояния 10-20 см. А необходимо - человека с расстояния до 7 м. Хотя, насколько я понимаю, при расстоянии 7 м человек "поместится" в 1 пиксель. :)
Во-вторых, хорошо бы сделать что-то вроде объективчика для увеличения расстояния действия . Однако, при изучении вопроса оказалось, что для инфракрасного излучения необходимы специальные линзы - обычное стекло практически не пропускает инфрарэд. Такие линзы делают из германия, кремния, ещё там из чего-то и найти их не просто. Хотя, интересно, что отражающая часть обычного зеркала практически полностью отражает инфракрасное излучение (именно поэтому материалы для утепления , как правило, имеют зеркальный отражающий слой). Теоретически, можно было бы смастерить что-то вроде зеркального телескопа- рефлектора на основе вогнутой зеркальной линзы :)
А также, завалялся тут у нас комнатный syma не помню уже точно какой - судя по виду, что-то типа такого:
syma.jpg
syma.jpg (16.68 КБ) 623 просмотра

с камерой (с какой-то очень хиленькой, типа ov7670),сам квадрик чисто комнатного исполнения - сантиметров 20 по диагонали и весом грамм 200-300 (на улице его сдувает даже в несильный ветер - проверено :) )
Тут интересно другое - управляется он по wi-fi со смартфона или от пульта по радиоканалу.
Будем делать взаимодействие между дронами.
Вернее, в полном смысле взаимодействия не получится - просто "мелкий" "большому" будет слать картинку с камеры по wi-fi, а большой - управлять мелким по радиоканалу, хотя все элементы обратной связи присутствуют.
Причем, для управления будем использовать плату из штатного пульта "мелкого", которую установим на "большой", вместо стикеров джойстика пульта будет задействовано 2 канала ЦАП arduino due (нашего полетного контроллера) - стикеры в итоге задают именно уровень напряжения (вернее 2-х напряжений - по осям X и Y - уже разобрали пульт и поняли как он работает). А дальше - по радиоканалу - управляющие сигналы на мелкий - вроде метров до 50 от пульта работает, также должно быть и при удалении одного дрона от другого.
Осталось придумать логику управления :) ...
В идеале было бы так - большой доставляет мелкого в заданный район на себе (он сидит как жук сверху :) - электромеханические микрозацепы не проблема), далее - запускает его прямо в воздухе, и у него появляется ещё один "мобильный глаз", которым он управляет..

Аватара пользователя
Дионис
Сообщения: 25633
Зарегистрирован: 15 сен 2013, 16:04
Пол: мужской
Езжу на: двустоповый опорно-двигательный аппарат
Благодарил (а): 10896 раз
Поблагодарили: 1827 раз
Контактная информация:

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

#39

Непрочитанное сообщение Дионис » 15 окт 2018, 16:50

На самообучение его пустите?

Пофлужу немного:
https://nplus1.ru/news/2018/10/13/prancing-bot?utm_source=yxnews&utm_medium=desktop
Разработчики из Google Brain представили среду для обучения искусственного интеллекта, в которой созданный бот модифицирует собственное тело для лучшего (но при этом экономичного) выполнения задания. Для преодоления препятствий боту пришлось увеличить толщину задней ноги для более простой навигации.

Скрытый текст: Показать
Изображение


А так же
Инженеры из Дании и Канады превратили рой (15) дронов в интерактивный экран, которым можно управлять с помощью жестов, например растягивать или формировать фигуры из полотна образованного дронами.

https://nplus1.ru/news/2018/10/15/griddrones
Скрытый текст: Показать
Изображение


Мне кажется он просто дёргает один дрон вверх и вниз, а прочие просто повторяют его координаты в пространстве, или я не прав?
У меня нет принципов — приспособляемость ко всему вот мой принцип.
У меня нет закона — самосохранение мой закон.
У меня нет ни жизни, ни смерти — вечность для меня жизнь и смерть.

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

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

#40

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

Дионис писал(а):Мне кажется он просто дёргает один дрон вверх и вниз, а прочие просто повторяют его координаты в пространстве, или я не прав?


Скорее всего где-то рядом есть комп, с которым связаны все дроны. Они посылают свои координаты на комп, тот обсчитывает и управляет каждым в отдельности в цикле по заложенному алгоритму, либо при управлении в он-лайне.
Например, алгоритм повторения за каким-то конкретным дроном (который "дергает" оператор)
Например, даже обычным вайфаем можно 50 раз в секунду передавать одно сообщение на 30 байт - для каждого дрона по два байта, содержащие команду на его перемещение в данный конкретный момент (самый примитивный вариант). А каждый дрон принимает этот фрейм и знает (заранее настроен), в каких конкретно байтах содержится указание именно ему.
В этом смысле даже догадываюсь, почему дронов именно 15 - видимо, управляющий компьютер 8-миядерный с 16-тью потоками (одно ядро для системы все же надо оставить.. :) )

Отправлено спустя 24 минуты 14 секунд:
Прочитал более внимательно:
управление всем роем в целом обеспечивается внешней системой захвата движений. Она состоит из высокоскоростных камер, закрепленных по периметру комнаты и отслеживающих положение светоотражающих маркеров на дронах, а также на большом и указательном пальцах пользователя
В любом случае - управление внешнее.

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

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

#41

Непрочитанное сообщение adiagnost » 16 окт 2018, 19:08

Интересную задачку пришлось решить (пока наполовину) для перехвата видео от нонэйм камеры мелкого нонэйм же квадрика по wi-fi - дело в том, что не известен был ни протокол обмена, ни, естественно пароли, ни метод шифрования (а он есть). У квадрика вообще даже маркировка всех чипов вытравлена. А специальное приложение, устанавливаемое на смартфон, уже имеет все необходимые настройки, которые оттуда никак не вытянуть.
Известно было только имя сети - да и то - чисто вычислено, в момент включения квадрика просто появлялась ещё одна сеть :)
Но этого, а также того, что запускать сеть на квадрике мы могли сами в любой нужный нам момент, оказалось достаточно для использования Aircrack-ng, набора прикольных тулсов для линуха: https://kali.tools/?p=515
Как раз оказалось, что они на дебиане работают, поэтому с помощью малины, переведя её вайфай - карту в режим монитора, удалось подобрать пароль минут за 10-12 (он оказался динамически неизменным, что также оказалось очень даже кстати).
В общем - хакнут пароль и ключи WPA (хорошо, что не WPA2, что было бы на порядок сложнее, хотя, как я понял, и это возможно за разумное время), и на настоящий момент обладаем непосредственно нешифрованными данными из пакетов передачи видео.
Однако, остается ещё вторая половина задачи - понять, как их интерпретировать.
Самый "тупой" и в лоб - зная угол обзора камеры (который легко вычислить по маркерной картинке, по ощущениям градусов 50-60) и разрешение камеры (максимум 640х480), используя разлинованную прямоугольную картинку 640х480 с подкрашенными как нам надо квадратиками, и поместив её на таком расстоянии от камеры, чтобы она покрывала весь угол обзора, вычислить конкретные битовые адреса каждого пиксела камеры... :)

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

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

#42

Непрочитанное сообщение adiagnost » 27 окт 2018, 11:26

Прибыл ускоритель сетей:
Фото0074.jpg

На фото, кстати, попал и подключенный тепловизионный датчик..
Нарыл, вроде, рабочий вариант:
https://www.pyimagesearch.com/2018/02/12/getting-started-with-the-intel-movidius-neural-compute-stick/
Будем потихоньку разбираться...

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

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

#43

Непрочитанное сообщение adiagnost » 29 окт 2018, 10:43

На днях приступаем к этапу общей сборки.
Для movidius не подошла ОС raspbian jessy (с гитхаба все клонировали, но make собрать не может), он просит установить raspbian stretch. Естественно, этого мы делать не будем - слишком много уже сделано на распберри на этой оси другого нужного. Поэтому для нейросетей выделим отдельный миникомп - "апельсинку" - (Orange Pi PC2). Он даже чуток попроворнее распберри будет - 1,6 ГГц по ядрам против 1,2 у малины при той же оперативке (1 ГБ). Свяжем по ethernet распберри с соответствующим ПО. На апельсике, скорее всего, будет ось Ubuntu - под неё, вроде, лучше с мовидиус работается. Правда, камера для апельсина - 2 Мп против 5-ти у малины, но для наших задач пойдет с запасом - все равно ещё придется делать компресс кадров перед отправкой в нейросеть.. То есть, апельсин будет заниматься одной единственной задачей - прогон по нейросети изображения с его камеры с ускорением мовидиусом и передачей в распберри результатов распознавания. Наверное, так будет правильнее, - а то у малины итак много других задач...
Поэтому, пока ещё все разобрано перед окончательной подгонкой и сборкой, можно восстановить некоторую хронологию событий, упущенную мной ранее (в чем меня недавно уличили). А именно, - как прошла отладка прошивки контроллера (помним, что у нас это arduino due). При этом, какие-то фото и скрины у меня сохранились ещё с весны, когда в основном это делалось, какие-то я буду делать в ходе "повествования" :) - благо все пока "раскинуто" можно повторить все шаги - когда соберем, уже подробно расписать не получится по понятным причинам.
Итак, в наличии у нас были исходные коды multiwii - универсальной прошивки для массы различных контроллеров (в основном, ардуиновских), скачанные с гитхаба. Относительно недавно, один из разработчиков прошивки любезно добавил в неё и ардуино дуе.
Однако, у нас не совсем тривиальная задача - как не имея хотя бы какой-нибудь стандартный пульт управления (с джойстиками там, радиоканалами и остальными "делами") и соответствующим приемником на квадрике , наладить управление?
Вернее, как наладить управление более-менее в общих чертах было ясно - по вай-фай или 4-канальному приемо-передатчику, который тоже есть в наличии, но как это "привязать" к прошивке?
Конфигурирование прошло "безболезненно" и без особых проблем - в файле config.cpp просто раскомментировать все что связано с нашим контроллером и использующимися датчиками.
Для начала надо было вообще определить, куда (на какие пины) что-то передается на контроллере (ардуино дуе) для управления регуляторами движков, так как по тексту кодов в самых разных местах встречались разные обозначения пинов. Со второго раза удалось вычислить - это пины 34, 36, 38 и 40, которые находятся на поперечной гребенке дуе (стрелкой указаны подключенные входы логического анализатора):
Фото0075.png
Фото0075.png (419.9 КБ) 286 просмотров

Однако, ничего на них не приходило после первичных прошивок контроллера.
Дальше мы вспомнили (прочли в нете), что, как правило, все квадрики "армированы", то есть, имеют два состояния - disarm и arm - то есть, "нерабочее" и "рабочее" (по типу разблокировки телефона, я так понял, это сделано для того, чтобы случайно что-то там не нажать, и квадрик бы не полетел "не штатно" - типа, надо джойстки перевести одновременно в какие-либо заранее предустановленные положения, чтобы разблокировать квадрик - перевести из дисарма в арм- состояние и пульт на это тоже калибруется).
Так как никаких джойстиков у нас нет, нужно было найти место в прошивке, где она армируется и посмотреть, что можно сделать.
"Тупой" поиск по "буквосочетанию" arm дал результат - в файле Rx.cpp найдено место, где можно армировать состояние, причем, надо было его армировать по прошествии секунд 30 (обусловлено тем, что необходимо за это время провести калибровку акселерометра-гироскопа). Как это сделать?
Просто ввели счетчик циклов (cycles), каждый программный цикл инкрементировали его на 1, и смотрели, когда в настроечной программе (MultiwiiwinGUI) "подсветится" ARM. Так и определили, что один программный цикл длится порядка 3 мс. Соответственно, дали 10000 циклов до армирования (стрелка 1 на рис. ниже). В один из ключевых методов записали присвоение arm-у по достижению счетчика (стрелка 2):
Снимок на арм.PNG

Продолжение следует...

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

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

#44

Непрочитанное сообщение adiagnost » 29 окт 2018, 12:02

Кстати, скрин настройки:
Снимок арм.PNG


Отправлено спустя 12 минут 41 секунду:
Но затем нужно было понять, где конкретно в исходных кодах задаются задания на движки. Оказывается, можно здесь (файл protocol.cpp - общение по последовательному UART):
Снимок на моторы.PNG

Соответственно, задания были закомментированы, а мы подали на них значения, которые позволят нам понять, что это именно "наши" присвоенные (1600, 1650, 1700 и 1750):
Снимок на моторы.PNG

С помощью логического анализатора посмотрели, что "творится" на выходах контроллера по каналам шим (управление движками через регуляторы):
forth_chan.png

А творилось все нормально - ширина импульса по каналам менялась от 1,6 мс до 1,75 соответственно.
Это все хорошо, мы нашли место, где сами можем задавать движкам задания.
Но нам надо найти место, где приходит не для каждого двигателя в отдельности, а в общем, как с джойстика - "полететь вверх", "вправо", "обернуться вокруг" оси и проч. "тангажи", "рыскания" и т.д. - то есть, pich, roll, yaw и т.д...
Продолжение следует..

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

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

#45

Непрочитанное сообщение adiagnost » 07 ноя 2018, 15:39

Кстати, про распознавание целей (затронутое в соседней теме) - Дарпа удивило в очередной раз.
Хотят добиться в проекте до 50 Гфлопс на 1 Вт (кстати, с полгода как проект заморозили на какой-то срок) при массе системы до 1,5 кг.
У нас УЖЕ есть 100 Гфлопс на 1 Вт при весе всей системы до 0,5 кг (правда, без апертурного радара) :lol: .

https://www.aex.ru/news/2016/5/26/154047/


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