roboforum.ru

Технический форум по робототехнике.

Роевое поведение роботов

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

Роевое поведение роботов

Сообщение lorry » 29 окт 2014, 08:50

Хочу представить новый проект по исследованию "роевого поведения" роботов.
Идея проекта зародилась около месяца назад, и состоит в создании небольшого количества (3-10 шт.) роботизированных платформ, использования компьютерного зрения и алгоритмов коллективного поведения роботов.
Стоят следующие задачи:
1. собрать из готовых комплектующих несколько не больших робо-платформ на колесах или гусиницах;
2. для того чтобы роботы отличались друг от друга снабдить каждого своей цветной меткой;
3. изготовить равномерно залитое одним цветом поле по которому будут кататься роботы;
4. над полем установить камеру;
5. с помощью openCV детектировать роботов на поле и по WiFi передавать на них команды управления.
Это общая идея, а дальше... все зависит от фантазии. Необходимо будет написать несколько сценариев поведения. К примеру: роботов можно будет поделить на две команды и обучить игре в футбол, или теннис, можно играть в сумо, догонялки с роботом, лабиринт, движение по линии, танцы роботов, бои роботов и т.д. и т.п., в общем все что угодно, на сколько фантазии хватит.
Самое главное что сами платформы будут очень просты и не дороги - управляющий контроллер (600 руб.), драйвер двух моторов (450 руб.), WiFi модуль (3700 руб.), понижающий модуль (130 руб.) аккумуляторы (2 х 450 руб.), два двигателя с колесами и сама платформа (990 руб.), итого 6770 рублей. Остальное есть в наличии: ПК, видео камера. Изготовить поле и метки не составит труда. OpenCV - бесплатная библиотека компьютерного зрения. Все прочее - "прямые ручки", "ясные мозги", "непреодолимое желание" - все это тоже имеется.
Приобрели две колесные платформы и электронику к ним. Вот как выглядит:
IMAG0419.jpg

А это уже в собранном виде:
IMAG0420.jpg

Еще одна гусеничная, и комплектующие для самодельной балансирующей платформы заказаны и где то в пути к нам.
Осталось только написать скетч для Arduino, наладить связь с ПК, написать управляющую программу и создать сценарии поведения роботов.
Предложения и здоровая критика приветствуются.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: Роевое поведение роботов

Сообщение elmot » 29 окт 2014, 14:21

Фига себе недорого.
Вместо вайфай модуля надо брать перешитый роутер(1000рур вместо 3700), драйвер двух моторов должен стоить 300 рур, а не 450.
Где-то в соседней ветке фигурировал вайфай модуль за 200 рур.

Вообще можно взять pololu orangutan(http://www.pololu.com/product/1215) вместо контроллер+драйвер. И места меньше, и дешевле, и половина пайки отменяется.
Акки NiMh в топку сразу и с размаху, только литий.

Добавлено спустя 55 секунд:
Вайфай, кста, тоже неблестящая идея. Жрет он много. Лучше бы зигби или что-то наподобии.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Роевое поведение роботов

Сообщение Angel71 » 29 окт 2014, 16:14

+1 не очень хорошо подобрали компоненты. можно и плюшки получше и намного дешевле.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Роевое поведение роботов

Сообщение AndreiSk » 29 окт 2014, 19:59

Чем то ваши идеи сходны с моими. Я даже в своем блоке выкладывал 3 месяца назад WiFi робота,
которым управляет компьютер по камере сверху.
Прокомментирую пункты чтобы избежать каких то грабель
"1. собрать из готовых комплектующих несколько не больших робо-платформ на колесах или гусиницах;"
гусеницы IMHO не дают ничего в рамках песочницы, только эффектно, не более того.
"2. для того чтобы роботы отличались друг от друга снабдить каждого своей цветной меткой;"
Это как оказалось необязательно, достаточно один раз пометить робота номером, и дальше
их отслеживать, они же не наезжают друг на друга, а в одной плоскости. У меня два красных робота.
"3. изготовить равномерно залитое одним цветом поле по которому будут кататься роботы;"
Взял ДСП прямоугольной формы ламинированную белым, купил уголок на стройрынке 70x70x300,
нарезал уголок ножницами по металлу и подложил под ДСП. Получились отличные бортики
"4. над полем установить камеру;"
Конечно надо
"5. с помощью openCV детектировать роботов на поле и по WiFi передавать на них команды управления."
Да, так и сделано, не opencv конечно, но идея та же

"Это общая идея, а дальше... ... т.д. и т.п., в общем все что угодно, на сколько фантазии хватит."
Да. Пока сделал движение через waypoints. На картинке кликаешь куда ехать, туда и едет.
Из последних достижений - езда двух роботов по одному пути. Сейчас занимаюсь распознаванием
мячиков :)
мячики.png
мячики.png (141.28 КиБ) Просмотров: 4592


Мне интересно из чего бы можно сделать кучку недорогих таких роботов.
Конкретно мой это 4 мотора pololu, с самым медленным редуктором, взял еще 1:1000 на поиграться для третьего бота, но один такой моторчик полу-сгорел, сейчас жду замену.
Колеса взял Pololu 32x7, они как оказалось меньше скользят чем 42x19
Предпочитаю все же 4 колесную схему.
Драйвер движков Pololu TRex Jr ($60, дорого в общем)
WiFi модуль на UART чтобы напрямую на ДД бросить можно было ($50 вроде),
LiPo 2S2200, держит до 8 часов в режиме ожидания... ну и стабилизатор на 3.3в для WiFi
В общем, где-то не меньше $200 выходит. Предпочел бы более дешевый Wifi->UART и дешевый ДД
от UART.
Или же всю тележку в сборе, т.к. собирать ее вручную - просто долго :sorry:

два_робота.png
два_робота.png (100.83 КиБ) Просмотров: 4587


в общем пока решил что двух мне хватит, а если не хватит, то буду собирать еще, но на чем:
a) как и раньше
б) на базе nuc и OpenUPS2 (с возможностью подзарядки)
Аватара пользователя
AndreiSk
 
Сообщения: 2639
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: Роевое поведение роботов

Сообщение elmot » 29 окт 2014, 21:20

ну вы даете в подбое электронных компонент:)
раз уж делать серию, надо ее дешевить, а не покупать дорогие детали для конструкторов.
имхо 8 часов в режиме ожидания - это оч мало, надо уходить с вайфая на другой радиопротокол. Ну или сильно урезать вых. мощность передатчика(не знаю, позволяет ли этот модуль).
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Роевое поведение роботов

Сообщение AndreiSk » 29 окт 2014, 21:35

Ну два еще не серия, терпимо. А что за ДД за 300р, ну даже за 450 согласен,
можно ссылочку?
Аватара пользователя
AndreiSk
 
Сообщения: 2639
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: Роевое поведение роботов

Сообщение elmot » 29 окт 2014, 22:06

http://www.terraelectronica.ru/catalog_ ... ODE=666822

Добавлено спустя 2 минуты 18 секунд:
кста, про аккумуляторы - беру свои слова обратно. Сослепу не разглядел правоверные литиевые 18650.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Роевое поведение роботов

Сообщение lorry » 30 окт 2014, 00:14

Благодарю всех за конструктивные предложения. На самом деле электроника подбиралась нами по принципу "уже нами проверено - работает", потому, наверное, не самые дешевые компоненты вышли, просто не хотелось очередной раз наступать на грабли.
Очень рад, что мы не одиноки в своем желании создать подобный проект, и еще есть люди которым это может быть интересно. AndreiSk, может поможете с наработками какими?
В общем, всем большое СПАСИБО. Ждем еще рекомендаций и критики.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: Роевое поведение роботов

Сообщение Angel71 » 30 окт 2014, 00:17

AndreiSk, а сколько моторы в клине кушают? :oops: у меня китайские (которые ещё и клепают все кому не лень), да и не помню, сколько они там потребляли. я к тому, что на пололу есть штуки так 4 вариантов драйверов по 5-6$ http://www.pololu.com/category/11/brushed-dc-motor-drivers. несколько вариантов комплектующих чуть позже скину, может что и приглянётся. пожелания по лимиту будут? ну там до 100$ или до 50$... просто если сильно бюджетить, то придется эти симпотяшные dfrobot`овские колёсики с такими мотор-редукторами заменить на большие и чуть не неказистые.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Роевое поведение роботов

Сообщение lorry » 30 окт 2014, 00:37

AndreiSk, а каким софтом пользуетесь для отслеживания роботов и объектов на поле?
Я вчера запустил пробный вариант на openCV. Детектирует на УРА, по цвету на сплошном фоне, быстро и без ошибок. Как вы определяете где у робота перед, а где зад? Мы для этого вводим цветные метки. Они будут представлять из себя окружность поделенную пополам. Одна половина закрашена белым, она будет указывать заднюю часть робота, вторая половина поделена еще пополам и каждая половинка индивидуально для каждого робота будет закрашена сочетаниями других цветов, к примеру: красный-синий, или зеленый-желтый, или красный-зеленый и т.п., эта половинка будет указывать перед робота, а сочетания цветов не только позволит идентифицировать конкретного робота на поле, но и точно знать направление в котором робот находится или движется в каждый момент времени. Такой подход, по моему мнению, позволит оперативно добавлять роботов на игровое поле. Просто ставишь его а программа уже видит, сама назначает ID, и вперед, робот уже в игре.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: Роевое поведение роботов

Сообщение Angel71 » 30 окт 2014, 01:00

можно и с одним цветом. жирную черную линию с одной стороны нарисовать. или квадратиками число закодировать.
Untitled-1.jpg
Untitled-1.jpg (48.66 КиБ) Просмотров: 4501

другие примеры реализации можно подсмотреть в проектах дополненной реальности (augmented reality), да и исходники могут подвернуься.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Роевое поведение роботов

Сообщение lorry » 30 окт 2014, 01:18

Angel71, да да, вариантов кодирования масса. На каком остановиться мы еще не выбрали. По большому счету, вообще нет разницы каким образом кодировать робота, современные библиотеки компьютерного зрения справляются со всем этим в два счета. Я вижу большее затруднение в написании сценариев поведения роботов, но это будет у нас уже третий этап после сборки роботов и программирования их распознавания на поле.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: Роевое поведение роботов

Сообщение Angel71 » 30 окт 2014, 01:24

это да, это да. ещё один момент вспомнил - при слабом освещении цветовое кодирование может доставить неудобства. хотя особо и не важно, переход к другому методу относительно не много времени потребует.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Роевое поведение роботов

Сообщение AndreiSk » 30 окт 2014, 02:06

Angel71 писал(а):AndreiSk, а сколько моторы в клине кушают? :oops: у меня китайские (которые ещё и клепают все кому не лень), да и не помню, сколько они там потребляли. я к тому, что на пололу есть штуки так 4 вариантов драйверов по 5-6$ http://www.pololu.com/category/11/brushed-dc-motor-drivers. несколько вариантов комплектующих чуть позже скину, может что и приглянётся. пожелания по лимиту будут?

Angel71, я немножко запутался в своих роботах уже. Те, что на картинке,
они со старенькими моторчиками https://www.sparkfun.com/products/retired/8912
Не знаю сколько в клине кушают, но еще не сгорели, хотя в борт части упирались.
100:1 лучше, чем 24:1 в плане управляемости. 24:1 снял и убрал в ящик.
Оказывается у меня еще третий бот лежит рабочий, все тоже самое,
но плата там Odroid U3. Я писал как с Odroid можно управлять драйвером двигателя,
вот и доделал, а там моторы уже 298:1
( http://www.pololu.com/product/994 )
отлично катается с этим драйвером TRex Jr ( http://www.pololu.com/product/767 )
Кстати, к этим моторчикам надо обязательно эти винтики ( http://www.pololu.com/product/1954 )
иначе никак не приделать к скобке, а винты нестандарт :crazy:
Еще закупил вот такие ( http://www.pololu.com/product/1595 ),
но один из них какой-то кривой, греется в холостом вращении,
может редуктор криво встал.. в общем еще замена едет. Я тут пошукал по полкам,
оказывается у меня еще один драйвер лежит, так что у меня есть комплект для сборки
на базе нука (4 мотора, ДД, NUC от вертолета, с которыми я завязал, OpenUPS2 и 3 штуки 18650),
но пока пусть лежит, а то идеи часто меняются, а роботы клепаются долго.
Я тут слегка отошел от роя роботов, собрал себе компьютер-робот-пушку на базе CYMA Glock 18C,
эх жаль зима скоро, а то бы я на даче потренировался на мышах.
Прикольно когда компьютер управляет пистолетом и камерой которые на pan-tilt :Yahoo!:

Добавлено спустя 16 минут 41 секунду:
lori писал(а):AndreiSk, а каким софтом пользуетесь для отслеживания роботов и объектов на поле?

У меня своя программа управления роботами, получаю картинку с камеры и там ищу.
Пишу на C#, opencv не использую.. ну так получилось это с работы код,
а он в веб был использован, так что никаких opencv нельзя было.
Но код opencv гляжу когда надо что-то стащить :)
Код: Выделить всёРазвернуть
this.RunEachPart(
   // Начало работы
   this._1_start,
   // Есть поле?
   this._2_detectField,
   // Кликнули на объект?
   this._3_processCurrentPoint,
   // Проверяем что объект на месте или ищем его снова
   this._4_checkObjectPoint,
   // Определить направление объекта
   this._5_detectObjectDirection,
   // Делаем решение
   this._6_makeDecision,
   // Покажем обнаруженное на картинке
   this._7_showDetails
);


lori писал(а):, по цвету на сплошном фоне, быстро и без ошибок.

Да можно и проще, делаем grayscale, потом черно-белую (черные если яркость <= 127)
и там уже виден робот, только шум еще надо отсечь.

lori писал(а):Как вы определяете где у робота перед, а где зад? Мы для этого вводим цветные метки. Они будут представлять из себя окружность поделенную пополам.

У меня проще. Изначально робот стоит в центре, и программа не знает где перед и зад.
Потом даем команду медленно вперед, робот на картинке двигается, ну а дальше просто - куда центр масс двинулся, там и перед. Если робота не трогать в песочнице, то перед у него не меняется,
а запомнить где был перед в последний раз - просто. А вообще я использую "направление движения".
У меня на роботе нет меток, главное что он прямоугольный (не круглый) :)
Т.е. я определяю квадрат (они квадратные у меня 10x10см) и углы довольно точно показывают направление.
Исхожу из предположения что изменение направление между кадрами не может мгновенно превысить 90 градусов.
Это довольно примитивный алгоритм, но мне пришлось еще поиграться с движением, как быстро поворачивать и двигаться, возни хватало.

Добавлено спустя 16 минут 16 секунд:
Программа своя, как для тестирования алгоритмов, так и для управления.
Ну вот пример, я кликаю на объект, она запоминает что это и потом распознает
(шо=шарик оранжевый, шжс=шар желто-синий, рк=робот красный). Сейчас затык с футбольным мячиком
и желтым мячиком (слишком часто путаются с фоном поля). Кстати мячи из спортмастера
( http://www.sportmaster.ru/search/index.php?q=denton )

Добавлено спустя 3 минуты 8 секунд:
Потом есть проблема с состыкованными объектами, проблема с разной ориентацией объектв.
Да просто куча всяких мелочей, которые надо делать.. не хватает интеллекта в распознавании.
Потом, распознавать надо бысть, 10кадров - мало, сейчас повесил камеру на 90fps, буду ее мучать.
Ясное дело, все уже многопоточное, что тоже добавляет перцу в код.
Вложения
RMT.png
Аватара пользователя
AndreiSk
 
Сообщения: 2639
Зарегистрирован: 23 апр 2009, 17:03
Откуда: Москва, Самара
прог. языки: C#

Re: Роевое поведение роботов

Сообщение lorry » 30 окт 2014, 02:54

AndreiSk, у вас все здорово. Мы только начинаем это делать, а параллельно еще и LUM-ом занимаемся, нет, скорее наоборот - LUM-ом занимаемся а параллельно будем вести рой роботов. Есть желание подтянуть этот проект к весеннему "Робофесту". Но LUM, конечно, в первую очередь. :D :D
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

След.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8