Управляем чем угодно откуда угодно

Делаю робота "собаку" по кличке Гафк

Кто что сделал и кто что собирается делать

Делаю робота "собаку" по кличке Гафк

Сообщение andrewion » 12 сен 2013, 14:57

Пока ждал виртурилку, полтора месяца назад, у меня зародилась идея, сделать робота "собаку". Ну правда не совсем "собаку" в прямом смысле слова, но в некоторой степени что-то похожее на неё, в плане поведения. :D
Проект является чисто любительским, что называется "для души".
Сам проект назвал Гафк (Gafk).

Из чего состоит Гафк:
1. Поворотная голова
2. Мозг
3. Шасси


Поворотная голова
На данный момент это обычная веб-камера, которая приводится в движение при помощи 3-х сервоприводов.
Сервоприводы работают от Арудины. Сама Ардуина управляется прогой (Мозгом) от компа, через виртуальный COM-порт.


Мозг
Это прога на компе, написана она C++ и использует OpenCV для машинного зрения, т.е. того что видит Гафк со соей башки :D
Прога общается с Ардуиной и посылает ей команды по управлению сервоприводами.

Общий алгоритм работы головы Гафка таков:
1. Пробегаемся веб-камерой по горизонтали и вертикали, в поисках профиля лица
2. Если профиль лица найден, определяем в нём само лицо в фронтальном положении + запоминаем текущее положение веб-камеры в трэкинг памяти
3. Если лицо в фронтальном положении найдено, подправляем положение веб-камеры таким образом, чтобы лицо в фронтальном положении было точно по середине кадра.
4. Если лицо в фронтальном положении найдено, в нём ищем глаза
5. Если глаза найдены (а их должно быть как минимум два), то вычисляем по глазам линию отклонения от горизонтали кадра и поворачиваем веб-камеру, так, чтобы это отклонение было минимальным.
6. Держим в фокусе найденный профиль лица и стараемся его не потерять.
7. Если найденный профиль лица потеряли, то пытаемся найти профиль лица по трэкинг памяти
8. Если найденный профиль лица потеряли. а трэкинг память пуста, то возвращаемся к П.1


Шасси
Тут у меня пока точной определённости нету, ещё не знаю как Гафк будет перемещаться. У g0l'а "подсмотрел" пару вариантов:
http://www.g0l.ru/blog/tags/rp5 и http://www.g0l.ru/blog/tags/rover5.
Может забью на "колёсные" варианты перемещения и сделаю что нибудь гексаподоподобное :D
Пока думаю над этими вариантами.


Что дальше?
В целом задач по проекту выше крыши. Вот часть из них:
0. Отказаться от Ардуины и веб-камеры, в пользу виртурилки (уж тут она рулит! :D )
1. Приделать гироскоп 3х осевой и акселерометр 3х осевой - для лучшей координации в просранстве
2. Приделать мозгу работу с оптическими потоками
3. На основе оптического потока, попробовать реализовать 3D видение пространства, в дальнейшем понадобится для SLAM
4. Если на основе оптического потока сделать 3D видение пространства не получится, то буду маяться со стереозрением
5. Перенести часть работы с машинный зрением с CPU на GPU. уж OpenCV это позволяет
6. Подрубить СУБД для "памяти" Мозга - что да и как, пока сам не знаю :D
7. Либо самом реализовать, либо подрубить бота для ведения диалогов, причём в устной форме - спасибо Гуглу за такую возможность :D
8. Приделать к голове "уши" - для этого будет достаточно 2-х чувствительных микрофонов типа Шорох

В общем работы по проекту Гафк много, но по маленьку делаю :)

Кому интересно, как на данный момент работает "Голова" + "Мозг", прошу глянуть видео:
Последний раз редактировалось andrewion 16 сен 2013, 11:43, всего редактировалось 1 раз.
Аватара пользователя
andrewion
 
Сообщения: 150
Зарегистрирован: 03 сен 2013, 21:46

Re: Делаю робота "собаку" по кличке Гафк

Сообщение realizator » 13 сен 2013, 00:03

Ух-х-х... Сильно задумано, и много!
Одно могу сказать - надо просто брать и делать, начиная с простейших вещей.
Если заранее продумать 10 шагов эволюции, то после первого второй и третий могут быть совсем другими. Первые-же эксперименты внесут сильные корректировки в задумки.
В общем Гафка в студию! :-)
Аватара пользователя
realizator
virt2real team
 
Сообщения: 646
Зарегистрирован: 17 фев 2012, 23:18

Re: Делаю робота "собаку" по кличке Гафк

Сообщение andrewion » 13 сен 2013, 13:26

realizator писал(а):Ух-х-х... Сильно задумано, и много!
Одно могу сказать - надо просто брать и делать, начиная с простейших вещей.
Если заранее продумать 10 шагов эволюции, то после первого второй и третий могут быть совсем другими. Первые-же эксперименты внесут сильные корректировки в задумки.
В общем Гафка в студию! :-)


Спасибо! Согласен, что сильно и много :D
Но я этот проект рассматриваю как долгосрочный и поэтапный. Возможно часть из того списка задач, что я наметил - откажусь.
Я и начал с простейшего - сделал подвижную голову + начал пилить OpenCV
Сейчас знакомлюсь с виртурилкой и пишу для неё панель управления. :D
Потом буду знакомиться с шасси))
Аватара пользователя
andrewion
 
Сообщения: 150
Зарегистрирован: 03 сен 2013, 21:46

Re: Делаю робота "собаку" по кличке Гафк

Сообщение dimitrimus » 12 окт 2013, 23:46

у меня вот, кстати, похожая задача - нужно на компе получать видео с виртурилки и передавать на обработку в opencv. Если у Вас что-то похожее уже получилось сделать - не поделитесь примером, как и что надо настроить на виртурилке и на компе, чтобы opencv "съел" этот видеопоток?
dimitrimus
 
Сообщения: 17
Зарегистрирован: 11 сен 2013, 14:35

Re: Делаю робота "собаку" по кличке Гафк

Сообщение andrewion » 13 окт 2013, 23:00

dimitrimus писал(а):у меня вот, кстати, похожая задача - нужно на компе получать видео с виртурилки и передавать на обработку в opencv. Если у Вас что-то похожее уже получилось сделать - не поделитесь примером, как и что надо настроить на виртурилке и на компе, чтобы opencv "съел" этот видеопоток?



Добрый вечер!

Сам на днях заморачивался поиском на эту тему, но до конца не разобрался ещё. Себе в закладки добавил следующие ссылки, в сторону которых копал:
http://codes-sources.commentcamarche.net/forum/affich-1529591-opencv-et-stream-rtsp-rtmp
http://workingwithcomputervision.blogspot.ru/2012/06/issues-with-opencv-and-rtsp.html

А так я думаю, что нужно копать в сторону приёма данных самим OpenCV через следующие каналы: tcp, rtmp и rtsp.

Как-то случайно находил исходники для OpenCV, где упоминался метод на подобии: cvCreateCameraCapture_gstreamer, только к сожалению не закинул их себе в закладки.

Вот мои результаты на эту тему :D
Аватара пользователя
andrewion
 
Сообщения: 150
Зарегистрирован: 03 сен 2013, 21:46

Re: Делаю робота "собаку" по кличке Гафк

Сообщение dimitrimus » 15 окт 2013, 22:37

andrewion писал(а):
dimitrimus писал(а):у меня вот, кстати, похожая задача - нужно на компе получать видео с виртурилки и передавать на обработку в opencv. Если у Вас что-то похожее уже получилось сделать - не поделитесь примером, как и что надо настроить на виртурилке и на компе, чтобы opencv "съел" этот видеопоток?



Добрый вечер!

Сам на днях заморачивался поиском на эту тему, но до конца не разобрался ещё. Себе в закладки добавил следующие ссылки, в сторону которых копал:
http://codes-sources.commentcamarche.net/forum/affich-1529591-opencv-et-stream-rtsp-rtmp
http://workingwithcomputervision.blogspot.ru/2012/06/issues-with-opencv-and-rtsp.html

А так я думаю, что нужно копать в сторону приёма данных самим OpenCV через следующие каналы: tcp, rtmp и rtsp.

Как-то случайно находил исходники для OpenCV, где упоминался метод на подобии: cvCreateCameraCapture_gstreamer, только к сожалению не закинул их себе в закладки.

Вот мои результаты на эту тему :D


Спасибо, поглядим. Я сейчас копаю в сторону с++ приложения с gstreamer'ом, вот нашел тоже кое-что, но еще руки не добрались попробовать
http://stackoverflow.com/questions/1040 ... pplication
dimitrimus
 
Сообщения: 17
Зарегистрирован: 11 сен 2013, 14:35

Re: Делаю робота "собаку" по кличке Гафк

Сообщение andrewion » 21 ноя 2013, 15:41

Давненько не писал про свой проект.
Проект потихоньку движется.
Из проделанного на данный момент:
1. Подготовка среды разработки для в2р (http://forum.virt2real.ru/viewtopic.php?f=38&t=13346), при помощи которой написал сокет-сервер для управления в2р
2. Пытался подключить сервоприводы шеи робота на Attiny45, но ничего не вышло толкового (http://forum.virt2real.ru/viewtopic.php?f=38&t=13332). Пришлось вешать сервы на ардуину. Само ардуину подключил к в2р как I2C slave.
3. На MSVC версии 11 написал сокет-клиента для управлением роботом.
4. Подрубил IMU сенсоры (http://www.electronshik.ru/item/10-dof-mems-imu-sensor-1109790) + прикрутил AHRS алгоритм, для стабилизации камеры башки робота.
5. Реализовал способ применения gtreamer в сокет-клиенте, а точнее вывел кадры видеопотока на OpenCV (http://forum.virt2real.ru/viewtopic.php?f=38&t=13392)
6. Подрубил звук (http://forum.virt2real.ru/viewtopic.php?f=38&t=13345)
7. Для сборки каркаса робота, прикупил несколько детских металлических конструкторов (http://www.10kor.ru/catalog/Konstruktor_metallicheskij). Кстати, конструкторы взял прямо со клада производителя, получилось в 2 раза дешевле, чем на озоне :)

Сейчас начал баловаться с нейросетями для OpenCV, с целью распознавания объектов окружающего мира, в первую очередь лица людей, который робот видит.
В качестве способа передвижения (шасси), решил приделать Гафку четыре лапы, чтобы получился с него квадропод - http://www.youtube.com/watch?v=1JOcckEuWaA
Для лап, сейчас жду с ebay сервы - в середине декабря должны прийти.

Вот как это сейчас всё выглядит:
Аватара пользователя
andrewion
 
Сообщения: 150
Зарегистрирован: 03 сен 2013, 21:46


Вернуться в Проекты на базе Виртурилки

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

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

cron