Управление роботом.
Моделирование рабочего пространства мобильного робота
EnableDrive используется для разрешения или запрещения движения робота. Данное действие имеет один параметр логического типа. Если значение параметра — false, то запросы на управление движением выполняться не будут. Если привод выключается во время движения, он должен немедленно остановиться независимо от типа выполняемой операции; Параметр DriveDistanceStage при вызове действия DriveDistance… Читать ещё >
Управление роботом. Моделирование рабочего пространства мобильного робота (реферат, курсовая, диплом, контрольная)
В качестве шасси некоторых роботов используется дифференциальный привод. В состав такого привода входят два независимо управляемых колеса и пассивное (поворотное) колесо, используемое для баланса. Причина популярности такой конфигурации заключается в том, что ее использование позволяет сконструировать робота, который может развернуться на площади, по размеру не превышающей размеры робота.
В MRDS программный доступ к дифференциальному приводу робота реализован в виде сервиса GenericDifferentialDrive. По умолчанию данный сервис не связан с определенным приводом. Для соединения сервиса с приводом используется специальный файл, называемый манифестом. Одно из преимуществ MRDS заключается в том, что, разработав программу управления определенным роботом, можно использовать ее для управления другими роботами. Для этого достаточно будет изменить манифест, связывающий сервис и робота.
Рассмотрим действия сервиса GenericDifferentialDrive:
- ? AllStop — останавливает движение, прекращает все операции, выполняемые приводом, устанавливает величину подаваемой энергии на оба двигателя в 0 и выключает двигатели. Для повторного запуска робота необходимо вызвать метод EnableDrive, установив Enable в true;
- ? EnableDrive используется для разрешения или запрещения движения робота. Данное действие имеет один параметр логического типа. Если значение параметра — false, то запросы на управление движением выполняться не будут. Если привод выключается во время движения, он должен немедленно остановиться независимо от типа выполняемой операции;
- ? SetDrivePower устанавливает количество энергии, которое подается на правое (параметр RightWheelPower) и левое (параметр LeftWheelPower) колеса. Количество энергии может изменяться от -1.0 до 1.0 (тип double). Отрицательная величина указывает на то, что колеса должны вращаться назад, положительная — вперед. Каждый новый вызов действия изменяет значение энергии, поданной на колеса.
Возможны следующие варианты движения робота:
- ? движение вперед: LeftWheelPower > 0, RightWheelPower > 0, LeftWheelPower = RightWheelPower;
- ? движение назад: LeftWheelPower < 0, RightWheelPower < 0, LeftWheelPower = RightWheelPower;
- ? движение по дуге: LeftWheelPower Ф RightWheelPower (если на одно колесо робота подать большее количество энергии, чем на другое, то колесо, на которое подано больше энергии продвинется вперед дальше, чем колесо, на которое подано меньшее значение, в результате робот будет двигаться по дуге);
- ? вращение на месте: LeftWheelPower = -RightWheelPower. Установка значений энергии, подаваемой на оба колеса, в нулевое значение приводит к остановке робота. Для остановки роботу может понадобиться время. Между значением энергии, подаваемой на колеса, и скоростью робота нет прямой зависимости. Однако при больших значениях энергии колеса крутятся с большей скоростью. В ряде случаев робот может достигать своей максимальной скорости при значении энергии меньше 1.0, а при малых значениях энергии (например, 0.1) может не тронуться с места. Некоторые роботы поддерживают только дискретный набор уровней мощности, в ряде случаев возможно наличие лишь двух состояний двигателя — включено и выключено;
- ? SetDriveSpeed — устанавливает скорость движения робота в метрах в секунду;
- ? DriveDistance — устанавливает расстояние, на которое должен переместиться робот (в метрах).
Параметры действия:
- ? Distance — расстояние в метрах, на которое должен переместиться робот (тип double);
- ? Power — количество энергии, подаваемое на колеса (см. действие SetDrivePower);
- ? параметр DriveDistanceStage при вызове действия DriveDistance должен быть установлен в DriveStage.InitialRequest. Данный параметр используется для отображения процесса выполнения операции. Любой запрос на движение (включая DriveDistance) отменяет DriveDistance [3]. Однако некоторые роботы не могут прервать начатое движжение;
- ? RotateDegrees — используется для поворота робота на месте на указанный угол (в градусах). Положительный угол означает движение влево или против часовой стрелки относительно центра робота, если смотреть сверху.
Параметры действия:
- ? Degrees — угол, на который выполняется поворот;
- ? Power — количество энергии, подаваемой на оба колеса;
- ? параметр RotateDegreesStage должен быть установлен в DriveStage. InitialRequest.
Сервис GenericDifferentialDrive генерирует ряд уведомляющих сообщений, с помощью которых возможен анализ процесса выполнения блоком команд.
Связать сервис GenericDifferentialDrive с приводом робота (моделью робота в симуляторе) можно следующим образом:
- ? Выбрать сервис GenericDifferentialDrive на диаграмме.
- ? Выбрать в окне Properties в поле Configuration пункт Use a manifest.
Нажать кнопку Import и выбрать в открывшемся окне пункт IRobot.Create.Simulation.Manifest.xml (рис. 2.4). Выбранный манифест определяет робота, который будет добавлен в симулятор. После выполнения указанных действий окно Properties должно выглядеть, как показано на рисунке 2.5 [8].
Рисунок 2.4 — Список манифестов.
Рисунок 2.5 — Установка параметров сервиса.