Этот пример демонстрирует, как выполнить препятствие свободный путь для мобильного робота между тремя местами на данной карте. Робот, как ожидают, посетит эти три места на складе: заряжающаяся станция, загружая станцию, и разгружая местоположение. Последовательность, в которой посещают эти местоположения, диктует планировщик. Планировщик дает каждому роботу целевое положение, чтобы перейти к. Робот планирует путь и использует Чистый контроллер Преследования, чтобы следовать за 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;
Модель Simulink® то, при условии, что модели все аспекты системы для планирования, планирования, управления и моделирования поведения робота.
Откройте модель Simulink.
open_system('warehouseTasksRobotSimulationModel.slx')
Модель использует планирование, управление и модель объекта управления, похожую на Путь к Плану для Робота с дифференциальным приводом в примере Simulink. Планировщик берет запуск и целевые местоположения от планировщика и планирует путь без препятствий между ними на основе данной карты. Диспетчер использует Чистый контроллер Преследования в генерации линейных средств управления и средств управления скоростью вращения робота к навигации путь. Эти средства управления даны модели объекта управления, которая моделирует поведение робота с дифференциальным приводом.
Присвоения блока Scheduler запускаются и целевые местоположения к роботу. Текущее положение робота используется в качестве стартового местоположения, и местоположение конца определяется последовательностью задач, заданных в планировщике. Пример иллюстрирует следующую последовательность задач для робота:
Начинает с заряжающегося местоположения и переходит к местоположению загрузки.
Делает паузу как станция загрузки, чтобы загрузить пакет и планирует путь к разгружающемуся местоположению.
Перешел к разгружающейся станции, чтобы разгрузить пакет. Повторно планирует путь к заряжающейся станции.
Остановки в заряжающейся станции.
Запустите симуляцию, чтобы видеть, что робот выполняет задачи.
simulation = sim('warehouseTasksRobotSimulationModel.slx');
Пользовательский инструмент визуализации дан, чтобы подражать распределенной системе камеры и получить более подробные представления траектории робота в определенных местоположениях в карте. Откройте блок Visualization Helper и используйте Предварительно установленные Представления, выпадающие, чтобы выбрать другие точки зрения. Sample time
из визуализации не оказывает влияния на симуляцию робота.
© Copyright 2019 The MathWorks, Inc.