Описание: WiFi робот управляемыя через Интернет на базе BeagleBoard |
Поиск в теме | Версия для печати |
andreynech |
Отправлено: 10 Ноября, 2011 - 15:39:27
|
Майор
Сообщений всего: 63
Дата рег-ции: Сент. 2011
|
Привет всем!
Вот решил выставить на суд общественности свою (точнее нашу с приятелем) поделку - робот управляемыя через Интернет на базе BeagleBoard . Документация по ссылке, как обычно , не закончена но на мой взгляд достаточна для того, чтобы понять и даже повторить сделанное.
В кратце (подробно по ссылке описано ), в качестве платформы использовалась готовая гусенечная платформа от Pololu. На нее поставил BeagleBoard к которой подключил камеру, WLan, и GPS приемник. Для управления моторами использовал тоже готовые регуляторы скорости, которые в свою очередь уравляются ШИМ-ами генерируемыми на BeagleBoard-е. Дополнительно подключил через I2C компас и ультразвуковой сонар.
Вот так оно сейчас выглядит:
или вот так, в зависимости от того, какую ходовуя часть использовать:
На Beagl-е видео с камеры зажимается в реальном времени в h264 на BeagleBoard-овском (точнее не OMAP-овском) DSP с использованием TI-шных кодеков и GStreamer-а. Потом передается через WLan водителю. При этом, также решены многие проблемы с файерволом и НАТ-ом.
Для удобного управления, необходимо сохранять постоянную частоту кадров. Это довольно трудно реализовать при передаче видео через Интернет т.к. пропускная способность канала постоянно меняется. Для этого я написал свою систему адаптивного видео-стриминга. Вот по этой ссылке можно посмотр еть презентацию на эту тему (слайды отдельно вот тут ), которую я делал на GStreamer конференции .
В добавок к видео, на водительское приложение посылаются данные с сенсоров. Это дает возможность, например, отображать текущее положение на карте, которую я скачиваю с openstreetmap.org тоже в реальном времени.
Вот так выглядит программа для "водителя":
Это реальный скриншот. Водительское приложение полностью написано с использованием OpenGL и работает на Линуксе и Виндовсе (на Маке тоже должно по-идее, но не тестировал). Модель создана в Блендере и экспортированна в стандартный .DAE (COLLADA) формат. Когда приходит очередной видео кадр, он распаковывается, из него создается текстура и накладывается на соответствующую панель в 3D cцене. Панели слева и справа предназначены для вывода дополнительной информации (типа чтоб логи непонятные ползли постоянно и т.д. ).
За 3D модель, хочу сказать отделное спасибо Sungreen-у (он же Николай )! Он откликнулся на мой зов о помощи на blender-3d.r u форуме и создал все модели. Рекомендую глянуть на ссылку - там несколько классных альтернативных версий панели управления.
Весь софт (включая рецепты для OpenEmbedded/Angstrom-а для построения образа Linux-а для флэш-карты) доступны на гитхабе . Мы сейчас в процессе переселения с gitorious.org на github, так что если чего-то не будет хватать, можно поискать в старом репозитории .
Если интересно, можно еще почитать блог про проект - http://veter-project.blogspot.com .
Буду очень рад прочитать комментарии о проекте!(Отредактировано автором: 10 Ноября, 2011 - 21:35:13) |
|
|
andreynech |
Отправлено: 11 Ноября, 2011 - 03:38:20
|
Майор
Сообщений всего: 63
Дата рег-ции: Сент. 2011
|
elmot пишет:И это действительно круто! Давайте ДУ на андроид напишем! Будет еще круче, там акселерометер есть, крутишь планшетку - оно поворачивает!
Да я только за! Я только ничего про Андроид не знаю. Я не раз задумывался над этой идеей, но каждый раз не мог придумать как это сделать. Попробую описать ход своих мыслей в надежде что Вы найдете в нем ошибки :-) .
Я исходил из того, что для разработки Андроидовских приложений можно использовать только Java-у. При этом, для проигрывания видео из сети доступен только высокоуровневый API, позволяющий проиграть стандартный поток по заданному URL-у. Т.е., грубо-говоря, запустится стандартный плеер, начнет на весь экран показывать видео и максимум, что с ним можно сделать это поменять размер и положение окна в котором он будет отрисовывать видео.
При таком раскладе возникает проблема т.к. я использую не стандартный транспортный протокол. Это связано с тем, что я сделал адаптивный стриминг и для этого нужно было на довольно низком уровне следить за TCP трафиком чтобы вовремя принимать решения по адаптации.
Для передачи видео, сенсорных данных и комманд водителя по сети я использую библиотеку Ice . У них даже есть версия специально для Андроида .
Сейчас, на своем клиенте, я принимаю видео как байтовый поток и отдаю его GStreamer-у который раскодирует поток и сообщает (вызывает callback функцию) когда он смог полностью раскодировать один кадр. После этого я получаю от gstreamer-а указатель на раскодированный кадр (массив RGB значений) и обновляю OpenGL текстуру для отрисовки нового кадра.
Теперь становтся вопрос - как этот байтовый поток (h264 видео), принятый с помощью Ice-а подсунуть андроидовскому плееру. Для меня это пока загадка. |
|
|
andreynech |
Отправлено: 15 Января, 2013 - 20:57:48
|
Майор
Сообщений всего: 63
Дата рег-ции: Сент. 2011
|
Спасибо за позитивные отзывы!
Роботов пишет:Шасси скорее всего покупное.
Да, вот оно . Подумывали самим печатать, решили для начала готовые взять, а то еще бы на год все растянуться могло...
Роботов пишет:Создается впечатление что материал здесь выложен только для рекламы вышеуказаного сайта...
То, что рекламная цель присутствует я в общем и не скрываю. Но скорее проекта, а не сайта. Хотелось бы, конечно, чтобы образовалась комьюнити вокруг него и т.д. А как этого добиться, в том числе, не рассказывая про проект? А сайт этот сейчас единственное место, где можно в подробностях о проекте почитать. Но я учту на будущее, что такая форма подачи информации вызывает не однозначную реакцию .
1988Олег1988 пишет:за пару месяцев даже в двоем такого не сделать
Это, конечно, не за пару месяцев сделано. Мы уже года три всем этим занимаемся. Я сам ужаснулся, когда увидел, что первое сообщение в этой теме написано мной в 2011 году! А начиналось все с куска сантиметровой фанеры на трех колесиках и зова о помощи 3Д дизайнеров (Отредактировано автором: 15 Января, 2013 - 21:03:07) |
|
|
|
Поиск в теме | Версия для печати |
Страниц (8): [1] 2 3 4 5 6 7 8 » |
« Делаем роботов » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|
|
|