Выполните задачи для складского робота

Этот пример демонстрирует, как выполнить путь без препятствий для мобильного робота между тремя местами на данной карте. Робот, как ожидают, посетит эти три места на складе: заряжающаяся станция, загружая станцию, и разгружая местоположение. Последовательность, в которой посещают эти местоположения, диктует планировщик. Планировщик дает каждому роботу целевое положение, чтобы перейти к. Робот планирует путь и использует Чистый контроллер Преследования, чтобы следовать за waypoints на основе текущего положения робота. Кинематический блок 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;

Figure contains an axes object. The axes object with title Binary Occupancy Grid contains 16 objects of type patch, line, image, text.

Обзор модели

Модель Simulink® то, при условии, что модели все аспекты системы для планирования, планирования, управления и моделирования поведения робота.

Откройте модель Simulink.

open_system('warehouseTasksRobotSimulationModel.slx')

Планирование, управление и модель объекта управления

Модель использует планирование, управление и модель объекта управления, похожую на Путь к Плану для Робота с дифференциальным приводом в примере Simulink. Планировщик берет запуск и целевые местоположения от планировщика и планирует путь без препятствий между ними на основе данной карты. Диспетчер использует Чистый контроллер Преследования для генерации линейных средств управления и средств управления скоростью вращения робота к навигации путь. Эти средства управления даны модели объекта управления, которая моделирует поведение робота с дифференциальным приводом.

Планировщик робота

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

  1. Начинает с заряжающегося местоположения и переходит к местоположению загрузки.

  2. Делает паузу как станция загрузки, чтобы загрузить пакет и планирует путь к разгружающемуся местоположению.

  3. Перешел к разгружающейся станции, чтобы разгрузить пакет. Повторно планирует путь к заряжающейся станции.

  4. Остановки в заряжающейся станции.

Симулируйте робота

Запустите симуляцию, чтобы видеть, что робот выполняет задачи.

simulation = sim('warehouseTasksRobotSimulationModel.slx');

Figure contains an axes object. The axes object with title Binary Occupancy Grid contains 21 objects of type patch, line, image, text.

Визуализируйте траектории робота

Пользовательский инструмент визуализации дан, чтобы подражать распределенной системе камеры и получить более подробные представления траектории робота в определенных местоположениях в карте. Откройте блок Visualization Helper и используйте Предварительно установленные Представления, выпадающие, чтобы выбрать другие точки зрения. Sample time из визуализации не оказывает влияния на симуляцию робота.

Смотрите также

© Copyright 2019 The MathWorks, Inc.