Каждое робототехническое решение имеет программные компоненты, которые являются одинаковыми и следовательно, необходимости писать программы каждый раз заново - нет. Это самый простой способ объяснить необходимость в ROS. ROS имеет три концептуальных уровня: уровень файловой системы, уровень вычислительного графа и уровень сообщества.

Уровень вычислительного графа.

Узлы (также известные как "ноды"), это процессы, выполняющие вычисления. ROS спроектирован так, чтобы быть модульным и мелкомасштабным; Обычно система состоит из большого количества узлов. Каждый узел выполняет определенную задачу, такую как получение данных от сенсоров, управление приводами робота или обработка изображений с камеры. Узлы обмениваются данными друг с другом через топики (topics) и сервисы (service). Топики представляют собой каналы связи, по которым узлы публикуют и подписываются на данные. Такой механизм позволяет реализовать легко расширяемые каналы связи, при добавлении новых узлов в систему, отсутствует необходимость в изменении ранее созданных. Данные, передаваемые по топикам, называются сообщениями и имеют строго определенную структуру, заранее заданную разработчиком прикладного программного обеспечения. Сообщение — это структура данных, содержащая типизированные поля. Поддерживаются стандартные типы (целые, с плавающей запятой, логические значения и т. д.), а также массивы примитивных типов. При передаче данных через топики принято назвать предающий узел publisher, а принимающий subscriber. Важно отметить, что такой способ передачи данных через топики (как показано на рисунке 1.1) имеет важное преимущество в обеспечении гибкости, но подходит далеко не для всех задач из-за однонаправленности канала передачи данных. Поэтому, сервисы – важная альтернатива механизму topic/publisher/subscriber, когда нужно взаимодействовать в режиме запрос/ответ (также известный как Сервер/Клиент). Сервисы в ROS обеспечивают синхронный обмен данными между узлами. Клиентский узел отправляет запрос на серверный узел, а серверный узел возвращает ответ по готовности.

 Для обеспечения взаимодействия узлов необходим инструмент, выполняющий связующие функции. Таков в ROS является ROS мастер (ROS Master) - обеспечивает регистрацию имени и поиск по остальной части вычислительного графа. Без мастера узлы не смогут находить друг друга, обмениваться сообщениями или вызывать сервисы. Сервер параметров (часть мастера) – позволяет хранить данные централизованно, но в ограниченном количестве.

Уровень файловой системы.

Пакеты — это основная единица организации программного обеспечения в ROS. (Бывают еще метапакеты и стэки). Пакет содержит исходный код (ROS узлы), данные зависимости пакета от других пакетов и другие ресурсы для конкретной функциональности (наборы данных, файлы конфигурации или что-либо еще, относящееся к пакету). Пакеты — это самый атомарный элемент в решении с использованием ROS, который может распространяться отдельно и интегрироваться в другие робототехнические системы. 

Содержание пакета в ROS: - Package Manifests: Манифест (package.xml) – предоставить метаданные о пакете, включая его имя, версию, описание, зависимости и другие данные, например об экспортированных пакетах. - Типы сообщений и сервисов: определяют структуры данных для сообщений, отправляемых в ROS.