Программирование мобильного робота Robotino
В настоящее время быстрыми темпами развивается направление робототехники, связанное с мобильными роботами. Эти разумные машины, способные реагировать на команды, двигаться по заданному маршруту, находить выход из сложных лабиринтов, идентифицировать местоположение трехмерных объектов, преодолевая при этом препятствия и двигаясь по определенной траектории, самостоятельно выполнять некоторые полезные функции.
Их практическая значимость и ценность, как объектов, способных заменить человеческий труд на опасном производстве, выполнять недоступную человеку работу или совершать монотонные однообразные действия в автономном режиме. Примерами таких роботов являются роботы–исследователи поверхности Марса и Луны, роботы–спасатели, отыскивающие людей под завалами в результате стихийных бедствий, роботы–труженики, помогающие людям в трудовой и повседневной жизни – выполняющие определенные задания на производстве, в больницах, офисах, музеях и домашнем хозяйстве.
В последнее время важность таких роботов в производственной практике значительно возрастает. Маршруты логистики на складах и производственных помещениях осуществляются без оператора, либо посредством направляющих линий, расположенных на полу, либо по свободно определенному маршруту в пределах заданного помещения. Известны мобильные роботы, осуществляющие мониторинг подземных гидротехнических коммуникаций и при необходимости осуществляющие их ремонт. Все это говорит о важности и актуальности умения современных инженеров программирования мобильных роботов, знания их возможностей.
На кафедре энергомеханических систем, среди прочих робототехнических комплексов, состоялось мое знакомство с мобильным роботом Robotino,
презентованным немецкой фирмой Festo
.
Знакомство с устройством и программированием мобильного робота
Robotino – это мобильный робот, передвигающийся на трёх роликовых колёсах типа "omni wheel" ("omnidirectional" – всенаправленный). В движение, робота приводят три двигателя постоянного тока, оси которых расположены под углом 120 градусов друг к другу. Благодаря такой конструкции робот может перемещаться во всех направлениях, а так же поворачиваться вокруг своей оси.
Так как Robotino предназначается, главным образом, для обучения, то он выполнен модульно; все технические компоненты (электроприводы, датчики, камера), можно отключить от робота и изучить отдельно.

Рис. 1 – Общий вид мобильного робота
- Корпус робота – стальной корпус с бампером, обеспечивающий лёгкий доступ к батареям, двигателям и портам робота.
- Подсистема питания – две аккумуляторные батареи (12V/5Ah кислотно-свинцой (lead-acid) или 12V/9Ah NiMH), позволяющие роботу работать в автономной режиме несколько часов.
- Двигательная подсистема – три двигателя постоянного тока, редуктор и ременная передача на роликовые колёса, позволяющие роботу двигаться в различных направлениях. Для стабилизации скоростей вращения валов двигателей робота, используются встроенные ПИД-регуляторы с предустановленными коэффициентами.
- Подсистема одометрии – инкрементные энкодеры на валах двигателей.
- Подсистема ввода/вывода – плата, выполняющая коммуникационную связь между компьютером робота и его датчиками, двигателями и интерфейсом ввода/вывода.
- Подсистема беспроводной связи с внешним управляющим компьютером (Wi-Fi точка доступа).
- Бортовой вычислитель – одноплатный промышленный компьютер формата PC/104+ (имеет шины ISA и PCI) с процессором на 300 МГц. В качестве памяти, используется карточка Compact Flash (1024 MB), на которую установлена встроенная версия операционной системы Linux.
- Различные датчики робота – 9 инфракрасных датчиков расстояния (на бампере), USB web-камера.
Знакомство с устройством и программированием мобильного робота

Рис. 2 – Подключение дополнительной аппаратуры к Robotino
Управлять роботом, можно как с помощью программ, записанных в память робота, так и дистанционно – по каналу беспроводной связи Wireless LAN (WLAN). Кроме того, возможно автономное программирование робота, через подключенные к нему монитор и клавиатуру
В комплекте с роботом идут программы Robotino View и Robotino Sim предназначенные для интерактивного графического программирования робота.

Рис. 3 – Блок главной программы Robotino View

Рис. 4 – Блок подпрограммы Robotino View
Robotino View, позволяет просмотреть состояние управляющих сигналов робота и его датчиков. Робот может быть запрограммирован в графическом режиме – простым выбором необходимых функциональных блоков из имеющегося списка и их последующим комбинированием и настройкой (визуальное программирование).
Программное обеспечение робота можно разделить на две части: внутреннее программное обеспечение и внешнее. Внутренне программное обеспечение (ПО) робота – это его операционная система (Linux), которая осуществляет взаимодействие программного и аппаратного обеспечения робота, обработку внутренних команд и обмен данными с внешним управляющим компьютером. К внутреннему ПО робота можно отнести программы, хранящиеся в собственной памяти робота для его автономного управления. Внешнее программное обеспечение – это программы, реализующие связь и обмен данными с Robotino. Это могут быть: программы, написанные на языках программирования высокого уровня (С, C++, Java); среды программирования и визуального проектирования: Matlab, Simulink, Labview, ROS, Microsoft Robotics Developer Studio (для них есть специальная библиотека для управления роботом) среда визуального проектирования Robotino View.
В случае, если нет возможности провести работу с настоящем роботом, предлагается программа Robotino Sim, которая визуализирует программный код, отображает движение робота.
Личный опыт
В лаборатории автоматизации кафедры ЭМС мною был выполнен ряд алгоритмов по программировании мобильного робота Robotino как на платформе RobotinoView так и на реальном роботе. В ходе ознакомления я понял, что подобные робототехнические системы имеют широкий спектр возможностей, а блоковое программирование делает процесс простым, понятным и довольно интересным. Приведу несколько примеров таких алгоритмов.
Одним из комплектующих Robotino является джойстик. Для его использования нам необходимо назначить определенным кнопкам джойстика определенные действия робота. Самый простой вариант – движение по одной оси.

Рис. 5 – Пример программирования кнопок джойстика для перемещения по оси Х.
Для обеспечения движения робота в прямом (кнопка 2) и обратном направлении (кнопка 1) по координатной оси Х, возможно решение (задавать движение в обратном направлении) представленное на рисунке 1.7, где сигнал от кнопки 1 умножается на значение заданной константы (-1).
Если же нам необходимо движение робота по определенным координатам, мы можем воспользоваться блоками одометрии. Суть заключается в задании конкретных координат, на которые робот сместится относительно начального положения.

Рис. 6 – Пример программирование робота с использованием блоков одометрии.
Данный алгоритм описывает только 1 перемещение. Для последовательного перемещение в разные координаты необходимо создать несколько подпрограмм. Все подпрограммы подобны, разница только в задании координат и контроле связывающих переменных, то есть беря эту программу за образец можно задать любую простую траекторию движения робота. В каждой последующей подпрограмме обнуляется связывающая переменная.
В процессе работы с данной робототехнической системой вашим покорным слугой и его верным товарищем был разработан алгоритм для решений двух задач – распознавание цветов в пространстве и движение к определенным сегментам; движение робота по линии. Результаты нужно было оформить и представить в виде лабораторной работы для следующих поколений студентов. В процессе поиска ответов нами был пройден этап самообучения методом проб и ошибок. В итоге искомое решение было найдено. Робот поочередно находил необходимые цвета и двигался в их направлении, попутно центрируясь, вплоть до срабатывания переднего датчика, который посылал сигнал на остановку. Также был сформирован цикл, позволяющий повторять программу постоянно.
Результаты нашей работы вы можете проверить скачав Robotino View и выполнив все предписания в составленной нами лабораторной работе.
По материалам Robocraft