Введение
Этот робот будет моим первенцем, так что основной целью проекта является просто построение робота. Потому, что Робот, и это круто )
А второстепенной целью будет экспериментирование с разными способами обучения. Например, использование нейронной сети, обрабатывающей данные дальномера, для избежания препятствий: на рецепторы подаются расстояния до препятствия по разным направлениям, на выходах получаем скорости вращения моторов. Столкновение с препятствием играет роль отрицательного подкрепления.
Часть деталей ко мне еще не приехала, поэтому в этой вводной статье я просто расскажу общие идеи.
Железо
Основные компоненты заказаны на сайте DealExtreme: китайский клон arduin-ы, bluethoth shield,motor shield и трехколесное шасси (два ведущих и одно переднее). Ардуинка подключается по bluethoth к android-смартфону, который, в свою очередь, подключен к компу по wifi. В общем вполне себе стандартная схема.
Теперь о датчиках. К arduino подключен ультразвуковой дальномер и энкодеры. Android снабжает робота данными с гироскопа/акселерометра/компаса и картинкой с камеры.
А камера-то не простая… Точнее, камера сама по себе самая обыкновенная смартфонная, но в поле её зрения есть лазерная линия (как сделать линию описывается в этом посте), лазер направлен по углом к земле, так что, чем дальше препятствие от робота, тем ниже линия — вот и получается дальномер.
Программное обеспечение
Я люблю программировать на C#, поэтому, я сначала собирался использовать Microsoft Robotics Developer Studio, но документации по ней я нашел очень мало. Поэтому буду использовать ROS, она показалась мне проще и понятнее, чем MRDS. И, к тому же, на RoboCraft очень много хороших статей по ней. Для публикации в ROS данных с датчиков смартфона есть программа ROS Android Sensor Driver( она же передает картинку с камеры). Arduino тоже можно сделать узлом в ROS, используя библиотеку rosserial, которая позволяет передавать сообщения ROS через последовательный порт в arduino и обратно — только на смартфоне нужно будет сделать проброс порта с bluethoth по wifi. Вся логика будет реализовываться на компьютере. Единственное исключение — система поиска wifi: если связь потеряна, смартфон остановит робота и заставит рыскать в поисках сети.
На этом пока все. Дожидаюсь получения деталей и попутно настраиваю и разбираюсь с ROS и подключаю к ней смартфон.
P.S. Это вообще моя первая статья, очень хочется услышать комментарии)
0 комментариев на «“CerebrumBot — проект колесного робота. Часть 0”»
Отличное начало! ждём продолжение )
Спасибо)
Ардуинка
подключается по bluethoth к android-
смартфону, который, в свою очередь,
подключен к компу по wifi. — а зачем так сложно? нужно будет постоянно держать вкл. смартфон. Не проще передавать сразу на комп по ва-фай, тогда можно будет управлять роботом независимо — и с компа, и с смартфона…
Причин две:
1) bluetooth шилд для ардуины легче достать
2) хочется использовать камеру и датчики смартфона
я думаю управлять своим роботом с андроид сматфона по. wi-fi, но никогда не писао под андроид, может у Вас есть некоторие наработки? А я могу помочь, если будет нужно, с низким уровнем
Спасибо за предложение) У меня пока никаких наработок нет, но я копаю в сторонуSLA . Отличное подспорье. Совсем не надо учить Java и сложный Android API. С этой прослойкой можно программировать почти на любом интерпретируемом языке (Python, Ruby, JavaScript), пользуясь простым API
про SLA — очень интересно, нужно будет попробовать 🙂
На хабрахабре есть хорошие статьи:habrahabr.ru/post/146020/