Лабораторная работа №1 Симулятор роботов V-REP Симулятор роботов V-REP , с интегрированной средой разработки, основан на распределенной архитектуре управления - каждый объект ( модель) может управляться индивидуально: с помощью встроенного сценария, плагина, узла ROS, клиента удаленного API или пользовательского решения. Такой подход делает V-REP очень универсальным и идеально подходит для одновременного моделирования нескольких роботов. Управление может быть написано на языках программирования C / C ++, Python, Java, Lua, Matlab, Octave или Urbi. При запуске симулятора открывается окно, которое имеет вид, представленный на рис.1. Рис. 1 Типичный вид окна V-REP Строка меню предоставляет доступ практически ко всем возможностям симулятора. Внешний вид меню может контекстно изменяться в зависимости от состояния симулятора. Большинство пунктов меню альтернативно доступны через панели инструментов, всплывающее меню или, в частности, при двойном щелчке на изображении объектов, находящихся на сцене или на панели иерархии сцены. Панели инструментов включают в себя две панели: Вертикальную Горизонтальную. Все функции вертикальной панели доступны через строку меню и всплывающее меню. Функции горизонтальной панели доступны только частично через строку меню и всплывающее меню. Вертикальная панель инструментов представлена на рис. 2, там же слева в виде ссылок указано назначение каждой пиктограммы панели. Так как горизонтальная панель инструментов включает в себя большое количество пиктограмм, ее представление разбито в этом пособии на два риунка - рис. 3 и рис. 4., там же, в виде ссылок, указано назначение каждой пиктограммы панели. Рис. 2 Вертикальная панель инструментов. Рис.3. Горизонтальная панель инструментов Рис.4. Горизонтальная панель инструментов (продолжение панели) Браузер моделей (рис. 5.)показывает в своей верхней части структуры папок моделей V-REP, а в нижней части, минатюры моделей , содержащиеся в выбранной папке. Минатюры могут быть захвачены с помощью мышки и перемещены на сцену, чтобы автоматически загрузить соответствующую модель. Рис. 5. Браузер моделей Иерархия сцены (рис. 6.) отображает открытые сцены, значки главного, дочерних скриптов, скриптов настройки и моделирования, значки моделей роботов, а также иерархию составных соствных частей модели. Рис. 6. Иерархия сцены. Каждая сцена может содержать до 8 страниц, каждая из которых может содержать неограниченное число видов. Страница может рассматриваться в качестве контейнера для предоставления видов. Вид используется для отображения сцены или характеристик ее объектов через объекты наблюдения или регистрации (камеры, датчики и т. п.). При создании новой сцены, каждая из восьми страниц может быть настроена индивидуально. Любая страница может быть удалена командой «Remove page» контекстного меню «Popup menu», которое активируется щелчком правой кнопкой мыши на поверхности окна. Для удаленной страницы может быть вызвано контекстное меню [Popup menu --> set up page with…] для выбора одной из 12 возможных конфигураций страницы с фиксированными видами. Возможные конфигурации страниц представлены на рис. 7. Рис. 7. Конфигурации страниц с фиксированными видами На рис. 8. приведен пример конфигурации страниц. Рис.8. Пример конфигурации страниц На поверхности существующей конфигурации страницы, можно расположить неограниченное количество плавающих окон ( представление вида - Floating View)с различными видами. Для этого необходимо в контекстном меню выбрать пункт: Popup menu --> Add --> Floating View Окна можно перемещать по поверхности страниц и менять их размеры с помощью мышки. Каждое окно (представление) вида можно связать (ассоциировать) с каким либо выбранным объектом, например, с камерой, графиком или датчиком видения с помощью всплывающего меню (Popup menu) следующим образом: View --> Associate view with selected camera View --> Associate view with selected graph View --> Associate view with selected vision sensor или связать представление вида с новой камерой: Add --> camera После беглого знакомства с назначением пунктов меню и панелей инструментов можно перейти к практической части работы. Практическая часть В первой части лабораторной работы необходимо создать определенную окружающую для робота среду. Ваше задание заключается в создании, с помощью описанных выше инструментов, следующей среды окружения робота (рис.9.): Для простоты окружение робота создается с помощью параллепипедов ( Cuboid), раставленных на поверхности сцены в соответствии с рисунком. Обратите внимание, что с помощью кубоидов сцена огорожена со всех сторон. Это сделано для того, чтобы робот не мог покинуть сцену (свалиться с нее). Рис.9. Среда окружения робота (сцена). Для создания объектов в среде можно воспользоваться командой главного меню «Add ->Primitive Shape -> Cuboid» либо контекстного меню в окне с отрисовкой среды «Add ->Primitive Shape -> Cuboid». И в том и другом случае появится диалоговое окно с заголовком «Primitive cuboid». Пример диалога с использованием контекстного меню приведен на рисунке 10. Рис. 10. Использование контекстного меню для создания объекта. На рис. 11 показаны предназначения элементов диалога Размеры Стороны Дисковые подразделения Открытые концы Создать динамическую и отвечающую форму Создать чистую форму Форма имеет отрицательный объем (массу) Рис.11. Диалоговое окно установки объекта. Грани Гладкий затушеванный Конус (конусный) Плотность материала Внутренний масштабный коэффициент После добавления фигуры изменить различные параметры возможно с использованием пункта меню в левой части экрана с пиктограммой «Scene object properties». При щелчке на эту пиктограмму открывается диалоговое окно (рис. 12). Рис. 12. Изменение геометрических характеристик объекта Во вкладке Common окна «Scene object properties» можно проверить установку пунктов Collidable, Renderable, Detectable, Measurable (отталкивающийся, отображаемый, обнаруживаемый, измеримый). Так как мы сняли флажок «Сreate dinamic and respondable shape», они устанавливаются автоматически. Установка этих пунктов необходима для того, чтобы данный объект можно было отрисовывать, а также он взаимодействовал с роботом и его сенсорами. Во второй части работы небходимо научиться управлять движением мобильного робота с поммощью встроенного скрипта. Для этого поместите в созданную среду модель робота «pioneer p3dx» (перетащите его изображение из левой части экрана в окно моделирования). Для доступа к программному контроллеру робота Вам нужно вызвать меню Scripts в левой части экрана. В открывшемся окне будут отображены все загруженные на текущий момент скрипты, из которых Main script – это общий скрипт моделирования среды и робота, а Child script (associated with pioneer p3dx) – это базовый контроллер робота. Двойным нажатием на названия скрипта вы можете запустить внутренний редактор. В рамках данного курса предпочтительным способом создания контроллеров будет являться написание встроенного скрипта (embedded script) на языке программирования Lua. Вы можете редактировать текущий контроллер непосредственно во встроенном редакторе V-REP. Базовый контроллер робота «pioneer p3dx” реализует, так называемую, тележку Брайтенберга (http://en.wikipedia.org/wiki/Braitenberg_vehicle) с опцией следования вдоль стен. В рамках заключительного задания Вам необходимо разобраться с базовым кодом контроллера (с использованием документации по API V-REP, по ссылке http://www.coppeliarobotics.com/helpFiles/index.html Writing code in and around V-REP -> V-REP API framework -> Regular API). Далее необходимо модифицировать его так,чтобы движения робота происходило назад с сохранением функциональности тележки Брайтенберга. При выполнении задния использовать по Вашему усмотрению одну из 12 возможных конфигураций страниц.