Давно мечтал заняться робототехникой, наверно даже с детства. И вот совсем недавно начал осуществлять свою мечту. Как программист, в первую очередь, я занялся поиском инструментов для создания программной части робота, т.е. "мозгов". Есть неплохой обзор того, что есть на текущий момент.
Player
Из всего перечисленного в нем меня больше всего заинтересовал проект PlayerStage, как опенсорсный проект, кросс-платформенный и широко распространенный. Он состоит из:
Player
Из всего перечисленного в нем меня больше всего заинтересовал проект PlayerStage, как опенсорсный проект, кросс-платформенный и широко распространенный. Он состоит из:
- Player - сервер, набор клиентских библиотек (С,С++ ,Python и Ruby) и драйверов для управления периферией робота без привязке к конкретной аппаратной базе. Об этом софте расскажу по-подробнее ниже;
- Stage - симулятор 2-хмерного мира и робота (Robot Hell - как его прозвали сами создатели). С помощью него вы можете описать своего робота (геометрию, сенсоры и исполнительные механизмы), а также окружающий мир. Вы можете использовать плагин для управление виртуальным роботом с помощью Player или же можете написать на C++\С его логику с помощью API симулятора;
- Gazebo - симулятор 3-хмерного мира. Честно я с ним не играл, так что немого ничего рассказать.
И так я хотел больше рассказать про сам Player. Сам софт представляет собой TCP\IP службу, которая обращается с помощью драйверов к аппаратуре робота(ов) например: шасси, датчики расстояния, манипуляторы и т.д.; для получения данных измерений или посылки команд на исполнительные механизмы. Клиент к серверу обращается либо с помощью предоставленных библиотек, либо сам реализует протокол обмена(который не опубликован..). Такая схем позволяет абстрагироваться от аппаратуры и переносить софт с одной платформы робота на другую. Надо отметить что Player поставляет большое количество драйверов к существующим популярным платформам и роботам, а также специальные драйверы, которые реализуют алгоритмы компьютерного зрения или поиска маршрута для робота, конечно можно писать и свои драйвера, для своих поделок (в будущем я об этом обязательно напишу). Ниже представлена диаграмма, которая наглядно показывает структуру приложения, управляющая роботом с помощью Player.
Таким образом Player представляет обобщенные интерфейсы к разным типам периферии, например для шасси робота - position2d, манипулятора - actarray и так далее. Таким образом клиентская часть оторвана от подробной аппаратной части и работает с API, которые предоставляет Player.
Ruby Player
Несмотря на то что, Player распространяется с "обреткой" для использования С\С++ клиентских библиотек из Ruby, я решил запустить свой проект по реализации клиентской библиотеке на чистом Ruby и тому есть несколько объективных причин:
- Реализация на чистом Руби независима и не требует на клиентском узле C\C++ Player библиотек, компиляторов и SWIG с помощью, которого осуществляется привязка. Только ruby и gem!
- Проект написан по принятым в Руби стандартам, т.е. Вы сможете использовать его в своем проекте с помощью Bundle, RubyGems и RVM. Поставляемая Ruby библиотека у меня вообще не запустилась с RVM.
- Стандартная Руби библиотека, лишь "тоненькая" привязка к С\С++ функциям, что приводит к тому что пишете Вы все равно на С\С++ только в Руби.
Проект еще совсем юный, но поддерживает несколько из самых важных интерфейсов. Я планирую посвятить,каждому интерфейсу пост с примерами на Руби. Так что ждите) Если есть предложения или желание поучаствовать в разработке, буду рад)

Комментариев нет:
Отправить комментарий