воскресенье, 1 октября 2017 г.

Xacro. Макросы

XML хорош тем, что позволяет описать почти всё, что угодно. В ROS он используется для описания роботов (URDF, SDF), и чем больше робот, тем больше текста содержит файл, который и создавать бывает не просто, а изменять параметры ещё сложнее. Xacro (XML Macros) является языком макрорасширений для работы с XML. Он позволяет определять как отдельные параметры, так и целые блоки, которые будут преобразованы в текст и вставлены в заданном месте. Если вы знакомы с макросами в C/C++, с Xmacro тоже легко разберётесь.

среда, 9 августа 2017 г.

ROS. Запись сессии

Если вы хотите сохранить все сообщения, которыми обмениваются ноды во время работы, воспользуйтесь командой rosbag. Она не только позволяет записать сообщения, но также повторно воспроизвести их, т.е. вы можете сохранить сессию, а затем заново её "прокрутить". 

четверг, 3 августа 2017 г.

ROS. Сервисы

Наряду с нодами, ROS предоставляет ещё один тип программ, называемый сервисами. Их главное отличие заключается в способе общения. Если нода посылает сообщение на топик и не заботится о том, получил ли его кто-нибудь, то при обращении к сервису нужно указать конкретно, к какому именно. Кроме того, сервис возвращает своему клиенту ответ, так что связь оказывается двусторонней и направленной. Как следует из названия, данный тип программ введён для выполнения вспомогательных действий и оказания услуг. Если провести аналогию с вокзалом, топик - это информационное табло отправления/прибытия поездов (оператор публикует актуальную информацию, пассажир идёт в нужное время на требуемый путь), а сервисом будет являться покупка билета или обращение в справочное окно.

четверг, 27 июля 2017 г.

ROS. Параметры

ROS позволяет управлять нодами не только посредством сообщений, но и с помощью сервера параметров, который обеспечивает доступ к соответствующим переменным в теле программы. Обычно параметры используют для конфигурации нодов, однако доступ к ним возможен на протяжении всего времени работы узла. Более того, даже после его закрытия параметры остаются на сервере.

понедельник, 24 июля 2017 г.

ROS. Файлы запуска

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

пятница, 14 июля 2017 г.

ROS. Информационные сообщения

ROS позволяет создавать и отображать информационные сообщения различного уровня важности. Сообщения DEBUG и INFO предназначены для обычных сообщений и направляются в стандартный порт вывода stdout, в то время как WARN, ERROR и FATAL являются критическими и выводятся в порт ошибок stderr. Чтобы увидеть, как это работает, сделаем копию файла hello.py, сохраним её как log.py и добавим несколько строк.


среда, 12 июля 2017 г.

ROS. Публикация и приём сообщений

Продолжим эксперименты с нашей черепахой. На этот раз напишем две программы, одна будет публиковать случайное значение скорости (publisher), а другая - принимать текущие координаты (subscriber).

Для создания следующей программы вы можете полностью написать новый файл set_velocity.py, либо скопировать и переименовать hello.py, а затем добавить в него недостающие строки. Результат должен выглядеть следующим образом:

воскресенье, 9 июля 2017 г.

ROS. "Hello, World!"

Попробуем создать собственный пакет и добавить туда первую ноду - программу, которая будет печатать на экране традиционное "Hello, World!". Прежде всего понадобится настроить окружение, т.е. директории, в которых будет лежать пакет. Для этого в новых версиях ROS используется группа программ catkin. Допустим, наш пакет будет лежать в папке my_ros_ws. Тогда для создания окружения нужно выполнить следующие команды:

   mkdir -p ~/my_ros_ws/src
   cd ~/my_ros_ws/
   catkin_make

пятница, 7 июля 2017 г.

ROS.Топики и сообщения

Объекты в ROS могут общаться через так называемые топики (topics). Можно воспринимать это как что-то вроде "чата". Если нода подписана на топик, она будет получать публикуемые в нём сообщения. С другой стороны, нода и сама может публиковать сообщения. Список доступных в данный момент топиков можно получить с помощью команды

   rostopic list

вторник, 4 июля 2017 г.

ROS. Пакеты и ноды

Структурной единицей организации кода в ROS являются пакеты (packages), которые могут содержать конфигурационные или исполняемые файлы, библиотеки и прочее. Если ROS - операционная система, то пакеты являются её директориями. Однако, пакеты не могут быть вложены друг в друга, для их объединения используется другая структура, которую разработчики назвали стеком (stack). 

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

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

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

пятница, 30 июня 2017 г.

Приветствие

Лучше поздно, чем никогда, подумал я, и начал изучать робототехнику. Точнее, ту её часть, которая связана с IT. Если ещё точнее, Robot Operating System (ROS) и сопутствующие инструменты. Немного разобравшись с самим ROS-ом я стал искать руководство по симулятору Gazebo. Оказалось, что описание на официальном сайте, несмотря на полноту, не складывается для меня в единую картину, а других источников информации почти нет... В результате, возникла мысль завести этот блог: с одной стороны, когда рассказываешь, сам начинаешь лучше понимать, с другой, есть возможность изложить информацию в том виде, в каком хотелось бы её видеть.