ROS - это фреймворк (middleware OS), его можно отнести к системному программному обеспечению, обеспечивающему взаимодействие базовой операционной системы и прикладного программного обеспечения, предназначен для ускорения разработки программного кода для роботов. Хоть официально и заявлена поддержка на различных операционных системах, наиболее стабильная работа ROS реализована с операционной системой на ядре Linux (Например, Ubuntu). Далее рассматривается ROS, работающая под операционной системой Ubuntu [1] версии 20.04, следовательно, необходимо знание основных команд для работы в терминале (bash-терминал). Кроме того, что существует ROS первой и второй версии, также фреймворк разделяется на разные версии дистрибутива. Для ROS версии 1 последним выпущенным дистрибутивом является Noetic, дальнейшая разработка первой версии прекращена. Таким образом, при работе с ROS всегда необходимо учитывать версию дистрибутива, так как от этого будет зависеть, какие возможности доступны разработчику. Важно отметить, что вне зависимости от дистрибутива ROS в рамках своей версии имеет одинаковую структуру и компоненты, различие лишь в том, что некоторые возможности оптимизируются и дополняются с выходом новых версий дистрибутива.

Чтобы воспользоваться готовыми решениями, достаточно установить ROS на операционную систему с ядром Linux. Однако, для написания собственных программ необходимо разобраться в ряде вопросов, и первый вопрос заключается в том, где необходимо хранить свои программные решения и как их запустить. Разработка в ROS должна вестись в рабочем окружении. Для запуска своего решения, его необходимо собрать, поскольку ROS использует компилируемый язык программирования С++ (даже если программный код написан на Python, косвенно используется C++). В данном курсе рассматривается ROS Noetic (ROS1), так как он остается наиболее простым для изучения ROS, в то время как 9 ROS2 является более сложной и улучшенной(оптимизированной и гибкой) версией, в которой возможности ROS1 дополняются. Далее ROS упоминается без уточнения версии, подразумевая версию 1.

Рабочее окружение в ROS содержит 3 рабочих пространства: src, build и devel. Создать рабочее окружение можно в любом месте, для этого достаточно создать папку, внутри которой будет содержаться подпапка с названием src. Название папки с рабочим окружением можно задать любое, однако принято его назвать catkin_ws или workspace, чтобы было удобно в дальнейшем его находить. В рабочем окружении создавать подпапки build и devel не нужно, они создаются автоматически. Также никогда не рекомендуется редактировать файлы, размещенные в эти папки (их обновление происходит автоматически).

Система сборки в ROS называется catkin, она устанавливается автоматически вместе с ROS. Catkin необходим для низкоуровневой сборки системных макросов и инфраструктуры для ROS. Чтобы ранее созданная папка стала рабочим окружением catkin, необходимо выполнить инициализацию. В дальнейшем, все программные пакеты, размещенные в catkin_ws/src/* будут использовать catkin для сборки. Чтобы выполнить сборку с использованием catkin, необходимо воспользоваться инструментом сборки. Инструментов сборки для catkin существует несколько, наиболее популярный catkin_make, catkin_make_isolated и catkin build. При этом catkin_make устанавливается автоматически, а catkin build относится к отдельному инструменту командной строки Catkin Tools [2], который необходимо установить дополнительно.

Основные преимущества catkin build: изолированная сборка пакета, более структурированный и легко читаемый цветной вывод командной строки. Также пользователь получает много полезных команд, таких как catkin clean для очистки, build, devel, install, catkin list и т.д. Кроме того, catkin build работает в любом месте рабочего пространства, не только в верхнеуровневой папке рабочего окружения, имеется возможность собирать отдельные пакеты, а не только все пакеты в окружении одновременно (что может занимать много времени).