Привет всем!
Вот решил выставить на суд общественности свою (точнее нашу с приятелем) поделку - робот управляемыя через Интернет на базе 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.ru форуме и создал все модели. Рекомендую глянуть на ссылку - там несколько классных альтернативных версий панели управления.
Весь софт (включая рецепты для OpenEmbedded/Angstrom-а для построения образа Linux-а для флэш-карты) доступны на гитхабе. Мы сейчас в процессе переселения с gitorious.org на github, так что если чего-то не будет хватать, можно поискать в старом репозитории.
Если интересно, можно еще почитать блог про проект - http://veter-project.blogspot.com.
Буду очень рад прочитать комментарии о проекте!
З.Ы.
Только сейчас заметил, что на скриншоте водительской панели виден "капот". Это не монтаж , просто мы кроме танчика, эту же платформу на машинку ставили поэтому "не правильный" скриншот затесался. Попозже добавлю "правильный" (также с отрисованной картой).