Разное

Ros это: Что показывает рентабельность продаж? Формула коэффициента (ROS)

17.01.1970

Содержание

Что такое ROS · Введение в ROS

Robot Operating System (ROS)

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

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

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

Платформы (фреймворки) в робототехнике

В последнее время, в области робототехники особое внимание уделяется платформам.

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

Аппаратные платформы, включают в себя готовые исследовательские и образовательные устройства (TurtleBot, TurtleBro). А также готовые промышленные системы.

Важно отметить, что аппаратные платформы совместимы с программными платформами, что позволяет разрабатывать прикладные программы не имея опыта работы с оборудованием и не тратя время на его разработку. Совместимость интерфейсов и методов взаимодействия с оборудование, позволило огромному количеству разработчиков ПО внести свой вклад в развитие робототехники.

Унифицированные интерфейсы и методы работы с устройствами позволяют накапливать и обмениваться готовыми решениями всему сообществу заинтересованных людей в робототехнике.

Наиболее активные платформы

MSRDS10 Microsoft Robotics Developer Studio, Microsoft - U.S.
ERSP11 Evolution Robotics Software Platform, Evolution Robotics - Europe
ROS Robot Operating System, Open Robotics12 - U.S.
OpenRTM National Institute of Adv. Industrial Science and Technology (AIST) - Japan
OROCOS Europe
OPRoS ETRI, KIST, KITECH, Kangwon National University - South Korea

Почему стоит начать с ROS

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

Следует особо отметить, что сообщество ROS чрезвычайно активно. Когда вы сталкиваетесь с проблемой, найти решение и получить помощь становиться проще, не только от разработчика ROS (компании Open Robotics), но и от других энтузиастов и профессионалов.

Что дает готовая платформа

  1. Повторное использование программных модулей. Разработанный программный модуль, легко запускается и переиспользуется в любом другом приложении. Вопросы установки зависимостей и других библиотек хорошо проработан и автоматизирован.
  2. Готовый протокол коммуникации Основная проблема комплексных робототехнических систем, это решение задач коммуникации в рамках одного приложения. Для решения этих задач ROS содержит все необходимые утилиты. Любой программных модуль может быть представлен как отдельный процесс, взаимодействующий с другими процессами по сетевому протоколу. Такой подход позволяет создавать независимые и простые в повторном использовании программные модули, которые возможно запустить/остановить/модифицировать на любом устройстве.
  3. Развитость средств разработки и отладки
    ROS предоставляет готовые инструменты для отладки, инструмент 2D-визуализации (rqt), и инструмент 3D-визуализации (RViz), инстумент 3D симуляции (Gazebo).
  4. Активное и открытое сообщество Сообщества разработчиков робототехники из академического мира и промышленности, были относительно закрытыми до последнего времени. Но сейчас мы видим активное, и главное открытое сотрудничество всех участников. В центре этого изменения -- программная платформа с открытым исходным кодом. В случае ROS существует более 5000 пакетов, которые были разработаны и выложены в общий доступ. Описание этих пакетов, инструкций и другой полезной информации -- превышает 18 000 Wiki страниц.
  5. Собственная экосистема Вокруг ROS сформирована собственная экосистема (по аналогии с платформами Android и Apple). В ней существуют разработчики аппаратных платформ, разработчики программных модулей, энтузиасты и компании производители промышленного оборудования, единое место распространения и хранения готовых модулей, тысячи станиц документации. Все участники взаимодействуют и работают в рамках единой платформы.

Что такое ROS

ROS (Robot Operating System) обеспечивает разработчиков библиотеками и инструментами для создания приложений робототехники. ROS обеспечивает аппаратную абстракцию, предлагает драйверы устройств, библиотеки, визуализаторы, обмен сообщениями, менеджеры пакетов и многое другое. ROS выпускается в соответствии с условиями BSD лицензии и с открытым исходным кодом.

www.ros.org

Аббревиатура ОС, обычно обозначает Операционная Система общего назначения (linux, windows, iOS). Можно ли при этом называть ROS операционной системой для роботов? Это не совсем верно. Более точно описать ROS можно определением мета-операционная система.

Мета-операционная система не похожа на обычную операционная систему, такие как Windows, Linux и Android. ROS работает "поверх" существующей операционной системы. Для работы ROS необходима базовая операционная система Linux (например дистрибутив Ubuntu). После завершения установки ROS на OC Linux можно использовать функции, предоставляемые обычной операционной системой. В дополнение к основным функциям, предоставляемым Linux, ROS обеспечивает дополнительный функционал, необходимый для роботов. Например: работа с библиотеками, передача / прием данных для разных устройств, планирование и обработка ошибок. Этот тип программного обеспечения также называется промежуточным программным обеспечением (middleware ) или программным фреймворком.

формула, расчет на примере ОАО "Аэрофлот"

Рассмотрим коэффициент рентабельности продаж (ROS). Данный показатель отражает эффективность деятельности предприятия и показывает долю (в процентах) чистой прибыли в общей выручке предприятия. В западных источниках коэффициент рентабельности продаж называют – ROS (return on sales). Ниже рассмотрю формулу расчета данного коэффициента, приведу пример с его расчетом для отечественного предприятия, опишу норматив и его экономический смысл.

Инфографика: Рентабельность продаж (RoS)

Пройдите наш авторский курс по выбору акций на фондовом рынке → обучающий курс

Рентабельность продаж. Экономический смысл показателя

Изучение любого коэффициента целесообразно начинать с его экономического смысла. Для чего нужен данный коэффициент? Он отражает деловую активность предприятия и определяет то, насколько предприятие эффективно работает. Коэффициент рентабельности продаж показывает, сколько денежных средств от проданной продукции является прибылью предприятия. Важно не то, сколько продукции продало предприятие, а то, сколько чистой прибыли оно заработало чистых денег  с этих продаж.

Коэффициент рентабельности продаж описывает эффективность реализации основной продукции предприятия, а также позволяет определить долю себестоимости в продажах.

Пройдите наш авторский курс по выбору акций на фондовом рынке → обучающий курс

Коэффициент рентабельности продаж. Как рассчитывается рентабельность? Формула расчета по балансу и МСФО

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

Коэффициент рентабельности продаж = Чистая прибыль/ Выручка= стр.2400/стр.2110

Следует уточнить, что при расчете коэффициента вместо чистой прибыли в числителе может использоваться: валовая прибыль, прибыль до налогов и процентов (EBIT), прибыль до налогов (EBI). Соответственно будут появляться следующие коэффициенты:

Коэффициент рентабельности продаж по валовой прибыли = Валовая прибыль/Выручка
Коэффициент операционной рентабельности =
EBIT/Выручка
Коэффициент рентабельности продаж по прибыли до налогов =
EBI/Выручка

Рекомендую, чтобы избежать путаницы, использовать формулу, где в числителе стоит чистая прибыль (NI, Net Income), т.к. показатель EBIT рассчитывается по отечественной отчетности некорректно. Получается следующая формула для российской отчетности:

В зарубежных источниках коэффициент рентабельности продаж – ROS вычисляется по следующей формуле:

Видео-урок: “Рентабельность продаж: формула расчета, пример и анализ”

Рентабельности продаж. Пример расчета по балансу для ОАО “Аэрофлот”

Пример расчета коэффициента рентабельности продаж (ROS) для Аэрофлота

Давайте рассчитаем  рентабельность продаж для российской компании ОАО «Аэрофлот».  Для этого воспользуюсь сервисом InvestFunds, который позволяет получить финансовую отчетность предприятия по кварталам. Ниже представлен импорт данных с сервиса.

Отчет о прибылях и убытках ОАО “Аэрофлот”. Расчет коэффициента рентабельности продаж

Итак, рассчитаем рентабельность продаж за четыре периода.

Коэффициент рентабельности продаж 2013-4 =11096946/206277137= 0,05 (5%)
Коэффициент рентабельности продаж 2014-1 = 3029468/46103337 = 0,06 (6%)
Коэффициент рентабельности продаж 2014-2 =3390710/105675771 = 0,03 (3%)

Как видно, рентабельность продаж незначительно увеличилась до 6% в первом квартале 2014 года, а во втором она снизилась в два раза до 3%. Тем не менее, рентабельность больше нуля.

Пройдите наш авторский курс по выбору акций на фондовом рынке → обучающий курс

Посчитаем данный коэффициент по МСФО. Для этого возьмем с официального сайта компании данные по финансовой отчетности.

Отчет по МСФО ОАО “Аэрофлот”. Расчет коэффициента рентабельности продаж

За девять месяцев 2014 года коэффициент рентабельности продаж ОАО «Аэрофлот» был равен: ROS=3563/236698 =0,01 (1%).

Давайте рассчитаем ROS за 9 месяцев 2013 года.
ROS=17237/222353 =0,07 (7%)

Как видно, за год коэффициент ухудшился на 6% с 7% в 2013 до 1% в 2014.

Коэффициент рентабельности продаж. Норматив

Значение нормативного значения для данного коэффициента Крп>0. Если рентабельность продаж оказалась меньше нуля, то стоит серьезно задуматься над эффективностью управления предприятием.

Какой уровень коэффициента рентабельности продаж является приемлемым для России?

По данным РИА-рейтинг (за 2013 год) средние значения коэффициента рентабельности продаж по отраслям были следующие:

– добыча полезных ископаемых – 26%
– сельское хозяйство – 11%
– строительство – 7%
– оптовая и розничная торговля – 8%

Если у вас низкое значение коэффициента, то вам следует повысить эффективность управления предприятием через увеличение клиентской базы, роста оборачиваемости товаров, снижение стоимости товаров/услуг от субподрядчиков.

Пройдите наш авторский курс по выбору акций на фондовом рынке → обучающий курс


Автор: Жданов Василий, к.э.н.

Что же такое ROS? / Робософт / RoboCraft. Роботы? Это просто!


Перед самым новым годом, я выложил перевод последнего урока из серии руководств ROS начального уровня.
Честно говоря, при начальном знакомстве с ROS (и даже после прохождения всех этих начальных уроков) было вообще ничего не понятно, и только по прошествии времени, стала вырисовываться картинка это замечательной системы.
Похоже, здесь играет роль та кривая обучения, про которую писал Brian Gerkey в своём письме, в котором сравнивал ROS и Player.

вариант кривой обучения для игры Dwarf Fortress:

Разработчики ROS позиционируют свою систему, как операционную систему для роботов (Robot Operating System) и не зря.
Дело в том, что ситуации в робототехнике напоминает историю развития ПК: для разных роботов — разные несовместимые системы.


Обычно, при разработке робота вам приходится реализовывать:
— свою архитектуру
– свой протокол обмена сообщениями
– свою систему логирования
– свою систему перехода в разные системы координат
– свой драйвер джойстика/пульта управления
– свою логику навигации
– свою систему технического зрения

И даже, если вы сможете использовать различные готовые библиотеки для этих задач, то всё равно перед вами встанет серьёзная проблема — объединить их в единую систему робота.

Вспомним экосистему ПК, состоящую из стандартных слоёв:
* железо (материнская плата, процессор, жёсткий диск и т.д.)
* операционная система (скрывает от пользователя работу с железом ПК, предоставляет API для программ)
* библиотеки и приложения пользователя

и спроецируем её на робота:
* железо робота (компьютер, контроллеры, датчики, актуаторы)
* операционная система (ROS) — скрывает непосредственную работу с «железом» робота, предоставляя единый интерфейс (API) для взаимодействия с ним.
* приложения для управления роботом.

Однако, было бы странно — не использовать возможности существующих операционных систем, поэтому ROS работает под уже готовой OC (Ubuntu Linux), в которой реализует свой дополнительный слой абстрации — для управления роботами.

Таким образом, для программ взаимодействия и управления роботом, ROS играет роль «операционной системы», предоставляя программам управления свои интерфейсы, библиотеки и готовые приложения.

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

Так же, ROS уже содержит вспомогательные библиотеки и приложения для роботов:
— преобразование систем координат
— утилиты для визуализации данных
— систему для отладки (логирования)
— SLAM
— стек навигации
— распознавание объектов
— планирование движения манипулятора
и многое другое.

Т.о., для типовых задач робототехники, уже можно использовать готовые модули (пакеты и стеки), дописывая только необходимый функционал.

Главный принцип ROS: «не изобретать велосипед» («don't reinvent the wheel»)!

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

boost, OGRE, Player, OpenCV…
СMake, Python, gcc, wxWidgets…

игровой движок OGRE используется в визуализаторе rviz (в настоящее время на wxWidgets, но планируется перенос под Qt)

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

Именно поэтому, многие роботы уже работают под управлением ROS:

Возможно, проще всего, воспринимать ROS, как клей для самых разных модулей.
Можно провести параллель с миром UNIX:
не писать одну большую программу, а реализовать несколько маленьких, которые могут сообща решить поставленную задачу.
Именно так работают Узлы в ROS.
Но если в UNIX программы взаимодействуют друг с другом через каналы (pipe),
то в ROS, программы (Узлы) взаимодействуют друг с другом через Темы.
В UNIX они пересылают друг-другу данные вывода,
а в ROS — Сообщения.
Таким образом, можно брать разные программы и получать быстрый результат — просто объединяя их между собой, как кубики LEGO.
То же самое и в ROS. Только, вместо обычных компьютерных утилит, выступают программы для роботов.
Например, вместо программы поиска файлов — программа (Узел) для поиска местоположения. Вместо программы поиска нужной строки — программа (Узел) для поиска объекта на изображении с камер.
Вместо команды перемещения файла — программа для управления манипулятором.

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

А ещё можно сравнить ROS с… Arduino!

ROS делает для роботов тоже самое, что делает обычная ОС для компьютера — скрывает от пользователя/программиста «железо», предоставляя для этого свои функции.
Но ведь, точно так же Arduino, скрывает от пользователя/программиста железо микроконтроллера, предоставляя готовый и удобный фреймворк для программирования.
Плюс расширение возможностей с помощью готовых библиотек или написания собственных. Причём, при желании, можно не использовать Arduino-вскую обёртку, а залезть на более низкий уровень.
То же самое позволяет сделать и ROS.
Как ардуино позволяет любому почти сразу же начать программировать микроконтроллеры, так и ROS позволяет прикоснуться к робототехнике не только высоколобым учёным, но и простым любителям.
Вывод: Arduino дало возможность совершить качественный и количественный скачёк в развитии различных систем автоматизации (например, в роли контроллера 3D-принтеров RepRap), а ROS даёт аналогичную возможность развития систем робототехнических!

А уж о взаимном дополнении Arduino и ROS и говорить нечего — действительно гремучая смесь 🙂

Прелесть и гибкость единого интерфейса ROS, для оборудования робота можно оценить на следующем замечательном примере.
"Poor Man's Lidar" — PML — «лазерный дальномер бедных»
Навигационный стек ROS, требует для своей работы выполнения определённых условий: робот должен предоставлять одометрию и иметь датчик, возвращающий дистанцию (лазерный дальномер) или облако точек (Kinect или стерео-камера).
Кажется, что выполнение последнего условия потребует больших финансов, но нюанс в том, что в ROS, программе навигации для работы, фактически, требуются данные (Сообщения), формата лазерного дальномера (sensor_msgs/LaserScan) или облака точек(sensor_msgs/PointCloud).
Получается, что мы можем использовать какой-нибудь другой сенсор, для которого можем реализовать драйвер, возвращающий данные в нужном формате.
Например, заменим лазерный дальномер на "лазерный дальномер бедных" (PML) — возьмём относительно недорогой Sharp-овский ИК-дальномер и закрепим его на качалке сервомашинки. Теперь, вращая сервомашинкой из стороны в сторону мы можем получать грубую оценку дальностей в секторе.

Остаётся написать драйвер, который будет считывать значения с нашего дальномера и Публиковать Сообщения типа sensor_msgs/LaserScan — тем самым реализуется «поддельный лазерный дальномер».
ROS будет успешно считывать данные через наш драйвер, а мы сможем использовать готовый навигационный стек ROS!

Красота!
Разумеется, подобной сенсор не идёт ни в какое сравнение с обычными лазерными дальномерами, но он более доступен, а если появятся средства на приобретение обычного дальномера, то нам не придётся ничего существенно менять в программе! Только заменить сенсор (и драйвер) и всё!


Кстати, на этом же принципе, в Turtlebot-е используется Kinect. В стеке Turtlebot-а есть пакет pointcloud_to_laserscan, который преобразует облако точек, получаемое от сенсора Kinect в данные лазерного сканера (Fake Laser), что позволяет использовать готовые алгоритмы SLAM (gmapping).
Сообщество

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

продолжение следует...

Ссылки:
www.ros.org
ROS Introduction
Концепции ROS
Начальные руководства (на русском)
http://answers.ros.org
Pi Robot Meets ROS
Pi Robot + ROS

По теме:
Робософт — обзор существующих решений
Дистрибутивы ROS
Установка ROS (Electric)

Автор: Vladimir (noonv), 2011-2012

Эксклюзивно для www.robocraft.ru
копирование на другие ресурсы и публикация
без разрешения автора запрещены.

Основы работы с Robotic Operating System / Хабр

Введение

Доброго всем времени суток!

Осваивая в очередной раз просторы Хабра, заметил, что здесь практически нет информации о Robotic Operating System (далее просто ROS). Поспешу исправить эту оплошность и популяризовать замечательный продукт.


Что же это такое? ROS представляет собой надстройку над ОС, которая позволяет легко и просто разрабатывать системы управления роботами. Что это означает и как с этим потом жить — и призвана рассказать серия топиков.

По сути, ROS — это набор из различных широко (и неочень) известных библиотек, таких как:


  • OpenCV — библиотека, содержащая алгоритмы компьютерного зрения и обработки изображений;
  • PCL- библиотека для работы с облаками 3D-точек;
  • Ogre — объектно-ориентированный графический движок с открытым исходным кодом;
  • Orocos — библиотека для управления роботами (например, расчет кинематики).

Также в ROS входят драйвера для различных манипуляторов и сенсоров (включая MS Kinect).

Но что же отличает ROS от простой сборки библиотек? Основополагающим преимуществом является клиент-серверная архитектура ROS — разработчики реализовали механизм пересылки сообщений между различными объектами, возможность построения распределенных систем, предоставление brige'ей к языкам С++ и Python.

Чтобы начать пользоваться ROS, придется все же начать с установки. Сам же план работ выглядит примерно так:


  1. Установка, основные концепции
  2. Создаем свой пакет, знакомимся с сообщениями, простая программа
  3. Сервисы и параметры

Развертывание

Сегодня ROS стабильно устанавливается и работает только на Ubuntu версии от 10 и выше, на примере Natty все тонкости этого процесса и рассмотрим.

Итак, шаг первый — настройка репозиториев. Нам нужно разблокировать «restricted,» «universe,» and «multiverse» компоненты, для этого в файле /etc/apt/sources.list необходимо раскомментировать следующие строчки:

deb-src http://security.ubuntu.com/ubuntu natty-security main restricted
deb http://security.ubuntu.com/ubuntu natty-security universe
deb-src http://security.ubuntu.com/ubuntu natty-security universe
deb http://security.ubuntu.com/ubuntu natty-security multiverse
deb-src http://security. ubuntu.com/ubuntu natty-security multiverse

Затем надо добавить репозиторий для установки и обновлений:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu natty main" > /etc/apt/sources.list.d/ros-latest.list'

Следующий этап — установка цифровой подписи. Здесь все тоже достаточно тривиально:

wget http://packages.ros.org/ros.key -O - | sudo apt-key add -

После этого обновимся:

sudo apt-get update

и попробуем установить сам метапакет ROS. Существует 4 установочных пакета, различающихся объемом предоставляемых модулей. Я воспользуюсь наиболее полным:

sudo apt-get install ros-electric-desktop-full

После того, как процесс скачивания и развертывания всяких штуковин закончиться, в директории /opt вы должны увидеть папку ros.

Последний шаг — обновление переменных окружения:

source /opt/ros/electric/setup. bash

С этого момента ROS к

бою

работе готов. Чтобы убедиться в успешности установки, откройте два терминала, в одном напишите:

roscore

Это запустит master-процесс, с которого ROS, собственно, и начинает работу.

В другом напишите

rosrun turtlesim turtlesim_node

И не забудьте сначала в каждом терминале проиниализировать переменные окружения!

source /opt/ros/electric/setup.bash

Если перед вами появилась симпатичная черепашка, то значит все нормально. Не закрывайте это окно, оно еще нам пригодится. Чтобы было не так скучно, откройте новый терминал и введите следующее:

rosrun turtlesim turtle_teleop_key

Из этого терминала теперь можно поуправлять рептилией.

Процесс установки на других ОС не намного сложнее, но, к сожалению, гораздо менее стабильный (на Fedora 15, например, мне завести так и не удалось). Можно только порекомендовать писать баг-репорты, публиковать патчи и будем всем счастье.

Основные понятия

Начнем с рассмотрения базовых концепций файловой системы (ФС) ROS.


Пакетом

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

Структура пакета выглядит следующим образом:


  • bin/: скомпилированные бинарники
  • include/package_name: заголовочные файлы для C++ (обязательно должны описываться в manifest.xml!)
  • msg/: типы сообщений
  • src/package_name/: исходный код на С++ и скрипты на Python'е, экспортируемые в другие пакеты
  • srv/: типы сервисов, предоставляемых пакетом
  • scripts/: скрипты на Python'е
  • CMakeLists. txt: CMake файл для сборки пакета
  • manifest.xml: манифест пакета
  • mainpage.dox: Doxygen-документация

В свою очередь, пакеты объединяются в

стэки

. На картинке вы можете увидеть пример такой структуры.


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

rospack find [pack_name] — выдает полный путь до директории с пакетом

[email protected]:~$ rospack find rviz
/opt/ros/electric/stacks/visualization/rviz

rosstack find [pack_name] — тоже самое, но уже для стэка

[email protected]:~$ rosstack find navigation
/opt/ros/electric/stacks/navigation

Это, так сказать, статика. Динамика в ROS описывается

узлами

(node) и

шинами

(topic).


Узел

— это запущенный процесс, который умеет общаться с другими процессами.


Шина

— именованный канал, соединяющая различные узлы.

Узлы и шины формируют асинхронный механизм обмена данными. Если у вас еще открыто окно с черепашкой, то вы это сейчас сможете еще и увидеть. Если закрыто — то где-то выше написано, как все вернуть на место.

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

rxgraph

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

rostopic echo /turtle1/command_velocity

Подвигайте черепаху и увидете, как в шине /turtle1/command_velocity появляются команды.


Заключение

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

Полезные ссылки:

  1. www. ros.org/wiki — штаб-квартира пользователей и разрабочиков
  2. answers.ros.org/questions — коллективный разум поможет вам с любыми проблемами (но, все же, не выходящими за пределы ROS)

ROS · Clover

Основная статья: http://wiki.ros.org

ROS – это широко используемый фреймворк для создания сложных и распределенных робототехнических систем.