Этот пример демонстрирует, как выполнить путь без препятствий для мобильного робота между тремя местоположениями на заданной карте. Ожидается, что робот посетит три места на складе: зарядную станцию, погрузочную станцию и место разгрузки. Последовательность, в которой эти местоположения посещаются, диктуется планировщиком. Планировщик предоставляет каждому роботу целевое положение для навигации. Робот планирует путь и использует контроллер Pure Pursuit, чтобы следовать путевым точкам, основанным на текущем положении робота. Блок Differental Drive Kinematic Model моделирует упрощенную кинематику, которая берёт линейные и угловые скорости от контроллера чистого преследования. Этот пример основан на верхней части пути плана для робота с дифференциальным приводом в примере Simulink.
Типовой склад сортировочного или распределительного предприятия имеет пакеты, которые должны быть доставлены с рабочих мест на склады. Склад может иметь не ограниченные области, такие как офисы и незавершенные проходы для блокирования запасов или проходы. Роботам поручается собирать готовые пакеты по прибытии на сортировочную станцию и указывать место для их хранения. Также на складе есть зарядная станция для подзарядки роботов через определенное время.
Этот пример плана этажа склада может быть переведен в двоичную карту заполнения, которая указывает все безопасные области на складе.
Загрузите файл карты примера. logicalMap
- матрица логических значений, указывающая на свободное пространство на складе. Сделайте binaryOccupancyMap
из этой матрицы.
load warehouseMaps.mat logicalMap map = binaryOccupancyMap(logicalMap); show(map)
Присвойте местоположения xy зарядной станции, станции сортировки (загрузки) и места разгрузки вблизи полок на складе.
chargingStn = [5,5]; loadingStn = [52,15]; unloadingStn = [15,42];
Показать различные местоположения на карте
hold on; text(chargingStn(1), chargingStn(2), 1, 'Charging'); plotTransforms([chargingStn, 0], [1 0 0 0]) text(loadingStn(1), loadingStn(2), 1, 'Sorting Station'); plotTransforms([loadingStn, 0], [1 0 0 0]) text(unloadingStn(1), unloadingStn(2), 1, 'Unloading Station'); plotTransforms([unloadingStn, 0], [1 0 0 0]) hold off;
Модель Simulink® то, при условии, что модели все аспекты системы для планирования, планирования, управления и моделирования поведения робота.
Откройте модель Simulink.
open_system('warehouseTasksRobotSimulationModel.slx')
Модель использует планирование, управление и модели объекта управления, подобные Пути Plan для Робота с дифференциальным приводом в примере Simulink. Планировщик берёт начальное и целевое местоположения из планировщика и планирует свободный от препятствий путь между ними на основе заданной карты. Контроллер использует контроллер Pure Pursuit для генерации линейных и угловых регулировок скорости робота, чтобы перемещаться по пути. Эти элементы управления даны модели объекта управления, которая моделирует поведение робота с дифференциальным приводом.
Блок Scheduler присваивает роботу начальное и целевое местоположения. Текущее положение робота используется в качестве стартового местоположения, а конечное местоположение определяется последовательностью задач, заданных в планировщике. Пример иллюстрирует следующую последовательность задач для робота:
Начинается с места зарядки и переходит к месту загрузки.
Паузы в качестве загрузочной станции для загрузки пакета и планирование пути к месту разгрузки.
Перемещается к станции разгрузки, чтобы выгрузить пакет. Перенаправляет путь к зарядной станции.
Останавливается на зарядной станции.
Запустите симуляцию, чтобы увидеть, как робот выполняет задачи.
simulation = sim('warehouseTasksRobotSimulationModel.slx');
Пользовательский инструмент визуализации дается, чтобы имитировать распределенную систему камеры и получить более подробные виды траектории робота в определенных местах на карте. Откройте блок Помощь в визуализации и используйте раскрывающийся список Предустановленные представления (Preset Views), чтобы выбрать различные перспективы. The Sample time
визуализации не влияет на симуляцию робота.
© Copyright 2019 The MathWorks, Inc.