Main Content

Ejecutar tareas para un robot de almacén

Este ejemplo muestra cómo ejecutar una ruta libre de obstáculos para un robot móvil entre tres ubicaciones de un mapa determinado. Se espera que el robot visite las tres ubicaciones de un almacén: una estación de recarga, una estación de carga y una ubicación de descarga. La secuencia en la que se visitan estas ubicaciones viene dictada por un planificador. El planificador proporciona a cada robot una pose objetivo hacia la que navegar. El robot planifica una ruta y utiliza un controlador Pure Pursuit para seguir los waypoints basándose en la pose actual del robot. El bloque Differential Drive Kinematic Model modela la cinemática simplificada, que toma las velocidades lineales y angulares del controlador Pure Pursuit. Este ejemplo se basa en el ejemplo Planificar una ruta para un robot de tracción diferencial en Simulink.

Mapa del almacén

Un almacén típico de una instalación de clasificación o distribución tiene paquetes que deben transportarse desde los puestos de trabajo a las zonas de almacenamiento. El almacén puede tener áreas restringidas, como oficinas, o paquetes en proceso que bloqueen pasillos. Los robots se encargan de recoger los paquetes terminados a medida que llegan a la estación de clasificación y se les indica una ubicación para almacenarlos. El almacén también dispone de una estación de recarga para recargar los robots al cabo de un tiempo determinado.

Este plano de muestra del almacén puede convertirse en un mapa de ocupación binario, que indica todas las regiones libres dentro del almacén.

Cargue el archivo de mapa de ejemplo. logicalMap es una matriz de valores lógicos que indica el espacio libre en el almacén. Cree un binaryOccupancyMap a partir de esta matriz.

load warehouseMaps.mat logicalMap
map = binaryOccupancyMap(logicalMap);
show(map)

Asigne las ubicaciones xy de la estación de recarga, la estación de clasificación (carga) y la ubicación de descarga cerca de las estanterías del almacén.

chargingStn = [5,5];
loadingStn = [52,15];
unloadingStn = [15,42];

Muestre las distintas ubicaciones en el mapa.

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;

Visión general del modelo

Se proporciona un modelo de Simulink® que modela todos los aspectos del sistema para programar, planificar, controlar y modelar el comportamiento del robot.

Abra el modelo de Simulink.

open_system('warehouseTasksRobotSimulationModel.slx')

Modelo de planificación, control y planta

El modelo utiliza un modelo de planificación, control y planta similar al del ejemplo Planificar una ruta para un robot de tracción diferencial en Simulink. El planificador toma las ubicaciones inicial y objetivo del planificador y planifica una ruta libre de obstáculos entre ellas, basándose en el mapa determinado. El controlador utiliza un controlador Pure Pursuit para generar los controles de velocidad lineal y angular del robot para navegar por la ruta. Estos controles se proporcionan al modelo de planta que modela el comportamiento de un robot con tracción diferencial.

Planificador de robots

El bloque Scheduler asigna las ubicaciones inicial y objetivo al robot. La pose actual del robot se utiliza como ubicación inicial y la ubicación final se determina mediante una secuencia de tareas especificadas dentro del planificador. El ejemplo ilustra la siguiente secuencia de tareas para el robot:

  1. Comienza desde la ubicación de recarga y se dirige a la ubicación de carga.

  2. Se detiene en la estación de carga para cargar el paquete y planifica una ruta hacia la ubicación de descarga.

  3. Navega hasta la estación de descarga para descargar el paquete. Vuelve a trazar una ruta hacia la estación de recarga.

  4. Se detiene en la estación de recarga.

Simular el robot

Ejecute la simulación para ver al robot ejecutar las tareas.

simulation = sim('warehouseTasksRobotSimulationModel.slx');

Visualizar trayectorias de robot

Se proporciona una herramienta de visualización personalizada para imitar un sistema de cámaras distribuido y obtener vistas más detalladas de la trayectoria del robot en determinadas ubicaciones del mapa. Abra el bloque Visualization Helper y utilice el desplegable Preset Views para seleccionar diferentes perspectivas. El tiempo Sample time de la visualización no tiene ningún efecto sobre la simulación del robot.

Consulte también

© Copyright 2019 The MathWorks, Inc.