Основной целью разработки системы является организация управления манипуляторами робота, разработанного в технологическом университете Lappeenranta, с помощью мобильных устройств. Для этого необходимо реализовать возможность передачи данных с мобильного устройства роботу. Используемый для работы робот состоит из мобильной платформы, двух манипуляторов, головы и фиксированного торса. Основным предназначением робота является оказание помощи человеку в ремонте и установки деталей машин. Например, данный робот может откручивать гайки и болты, устанавливать электронные карты, сверлить детали, открывать и закрывать отсеки и многое другое. В основе экспериментального робота заложена архитектура Robot Operating System.
Robot Operating System (ROS) — это программная платформа для программирования роботов. Первоначально она была разработана в 2007 году под названием switchyard в Лаборатории Искусственного Интеллекта Стэндфордского Университета [1]. Платформа основана на архитектуре графов, где обработка данных происходит в узлах, которые могут получать и передавать сообщения между собой.
При моделировании поведения проектируемой или анализируемой системы возникает необходимость не только представить процесс изменения ее состояний, но и детализировать особенности алгоритмической и логической реализации выполняемых системой операций.
Для моделирования процесса выполнения операций можно использовать язык UML, в котором для этого разработаны диаграммы деятельности. Применяемая в них графическая нотация во многом похожа на нотацию диаграммы состояний, поскольку на этих диаграммах также присутствуют обозначения состояний и переходов. Каждое состояние на диаграмме деятельности соответствует выполнению некоторой элементарной операции, а переход в следующее состояние выполняется только при завершении этой операции [2].
Таким образом, диаграммы деятельности можно считать частным случаем диаграмм состояний. Они позволяют реализовать в языке UML особенности процедурного и синхронного управления, обусловленного завершением внутренних деятельностей и действий. Основным направлением использования диаграмм деятельности является визуализация особенностей реализации операций классов, когда необходимо представить алгоритмы их выполнения. На рисунке 1 представлена диаграмма деятельности для варианта соединения с ROSBridge.
Рис. 1. Диаграмма деятельности для варианта соединения с ROSBridge
После инициализации объекта ROSConnector, перед попыткой соединения с сервером необходимо произвести валидацию параметров сервера и порта. Если значения корректны, произвести попытку соединения с сервером. Далее, в случае успешного соединения, перейти в состояние ожидания добавления объектов слушателей/отправителей, а также отправки сервис-параметров в ROSBridge. В случае неудачного соединения — произвести распознавание полученной ошибки и сообщить объекту-делегату, что соединение не установлено, вместе с полученной ошибкой.
На рисунке 2 представлена диаграмма деятельности для варианта добавления объекта ROSPublisher.
Рис. 2. Диаграмма деятельности для варианта добавления объекта ROSPublisher
Для добавления отправителя сообщений необходимо инициализировать объект ROSPublisher. При инициализации необходимо указать topic, в который будут отправляться сообщения, а также указать тип сообщений, и произвести проверку корректности указанного типа. Далее — задать идентификатор. В случае успешного добавления — перевести значение логического поля активности данного отправителя в значение true, если при добавлении произошла ошибка — сообщить об этом объекту-делегату.
На рисунке 3 представлена диаграмма деятельности для варианта добавления объекта ROSSubscriber.
Рис. 3. Диаграмма деятельности для варианта добавления объекта ROSSubscriber
Для добавления слушателя topic’a, необходимо инициализировать объект ROSSubscriber. При инициализации необходимо указать topic, сообщения которого объект будет слушать, тип получаемых сообщений, проверить корректность указанного типа, а также задать объект-делегат, методы которого будут вызываться при получении сообщений. Далее — задать минимальный интервал между принятием сообщений. Опционально присутствует возможность задать длину последовательности, степень сжатия и размер фрагментов. В случае успешного добавления — перевести значение логического поля активности данного слушателя в значение true, а если при добавлении слушателя произошла ошибка — сообщить об этом объекту-делегату.
Литература:
1. ROS — Robot Operating System [Электронный ресурс]. — http://robocraft.ru/blog/robosoft/721.html (дата обращения 25.11.2016 г.).
2. Леоненков А. В. Самоучитель UML. [Текст]. — СПб.: БХВ-Петербург, 2004. — 432 с.