суббота, 1 июля 2017 г.

ROS. Знакомство

Robot Operating System (ROS) - технология, упрощающая разработку системы управления роботом. Согласно заявлению разработчиков, она обладает такими качествами как:
  • открытое ПО;
  • низкоуровневое управление устройствами;
  • предоставление высокоуровневой абстракции для "железа";
  • наличие широко используемых функций;
  • взаимодействие процессов посредством обмена сообщений;
  • управление и навигация по функциональным узлам.
Исчерпывающую информацию по системе можно найти на  официальном сайте. Но лично мне больше понравилась книга "A gentle introduction to ROS" (Jason M. O'Kane), электронную версию которой вместе с примерами кода можно найти здесь.


Основная идея ROS - возможность представить систему управления в виде отдельных независимых программ и обеспечить взаимодействие между ними, а также предоставить удобные инструменты для написания и использования таких функциональных узлов. ROS не ограничивает разработчика одним языком программирования, по-умолчанию поддерживаются С++, Python и Common Lisp. Далее я буду использовать Python, как язык с наименьшим порогом вхождения среди перечисленных. 

Другая идея данной системы заключается в возможности повторного использования кода. Действительно, развитое сообщество и открытость проекта дают возможность находить готовые решения к текущим задачам, что, в свою очередь, позволяет сосредоточиться на нюансах.

Несмотря на название, ROS не нужно устанавливать на чистое железо, родная для неё "среда обитания" - Linux Ubuntu.  Описание процесса установки можно найти на сайте программы, либо в рунете.

И ещё несколько слов о черепахах, которые, судя по присутствию на всех логотипах, являются символом проекта. Для демонстрации основных концепций в ROS имеется специальный пакет программ turtlesim, который позволяет с помощью клавиатуры управлять траекторией черепашки. Чтобы её запустить, прежде всего нужно в отдельном терминале выполнить команду

   roscore

Она запустит программу, которая далее будет обеспечивать взаимодействие всех компонентов системы. Почти любая работа с ROS должна начинаться с выполнения данной команды. Если же вы закончили работать с роботом, завершить roscore можно с помощью комбинации клавиш Ctrl+C

Далее в новом терминале введите команду

   rosrun turtlesim turtlesim_node

Она запускает программу turtlesim_node из пакета turtlesim (подробнее о пакетах и нодах поговорим в следующий раз). В результате должно открыться синее окно, в центре которого неподвижно сидит черепашка. Чтобы заставить её двигаться, ещё в одном терминале выполните команду 
   
   rosrun turtlesim turtle_teleop_key

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




Данный пример демонстрирует основную концепцию ROS: есть две независимые программы, одна взаимодействует с пользователем, считывает его команды и передаёт их, вторая принимает и выполняет эти команды, а roscore обеспечивает связь между компонентами системы.

Комментариев нет:

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