Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

Comience con las redes de planificación de movimiento

Motion Planning Networks (MPNet) es un enfoque basado en el aprendizaje profundo para encontrar rutas óptimas entre un punto inicial y un punto objetivo en problemas de planificación de movimiento. MPNet es una red neuronal profunda que se puede entrenar en múltiples entornos para aprender rutas óptimas entre varios estados en los entornos. La MPNet utiliza este conocimiento previo para

  • Generar muestras informadas entre dos estados en un entorno de prueba desconocido. Estas muestras se pueden utilizar con planificadores de movimiento basados ​​en muestreo, como árboles aleatorios de exploración rápida (RRT*) óptimos para la planificación de rutas.

  • Calcular una ruta libre de colisiones entre dos estados en un entorno de prueba desconocido. El planificador de rutas basado en MPNet es más eficiente que los planificadores de rutas clásicos como el RRT*.

Navigation Toolbox™ proporciona funcionalidades para realizar muestreo de espacio de estados y planificación de movimiento basados en MPNet.

Arquitectura MPNet

El MPNet consta de dos módulos. El primer módulo codifica los entornos de mapas de entrada en una representación compacta utilizando el método de codificación de conjuntos de puntos base [1]. El tamaño del entorno codificado es menor que el del entorno del mapa real. En tiempo real, los entornos de los mapas son grandes y a menudo dispersos. Codificar el entorno del mapa antes de usarlo para el entrenamiento reduce la escasez de datos de entrenamiento de entrada, disminuye la complejidad computacional y el tiempo necesario para entrenar la red. El entorno codificado debe almacenarse como un objeto binaryOccupancyMap o occupancyMap.

El segundo módulo consta de una red de propagación hacia adelante que incluye una capa de entrada de características, una o más capas ocultas y una capa de salida. Cada capa oculta consta de una capa completamente conectada, una capa ReLU (unidad lineal rectificada) y una capa de exclusión.

  • La capa ReLU agrega no linealidad al aplicar la función de activación ReLU. Esto permite que la red aprenda y represente relaciones no lineales en los datos de entrenamiento.

  • La capa de abandono ayuda a evitar el sobreajuste al establecer aleatoriamente una fracción de las unidades de entrada en cero durante el entrenamiento.

Una MPNet puede tener una cantidad variable de capas ocultas y capas abandonadas dependiendo de factores como el tamaño y la resolución de los datos de entrenamiento, el riesgo de sobreajuste y los recursos computacionales disponibles. Por ejemplo, se debería reducir el número de capas ocultas cuando los recursos computacionales son limitados y también para mitigar el riesgo de sobreajuste. La red utiliza la distancia cuadrática media ponderada como función de pérdida para la capa de salida.

MPNet Architecture

La red de avance toma el entorno codificado como entrada junto con un estado inicial y un estado objetivo para predecir un estado siguiente que esté más cerca del estado objetivo. La red de propagación hacia adelante se entrena a través del aprendizaje supervisado utilizando rutas óptimas generadas por planificadores de rutas clásicos como RRT*.

La cantidad de entradas a la capa de entrada de características de MPNet depende del tamaño del entorno codificado además de la cantidad de variables del espacio de estados en el estado inicial y el estado objetivo. En un espacio de estados SE(2), los estados se especifican utilizando tres variables de espacio de estados x, y y θ. Los valores del estado de entrada deben procesarse previamente de manera que:

  • Las entradas de estado a la red deben tener el formato [x y cosθ sinθ].

  • Los valores de las variables de espacio de estados x y y deben normalizarse en el rango [0, 1].

El número de entradas a la capa de entrada de MPNet es la suma del número de variables del espacio de estados que representan el estado inicial y el estado objetivo y el tamaño del entorno codificado. Para un espacio de estados SE(2), el número de variables de estado dadas como entradas a la red es 4 para cada uno de los estados inicial y objetivo. Si el tamaño del entorno codificado es M-por-N, entonces el número de entradas a la red es (M*N)+8.

Crear MPNet

Puede cargar un MPNet preconfigurado o crear un MPNet personalizado con fines de muestreo de espacio de estados o planificación de movimiento.

La propiedad Network del objeto mpnetSE2 almacena un MPNet preconfigurado y no entrenado que puede cargar y entrenar en un nuevo conjunto de datos. La MPNet preconfigurada consta de una capa de entrada, cuatro capas ocultas y una capa de salida. El número de entradas a esta red se establece en 108 y el número de salidas de la red se establece en 4. El tamaño de codificación para el entorno del mapa se establece en [10 10].

Como alternativa, puede utilizar la función mpnetLayers para crear un MPNet personalizado con una cantidad variable de entradas, dependiendo del tamaño de codificación del entorno del mapa. También puede ajustar la cantidad de capas ocultas y sus tamaños, así como la cantidad de capas abandonadas y sus probabilidades de abandono dentro de la red. Luego puede configurar esta red personalizada para entrenamiento en un espacio de estado SE(2) utilizando el objeto mpnetSE2.

Puede utilizar entornos de mapas únicos o múltiples para entrenar y probar una MPNet. Cuando utiliza un entorno de mapa único, el entorno de prueba debe ser el mismo que el entorno utilizado para entrenar MPNet.

Durante la fase de entrenamiento, la red entrena los pesos hasta que se minimiza la pérdida cuadrática media ponderada entre el estado previsto y el estado real (ground-truth).

Durante la fase de simulación e implementación, el estado inicial especificado en la entrada se considera como el estado actual para la primera iteración. Para iteraciones posteriores, el siguiente estado previsto devuelto por la red se considera como el estado actual. Las iteraciones se repiten hasta que el estado actual alcanza el estado objetivo deseado.

MPNet simulation and deployment phase

Entrene MPNet desde cero

Puede entrenar un MPNet desde cero en un nuevo conjunto de datos utilizando la función trainnet (Deep Learning Toolbox). Utilice la función trainingOptions (Deep Learning Toolbox) para especificar los hiperparámetros para entrenar la red. Puede utilizar la función mpnetPrepareData para preprocesar el conjunto de datos de entrenamiento. La función mpnetPrepareData utiliza un enfoque de codificación de conjuntos de puntos base para codificar los datos de entrenamiento. La función llama internamente al objeto bpsEncoder y a la función del objeto encode para codificar los datos antes del entrenamiento.

En el caso de un entorno de mapa único, debe utilizar un mapa fijo para entrenar y probar la red. Además, utilice la pérdida de entrenamiento para evaluar la precisión de la red. Para obtener información sobre cómo entrenar MPNet en un entorno de mapa único, consulte Entrene MPNet en un entorno de mapa único.

Si entrena MPNet en un gran conjunto de datos de entrenamiento creado utilizando múltiples entornos de mapas, debe calcular tanto la pérdida de entrenamiento como la pérdida de validación para ajustar la precisión de la red. Para obtener información sobre cómo entrenar MPNet en múltiples entornos de mapas, consulte Entrene un muestreador basado en aprendizaje profundo para la planificación del movimiento. Este ejemplo utiliza el MPNet entrenado para el muestreo del espacio de estados. El ejemplo Capacitación de MPNet con datos personalizados para la planificación del movimiento muestra cómo entrenar MPNet y realizar la planificación del movimiento.

Después de entrenar la red, utilice la función predict del objeto mpnetSE2 de forma iterativa para encontrar las muestras entre un estado inicial y un estado objetivo en un entorno de prueba. Si tiene ground-truth, puede verificar la precisión de la red calculando la pérdida entre el estado previsto y el estado de ground-truth. Puede utilizar la función loss del objeto mpnetSE2 para calcular la precisión de la red.

Realizar muestreo de espacio de estados utilizando MPNet

Utilice el objeto stateSamplerMPNET para crear un muestreador de estados utilizando un MPNet entrenado previamente. Luego puede utilizar el método sample del objeto stateSamplerMPNet para calcular las muestras aprendidas.

Los enfoques de muestreo clásicos, como el muestreo uniforme, generan una mayor cantidad de muestras y no todas las muestras generadas pueden tener un impacto en la ruta final. Cuando se utilizan estas muestras con un planificador basado en muestreo, el proceso de planificación se vuelve lento e ineficiente, especialmente para espacios de estados con una gran cantidad de dimensiones. Por otro lado, el muestreo de estado basado en MPNet genera muestras aprendidas que pueden sesgar la ruta hacia la solución óptima. Sin embargo, el muestreo aprendido no puede garantizar la integridad probabilística y la optimización asintótica que sí ofrece el muestreo uniforme. Para garantizar una solución, puede generar muestras aprendidas para un número fijo de iteraciones, después de las cuales puede cambiar al muestreo uniforme. Esta estrategia garantiza una solución óptima, si la solución óptima existe.

Plot comparing samples generated by MPNet state sampling, uniform sampling, and combining MPNet state sampling and uniform sampling

Puede utilizar la propiedad MaxLearnedSamples del objeto stateSamplerMPNET para especificar la cantidad de iteraciones después de las cuales el muestreador de estado MPNet calcula muestras utilizando el enfoque de muestreo uniforme.

Para obtener información sobre cómo realizar un muestreo informado utilizando MPNet y comprender el efecto de combinar el muestreo aprendido y el enfoque de muestreo uniforme, consulte Realice muestreos informados con MPNet.

Para acelerar la planificación del movimiento, puede utilizar el muestreo de estado de MPNet con un planificador de rutas. Este enfoque reduce la cantidad de muestras necesarias para encontrar una ruta factible y acelera la planificación del movimiento. Puede configurar un objeto de muestra de estado de MPNnet y especificarlo como entrada para un planificador de rutas. El planificador de rutas utilizará las muestras devueltas por el muestreador de estado como semillas para encontrar la ruta óptima entre una pose inicial y una meta. Para obtener información sobre cómo utilizar el muestreador de estado MPNet para la planificación del movimiento, consulte Muestra de espacio de estados utilizando MPNet previamente entrenado y realización de planificación de movimiento.

El ejemplo Acelere la planificación del movimiento con un muestreador basado en aprendizaje profundo compara el rendimiento del muestreo de estado de MPNet con el muestreo uniforme utilizando métricas de evaluación como el tiempo de ejecución, la longitud de la ruta y la suavidad.

Realizar la planificación de movimiento con MPNet Path Planner

Utilice el objeto plannerMPNET para crear un planificador de rutas utilizando MPNet entrenado previamente. Luego puede utilizar la función plan del objeto plannerMPNET para calcular la ruta entre dos estados en un entorno de mapa conocido o desconocido.

El planificador de rutas MPNet es un planificador bidireccional y converge más rápidamente hacia la solución óptima. El planificador de rutas MPNet utiliza dos enfoques de planificación para calcular rutas sin colisiones: 1) Planificación de trayectorias neuronales y 2) Planificación de trayectorias clásicas. Cambia de la planificación de ruta neuronal a la planificación de plan clásico cuando encuentra dificultades para calcular una ruta libre de colisiones entre dos estados. Para obtener información sobre cómo funciona el planificador de rutas MPNet, consulte la sección Algoritmos de plannerMPNET.

El ejemplo Planificar la ruta entre dos estados mediante el Planificador de rutas de MPNet muestra cómo realizar la planificación de movimiento utilizando el planificador de rutas MPNet.

Utilice MPNet preentrenado

Navigation Toolbox envía MPNet previamente entrenado como archivos .mat que puedes cargar en el espacio de trabajo MATLAB® y usar directamente para la predicción. Primero, debe almacenar esta red previamente entrenada en la propiedad Network del objeto mpnetSE2 y luego usar el objeto stateSamplerMPNET o plannerMPNET para el muestreo del espacio de estados o la planificación de rutas, respectivamente.

Referencias

[1] Prokudin, Sergey, Christoph Lassner, and Javier Romero. “Efficient Learning on Point Clouds with Basis Point Sets.” In 2019 IEEE/CVF International Conference on Computer Vision Workshop (ICCVW), 3072–81. Seoul, Korea (South): IEEE, 2019. https://doi.org/10.1109/ICCVW.2019.00370.

[2] Qureshi, Ahmed Hussain, Yinglong Miao, Anthony Simeonov, and Michael C. Yip. “Motion Planning Networks: Bridging the Gap Between Learning-Based and Classical Motion Planners.” IEEE Transactions on Robotics 37, no. 1 (February 2021): 48–66. https://doi.org/10.1109/TRO.2020.3006716.

[3] Qureshi, Ahmed H., and Michael C. Yip. “Deeply Informed Neural Sampling for Robot Motion Planning.” In 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 6582–88. Madrid: IEEE, 2018. https://doi.org/10.1109/IROS.2018.8593772.

Consulte también

| | | |

Temas