Соревновония Lego роботов 2.Соревновония Lego роботов 1.

Обзор

Сообщение об ошибке

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls в функции book_prev() (строка 775 в файле /home/users/r/robohobby/domains/robohobby.myjino.ru/rostovrobot/modules/book/book.module).
Аватар пользователя Овсянников Алексей Юрьевич

Здравствуйте, друзья!

Сегодня мы начинаем рассказ о юной среде программирования роботов QReal: Robots.

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

Свой рассказа я решил сделать в форме видео-подкастов - коротких роликов, записанных с экрана моего компьютера, с аудио-комментариями.

Начнем!

Как уже было сказано, QReal: Robots – это среда программирования роботов. Это некая программа, установленная на Вашем компьютере, в которой можно написать программу для Вашего робота. Сегодня она умеет создавать программы для роботов Lego Mindstorms NXT. Но в будущем список поддерживаемых платформ может значительно увеличить, ведь программа распространяется по принципу open-source – открытого исходного кода. Поэтому любой желающий может не только ее использовать, но и изменять под свои нужды. Как это сделать и с чего при этом начать, я постараюсь рассказать в отдельном выпуске.

QReal: Robots – отечественная разработка, ее создатели работают и учатся в Санкт-Петербурге. Она написана с использование инструментария QT, а так как он кроссплатформенный, то и QReal: Robots является кросс-платформенной: она может работать на Microsoft Windows, Apple MAC OS X, Linux, а учитывая последние новости о портировании QT на Android, то и под этой мобильной ОС. Довольно полезная особенность, если учесть, что в разных учебных заведениях могут использоваться различные платформы. У нас, например, используются компьютеры Apple iMAC и необходимо искать софт, работающий на них.

В последнее время среда программирования активно развивается: буквально за последний месяц вышла новая стабильная версия 2.0.0 и две корректирующие версии: 2.0.1 и 2.0.2. Разработчики активно сотрудничают с пользователями, внося поправки и корректируя программу по требованию реальных пользователей. Это очень хорошо и полезно: добавляются самые важные и нужные детали, неудобные функции становятся удобными, горячие клавиши не «падают с потолка», а обсуждаются с сообществом. Разработчики озвучивают перспективные направления развития и просят сообщество подсказать, что реализовывать в первую очередь, а с чем можно подождать. Среди подобных перспектив были: возможность генерировать код на языке RobotC, возможность программирования новых роботов Lego Mindstorms EV3, изменение дизайна, расширение списка поддерживаемых датчиков и так далее.

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

Подобный подход почти полностью копирует таковой в среде программирования NXT-G – стандартной среде программирования роботов Lego Mindstorms NXT. В отличие от другой популярной графической среды программирования – RoboLlab’a – в QReal: Robots нет модификаторов.

Сейчас программных блоков не так уж и много – около двух десятков. Но уже есть несколько интересных, показывающих перспективы развития и возможности среды программирования. Например, есть блок «Функция», в котором можно задать математический закон управления роботом (то есть записать туда формулу, например, регулятора), блоки для робота-сегвея, способного удерживать равновесие на двух колесах. Я уверен, что в будущем количество и разнообразие блоков вырастет.

Очевидно, что при малом количестве блоков, невозможно будет запрограммировать робота на работу со сторонними датчиками и устройствами – такими, как продукция фирм HiTechnic и Mindsensor. Это серьезное ограничение, так как без подобных датчиков зачастую невозможно создать серьезного робота для серьезных соревнований. Хорошим выходом из данной ситуации я лично считаю добавление возможности создавать собственные блоки, причем на низком уровне. Подобно подходу по созданию блоков для NXT-G из LabView – разработчики устройств или профессиональные пользователи сами будут создавать нужные им блоки, а впоследствии делиться ими между собой.

Интересной возможностью QReal является то, что она способна генерировать код написанной программы в текстовый язык программирования (Си-подобный). То есть, существует потенциальная возможность писать программу не в графическом, а в текстовом режиме. На мой взгляд, это очень интересная особенность, которая позволит использовать один инструмент на всех этапах занятий робототехникой: и в группах начинающих, и в группах профессионалов, понимающих алгоритмы досконально, и стремящихся сделать их максимально эффективными. При этом первые будут рисовать программу в графическом режиме, а вторые напишут ее в текстовом.

Еще одной важной особенностью QReal: Robots является наличие симулятора робота. Если Вы написали программу, а под рукой не оказалось робота, чтобы ее проверить – не беда! Достаточно запустить симулятор и проверить в нем. Симулятор двухмерный, с видом сверху. Стоит заметить, что очень хороший: можно настраивать робота (задавать подключенные датчики и моторы), создавать препятствия и рисовать разноцветные линии разметки на полу, перемещать роботов и объекты прямо во время выполнения программы.. Последнее особенно полезно для отладки сложных программ и алгоритмов, призванных работать в изменяющейся среде.

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

Во втором случае программа записывается в память самого робота. Это привычный и наиболее распространенный способ, знакомый всем по NX-G, RoboLab’у, NXC и RobotC. Робот с записанной программой автономен – не зависит от компьютера. При этом робота необходимо «перепрошить» в специальную прошивку реального времени nxtOSEK. Что такое «реального времени» и чем это хорошо или плохо я постараюсь рассказать в специальном выпуске. Пока что достаточно сказать, что эта прошивка наиболее быстрая из широко распространенных.

На сегодня, наверное, достаточно. Теперь Вы знаете, что такое QReal: Robots, для чего он нужен и его основные преимущества и недостатки.

До новых встреч!