Scorpio писал(а):Философия ROS в картинках от человека в ней разобравшегося.
Я бы не сказал, что уж очень хорошо разобрался, кое что мне до сих пор не ясно, и это скорее связано с моими пробелами в понимании Linux систем чем со сложностью самого ROS, но это все поправимо и является делом времени. Тем не менее в ответ на вашу просьбу публикую, с некоторыми своими поправками, выдержку из книги "A Gentle Introduction to ROS". Итак, пока устанавливается ROS предлагаю познакомиться с основной его философией.
Robot Operating System (ROS) — это широко используемый в робототехнике фреймворк. Философией ROS является создание программного обеспечения, которое бы работало с различными роботами, лишь с небольшими изменениями в коде. Эта идея позволяет создавать функциональность, которая может быть перенесена без особых усилий для использования различными роботами, чтобы раз за разом не изобретать велосипед.
ROS была разработана в 2007 году в лаборатории искусственного интеллекта Стэнфорда (Stanford Artificial Intellegence Laboratory, SAIL) для поддержки стэнфордского проекта AI Robot. C 2008 года, разработка продолжилась в основном в исследовательском институте Willow Garage, сотрудничающим с более чем двадцатью различными институтами в рамках модели совместного развития.
Множество исследовательских институтов начали разрабатывать собственные проекты в ROS, добавляя поддержку своего аппаратного обеспечения и делясь примерами собственного программного кода. Некоторые компании, производящие роботов, стали адаптировать свои продукты для их использования с ROS.
Список роботов, поддерживаемых ROS (
http://wiki.ros.org/Robots).
Как правило, для всех поддерживаемых платформ публикуется большое количество примеров и симуляторы, облегчающие разработку собственных проектов.
В ROS также поддерживается множество различных датчиков и исполнительных устройств (актуаторов), используемых в робототехнике. Постоянно появляются новые устройства, совместимые с этим фреймворком.
В ROS имеются стандартные возможности операционной системы, такие как, аппаратная абстракция, управление устройствами на низком уровне, реализована часто используемая функциональность, передача сообщений между процессами, и управление библиотеками.
Дальнейшее сказанное является ключевым моментом в понимании ROS -
архитектура ROS основана не графе с централизованной топологией. Обработка происходит в узлах, которые могут принимать или отправлять данные другим узлам, работать с датчиками, системами контроля состояния и планирования, приводами, и так далее.Пример графа ROS приведен ниже. Это граф нашего БЕЗbot-а. Это достаточно сложный граф, в нем реализован SLAM, и управление двигателями платформы. Сейчас, возможно, для вас этот граф не понятен, но надеюсь постепенно мы изучим все это и разберемся в тонкостях.
- rosgraph.png (80.91 КиБ) Просмотров: 9051
Библиотека ориентирована на Unix-подобные системы.
Пакет *-ros-pkg является является общим репозиторием для разработки высокоуровневых библиотек. Многие из возможностей часто ассоциируемые с ROS, такие как библиотеки навигации и визуализатор rviz, хранятся в этом репозитории. Эти библиотеки предоставляют мощный набор инструментов (различные визуализаторы, симуляторы, средства отладки) для упрощения работы.
ROS распространяется на условиях лицензии BSD и является ПО с открытым исходным кодом. ROS бесплатна для исследовательских и коммерческих целей. ROS способствует повторному использованию кода, так что разработчики робототехники и ученые могут не изобретать велосипед постоянно. Можно получить код из репозитория, изменить его и вновь поделиться улучшенным ПО. Вы также можете написать драйвер вашего собственного датчика для ROS.
ROS поддерживает параллельные вычисления, имеет хорошую интеграцию с популярными C++ библиотеками, такими как как OpenCV, Qt, Point Cloud Library и пр., и он может работать на одноплатных компьютерах, таких как Raspberry Pi или BeagleBone Black, а также с микроконтроллерными платформами, например, Arduino. Вы можете создать своего собственного робота на основе Arduino или Raspberry Pi и использовать для его управления Robot Operating System.
Время является очень важным ресурсом и ROS является одним из инструментов, которые могут помочь разработать комплексное решение в кратчайшие сроки и с минимальными усилиями. Библиотека ROS поможет реализовать алгоритмы и сократить время, необходимое для интеграции целой кучи компонентов.
Передача сообщений и интерфейс ROS все больше становятся стандартом де-факто для совместимости программного обеспечения роботов, и как уже писалось, неоценимым достоинством ROS является его переносимость и возможность повторного использования кода. Это значит, что если мы, живем в разных городах и континентах, и создавая свои проекты на ROS, с легкостью можем поделиться своими наработками и кодом друг с другом и сообществом, и это будет мало зависеть от железа на котором каждый строит своего робота. Именно по этому я и призываю вас, коллеги и друзья, изучить этот действительно замечательный фреймворк для более тесного взаимодействия и взаимопонимания.
Теперь хочу обратить внимание чем НЕ является ROS:
ROS не язык программирования. Программный код самого ROS написан на C++, и далее мы будем писать свои узлы на C++. Используется также Python, Java, Lisp, и несколько других языков программирования.
ROS не является (только) библиотекой. Несмотря на то, ROS действительно включает клиентские библиотеки, он также включает в себя (среди прочего), центральный сервер, набор инструментов командной строки, набор графических инструментов и систему сборки.
ROS не интегрированная среда разработки. Хотя ROS не предписывает какой-либо конкретной среды разработки, он может быть использован с наиболее популярными средами. Кроме того, вполне возможно, использовать ROS из текстового редактора и командной строки, без каких-либо IDE.
Выводы: основной философией ROS является универсальность и переносимость программного кода.
Далее будем рассматривать основные концепции ROS.