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

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

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

Обзор модели

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

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

open_system('warehouseTasksRobotSimulationModel.slx')

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

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

Робот

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

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

  2. Паузы в качестве загрузочной станции для загрузки пакета и планирование пути к месту разгрузки.

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

  4. Останавливается на зарядной станции.

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

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

simulation = sim('warehouseTasksRobotSimulationModel.slx');

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

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

Пользовательский инструмент визуализации дается, чтобы имитировать распределенную систему камеры и получить более подробные виды траектории робота в определенных местах на карте. Откройте блок Помощь в визуализации и используйте раскрывающийся список Предустановленные представления (Preset Views), чтобы выбрать различные перспективы. The Sample time визуализации не влияет на симуляцию робота.

См. также

© Copyright 2019 The MathWorks, Inc.