В этом примере показано, как выполнить путь без препятствий для мобильного робота между тремя местоположениями на данной карте. Ожидается, что робот посетит три места на складе: зарядную станцию, погрузочную станцию и место выгрузки. Последовательность посещения этих местоположений определяется планировщиком. Планировщик предоставляет каждому роботу целевую позу для навигации. Робот планирует путь и использует контроллер Pure Purchasion для следования ППМ на основе текущей позы робота. Блок кинематической модели дифференциального привода моделирует упрощенную кинематику, которая берет линейные и угловые скорости от контроллера чистого преследования. Этот пример основан на примере «Plan Path for a Differential Drive Robot» в 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 Path for a Differential Drive Robot» в примере Simulink. Плановик берет начальное и целевое местоположения от планировщика и планирует свободный от препятствий путь между ними на основе заданной карты. Контроллер использует контроллер Pure Purchasion для формирования управления линейной и угловой скоростью робота для навигации по траектории. Эти элементы управления предоставляются модели установки, которая моделирует поведение робота с дифференциальным приводом.

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

Запустите моделирование для просмотра выполнения задач роботом.
simulation = sim('warehouseTasksRobotSimulationModel.slx');
Пользовательский инструмент визуализации предназначен для имитации распределенной системы камеры и получения более подробных представлений траектории робота в определенных местах на карте. Откройте блок «Помощник по визуализации» и используйте раскрывающийся список «Стандартные виды» для выбора различных перспектив. Sample time визуализация не влияет на моделирование робота.


© Copyright 2019 The MathWorks, Inc.