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.

Simular el seguimiento de trayectoria en la plataforma objetivo en tiempo real Speedgoat

Desde R2025a

Este ejemplo muestra cómo realizar simulaciones en tiempo real para el seguimiento de trayectorias en un entorno complejo utilizando plataformas objetivo en tiempo real Speedgoat. Puede utilizar este ejemplo para probar y validar la capacidad del vehículo para seguir trayectorias con precisión en un entorno complejo y dinámico.

Para ejecutar este ejemplo, debe instalar el Speedgoat I/O Blockset y el paquete de soporte Simulink® Real-Time™.

  • Para instalar Speedgoat I/O Blockset, vaya a www.speedgoat.com/extranet, el portal del cliente de Speedgoat. Siga las instrucciones para descargar e instalar el Speedgoat I/O Blockset.

  • Descargue e instale el paquete de soporte Simulink Real-Time utilizando Add-On Explorer. Para obtener más información sobre la instalación de complementos, consulte Obtener y administrar complementos.

Configuración del sistema

En este ejemplo, utilizará tres sistemas distintos, cada uno configurado para tareas específicas dentro del marco de simulación.

  • Host - La computadora host contiene un modelo de Simulink que actúa como interfaz principal para administrar la simulación general y coordinar las interacciones entre el prototipo de control rápido (RCP) y el sistema Hardware-in-the-Loop (HIL).

  • Sistema de creación de prototipos de control rápido: este sistema implementa el modelo de Simulink® para el seguimiento de trayectorias en una plataforma objetivo en tiempo real de rendimiento Speedgoat para guiar al vehículo de destino a lo largo de una trayectoria predefinida. El sistema calcula los valores del ángulo de dirección y de la aceleración.

  • Sistema Hardware-in-the-Loop: este sistema implementa el modelo de Simulink® para representar la dinámica del vehículo en una plataforma objetivo en tiempo real de la unidad Speedgoat para simular la respuesta del vehículo. El sistema HIL recibe los ángulos de dirección y los comandos de aceleración como entradas del sistema RCP y simula la maniobra del vehículo. El sistema envía información sobre el estado actual del vehículo, incluida la posición y la velocidad, al sistema RCP para su validación y corrección de errores. Al comparar el estado actual del vehículo con la trayectoria deseada, el sistema RCP calcula errores de posición y rumbo, ajustando los comandos de dirección y aceleración en consecuencia. Esto garantiza que el vehículo permanezca en el rumbo, adaptándose dinámicamente a los cambios de velocidad o dirección y manejando eficazmente cualquier desviación de la trayectoria para una navegación fluida y precisa.

El resto del ejemplo explica los modelos de Simulink dentro del marco de simulación y cómo implementar y ejecutar los modelos de Simulink en las plataformas objetivo en tiempo real de Speedgoat.

Marco de simulación

Esta sección explica estos tres modelos de Simulink que componen el marco de simulación para la simulación de seguimiento de trayectoria en tiempo real.

  1. Modelo de host: El modelo proporciona el escenario de entrada y la trayectoria de referencia global para seguir la trayectoria. Además, incluye un subsistema de monitoreo que permite visualizar los resultados de la simulación. El modelo utiliza la función auxiliar helperPlanRoadNetworkPath para calcular la trayectoria de referencia global.

  2. Modelo de seguidor de trayectoria : Este modelo implementa la técnica de seguimiento de trayectoria y calcula las entradas de control, específicamente la aceleración y el ángulo de dirección. El modelo Path Follower utiliza el bloque Pure Pursuit y el bloque PID Controller para calcular los valores de aceleración y ángulo de dirección.

  3. Modelo del vehículo: Este modelo simula el movimiento del vehículo y la respuesta a las entradas de control considerando la dinámica física del vehículo. El modelo utiliza un modelo de bicicleta de 3 grados de libertad (3DOF), acoplado a un sistema de transmisión simple.

Estos modelos utilizan estas funciones auxiliares para cargar los parámetros necesarios para la simulación.

  • Funciones auxiliares helperScenarioParams para cargar el entorno de simulación y los parámetros de planificación de trayectoria global.

  • Funciones auxiliares helperPathFollowerParams y helperVehicleParams para cargar los parámetros del controlador y del vehículo, respectivamente.

Revisar el modelo de host

Abra el modelo de Simulink que se ejecuta en la computadora host y proporciona el escenario de entrada y la trayectoria de referencia global para seguir la trayectoria.

open_system("Host")

Shows configuration of host simulink model. Model has monitor path following subsystem, scenario subsystem and global planner subsystem. The host simulink model interacts with the RCP and HIL system using data send and data receive blocks

El modelo se compone de tres subsistemas clave: Scenario, Global Planner y Monitor Path Following. El bloque Data Send transmite datos al sistema RCP. El bloque Data Receive recibe datos de los sistemas RCP y HIL. Los bloques Data Send y Data Receive utilizan el Protocolo de datagramas de usuario (UDP) para la comunicación.

Subsistema de escenarios

El subsistema Scenario configura el escenario de entrada para el seguimiento de trayectoria utilizando la función auxiliar helperScenarioParams. El escenario y los parámetros del escenario se almacenan en un archivo .mat. Esta función carga estos parámetros:

  • Información de la red de carreteras: nodos, bordes y costes de borde que definen la estructura y los costes de recorrido de la red de carreteras.

  • Rutas en caché: trayectorias precalculadas para una búsqueda eficiente de trayectorias, junto con un mapeo desde los bordes a estas trayectorias.

  • Tamaño de la trayectoria de referencia: Un tamaño fijo para la trayectoria para garantizar la coherencia en las salidas de la planificación de trayectorias. Aumentar el tamaño de la trayectoria de referencia puede generar una trayectoria más detallada con waypoints adicionales, lo que puede generar una navegación más fluida y un seguimiento de la trayectoria más preciso. Sin embargo, también aumenta la carga computacional. En este ejemplo, el tamaño de la trayectoria de referencia se establece en 500.

  • Tiempo de muestreo: El intervalo en el que se actualiza la simulación. En este ejemplo, el tiempo de muestreo se establece en 0,001 segundos.

  • Poses iniciales y finales:Las posiciones y orientaciones iniciales y finales del vehículo dentro de la simulación.

Puede especificar valores personalizados para el escenario de entrada y los parámetros del escenario utilizando la función helperScenarioParams. Primero, almacene el escenario y los parámetros del escenario en un archivo .mat. Luego, utilice la función helperScenarioParams para cargar el escenario de entrada y los parámetros del escenario para la simulación. Este ejemplo utiliza un entorno de mina a cielo abierto como escenario de entrada. El escenario y los parámetros del escenario se almacenan en el archivo OpenPitMineRoadNetwork.mat.

Cargue el escenario de entrada y los nodos correspondientes y las trayectorias almacenadas en caché en el espacio de trabajo MATLAB®.

T = load("OpenPitMineRoadNetwork.mat","mapMatrix","nodes","cachedPaths");

Crear un mapa de ocupación del escenario de entrada.

map = occupancyMap(T.mapMatrix);

Visualiza el mapa y la trayectoria de la red vial.

figure
show(map)
hold on
scatter(T.nodes(:,1),T.nodes(:,2),5,"o","r")
pathIds = unique(T.cachedPaths(:,1)) ;
for i=1:length(pathIds)
    id = find(pathIds(i)==T.cachedPaths(:,1));
    h = plot(T.cachedPaths(id,2),T.cachedPaths(id,3),"r");
end
legend(h,"Road Network",Location="southeastoutside")

Subsistema de planificación global

El subsistema Global Planner utiliza la función auxiliar helperPlanRoadNetworkPath para calcular la trayectoria de referencia global teniendo en cuenta los parámetros del escenario y el radio de giro mínimo del vehículo. El planificador calcula la trayectoria óptima utilizando:

  1. Un algoritmo A* para determinar la mejor trayectoria a través del gráfico de la red de carreteras, desde el nodo de inicio hasta el nodo de destino, utilizando trayectorias almacenadas en caché para mayor eficiencia.

  2. Para los segmentos de entrada y salida, el planificador emplea Hybrid A* para generar trayectorias precisas, garantizando que el vehículo avance durante estas maniobras.

  3. Finalmente, fusiona las vías de entrada, red de carreteras y salida en un único camino continuo. Luego, la trayectoria combinada se ajusta para que coincida con el tamaño de la trayectoria de referencia especificada, lo que garantiza un espaciado uniforme entre waypoints.

Una vez calculada la trayectoria de referencia global, el planificador global activa el sistema RCP para iniciar el seguimiento de trayectoria.

Subsistema de seguimiento de trayectorias de monitorización

El subsistema Monitor Path Following monitorea si el vehículo ha alcanzado el punto objetivo, evalúa el error de seguimiento en tiempo real y genera salidas visuales. El subsistema utiliza un bloque de función de MATLAB® para supervisar los resultados de seguimiento de trayectoria. Este bloque implementa un código de MATLAB personalizado para generar salidas visuales y facilitar la evaluación del rendimiento de seguimiento de trayectoria del vehículo directamente dentro del modelo de Simulink. Cuando el vehículo alcanza su punto objetivo designado, el subsistema detiene automáticamente la simulación. El subsistema muestra estos resultados en tiempo real.

  • Ruta del vehículo: se refiere a la visualización de la trayectoria real del vehículo en comparación con la trayectoria deseada. Muestra con qué precisión es capaz el vehículo de seguir la trayectoria de referencia.

  • Velocidad lineal: este gráfico muestra los cambios en la velocidad del vehículo a medida que se mueve a lo largo de la trayectoria. Puede utilizar este gráfico para analizar patrones de aceleración y desaceleración y determinar si el vehículo mantiene la velocidad deseada durante toda su maniobra.

  • Ángulo de dirección: este gráfico muestra cómo cambia el ángulo de dirección con el tiempo a medida que el vehículo recorre la trayectoria. Proporciona información sobre las entradas de control necesarias para mantener la trayectoria deseada y puede resaltar cualquier ajuste de dirección excesivo.

  • Error de seguimiento: este gráfico ilustra la desviación del vehículo de la trayectoria deseada, medida como la distancia euclidiana entre la posición actual del vehículo y el punto más cercano en la trayectoria de referencia.

Revisar el modelo de seguidor de trayectoria

Cargue y abra el modelo de Simulink para seguir la trayectoria.

open_system("PathFollower")

El modelo de Simulink para el seguimiento de trayectorias contiene tres subsistemas: Data Receive, Path Follower y Data Send.

Subsistemas de recepción y envío de datos

El subsistema Data Receive recopila datos del modelo host de Simulink y del sistema HIL. Envía estos datos al subsistema Path Follower. El modelo de host proporciona la trayectoria de referencia y una señal de activación para habilitar Path Follower después de calcular la trayectoria de referencia global. El sistema HIL proporciona la posición y la velocidad actuales del vehículo al subsistema Path Follower. Estas entradas ayudan a corregir errores y calcular el ángulo de dirección y los comandos de aceleración para maniobrar el vehículo a lo largo de la trayectoria de referencia a la velocidad deseada.

El subsistema Data Send transmite los comandos de dirección y aceleración al sistema HIL para controlar la maniobra del vehículo y al modelo host de Simulink para fines de visualización.

Subsistema seguidor de trayectoria

El subsistema Path Follower calcula la aceleración y el ángulo de dirección para seguir la trayectoria. El subsistema utiliza las funciones auxiliares helperPathFollowerParams y helperVehicleParams para especificar los parámetros del controlador y del vehículo, respectivamente, para calcular la aceleración y el ángulo de dirección.

La función helperPathFollowerParams carga estos parámetros:

  • Velocidad lineal deseada: velocidad inicial que un vehículo desea alcanzar o mantener al comienzo de una maniobra.

  • Distancia de anticipación: distancia por delante de la posición actual del vehículo que el seguidor de trayectoria considera para determinar la trayectoria deseada. Una distancia de anticipación mayor puede generar un seguimiento de trayectoria más suave y una estabilidad mejorada, pero puede generar tiempos de respuesta más lentos. Por el contrario, una distancia de anticipación menor permite una respuesta más rápida pero puede causar oscilaciones mayores y posibles inestabilidades, especialmente durante maniobras cerradas. En este ejemplo, este valor del parámetro se establece en 3 m.

  • Ganancia P del controlador PID: la ganancia proporcional (ganancia P) determina la intensidad de la respuesta inmediata del controlador a un error. Una ganancia P más alta aumenta la capacidad de respuesta del sistema a los cambios y realiza ajustes más rápidos para minimizar el error. Sin embargo, si se establece en un valor demasiado alto, puede provocar sobreimpulsos y oscilaciones. Por el contrario, una ganancia P menor da como resultado un sistema menos sensible, lo que puede reducir el sobreimpulso pero también puede conducir a una corrección de errores más lenta y potencialmente a un error de estado estacionario. En este ejemplo, la ganancia P para el controlador longitudinal y de dirección se establece empíricamente en 10.

  • Ganancia I del controlador PID: la ganancia integral (ganancia I) determina la capacidad del controlador para eliminar errores de estado estacionario al integrar el error acumulado a lo largo del tiempo. Una mayor ganancia I reduce los errores de estado estacionario pero puede causar sobreimpulsos y oscilaciones, lo que potencialmente puede generar inestabilidad. Por el contrario, una ganancia I menor minimiza el sobreimpulso y las oscilaciones pero puede generar errores de estado estacionario mayores. En el ejemplo, la ganancia I para el controlador longitudinal y de dirección se establece empíricamente en 0,1.

La función auxiliar helperVehicleParams carga estos parámetros del vehículo, además de otros parámetros de dinámica del vehículo:

  • Aceleración lateral máxima: la aceleración lateral más alta que el vehículo puede soportar de forma segura durante un giro.

  • Aceleración máxima: velocidad máxima a la que el vehículo puede aumentar su velocidad.

  • Desaceleración máxima: velocidad máxima a la que el vehículo puede reducir su velocidad de forma segura.

  • Velocidad máxima de ángulo de dirección: velocidad máxima a la que puede cambiar el ángulo de dirección.

Abra el subsistema Path Follower.

open_system("PathFollower/Path Follower")

El subsistema Path Follower calcula la aceleración y el ángulo de dirección utilizando estos tres componentes principales:

  • MATLAB Function Block: Calcula la velocidad lineal objetivo utilizando la aceleración lateral máxima del vehículo y la velocidad angular actual del sistema HIL. El bloque asegura que la velocidad lineal objetivo no exceda la velocidad lineal deseada. En este ejemplo, la velocidad deseada se establece en 10 m/s. El bloque también garantiza que cualquier cambio de velocidad se produzca dentro de los límites máximos de aceleración y desaceleración. Esto evita cambios repentinos o abruptos en la velocidad, manteniendo un perfil de velocidad suave.

  • Pure Pursuit Block - Calcula la velocidad lineal final y la velocidad angular utilizando la distancia de anticipación, la trayectoria de referencia, la velocidad lineal objetivo y la posición actual del vehículo.

  • Controlador PID longitudinal: calcula la aceleración en función del error entre la velocidad lineal actual devuelta por el sistema HIL y la velocidad lineal calculada utilizando el bloque Pure Pursuit.

  • Controlador PID de dirección: calcula el ángulo de dirección basándose en el error entre la velocidad angular actual devuelta por el sistema HIL y la velocidad angular calculada utilizando el bloque Pure Pursuit.

Puede ajustar los parámetros del controlador utilizando el cuadro de edición en el subsistema Path Follower. Alternativamente, también puede editar la función auxiliar helperPathFollowerParams para especificar valores personalizados para los parámetros del controlador.

Revisar el modelo del vehículo

Abra el modelo Vehicle.

load_system("Vehicle")
open_system("Vehicle/Vehicle")

fEl modelo del vehículo utiliza el bloque Vehicle Body 3DOF para calcular los movimientos longitudinales, laterales y de viraje. El bloque Vehicle Body 3DOF considera la masa de la carrocería y la resistencia aerodinámica que actúa entre los ejes debido a la aceleración y la dirección. La pose y velocidad finales calculadas especifican el estado actualizado del vehículo en el entorno de simulación.

La función auxiliar helperVehicleParams especifica los parámetros longitudinales y laterales del vehículo que el bloque Vehicle Body 3DOF requiere para calcular la posición y la velocidad finales del vehículo. Para obtener información sobre los parámetros longitudinales y laterales del vehículo, consulte los parámetros Longitudinales y Laterales en Vehicle Body 3DOF (Vehicle Dynamics Blockset). El modelo del vehículo precarga la función helperVehicleParameters, lo que permite que el bloque Vehicle Body 3DOF acceda automáticamente a los valores de los parámetros necesarios.

Configurar los bloques UDP Send y UDP Receive

Configure los bloques de envío UDP y UDP Receive en los modelos de Simulink con direcciones IP válidas. La función auxiliar helperIPAddresses especifica las direcciones IP para los modelos Host, Path Follower y Vehicle. Debe editar la función auxiliar para especificar valores personalizados para las direcciones IP.

% Rapid Control Prototyping (RCP) system for Path Follower Model
ipAddress.rcpSystem = '127.0.0.1';
% Hardware-in-the-Loop (HIL) System for the Vehicle Model
ipAddress.hilSystem = '127.0.0.2';
% Host computer
ipAddress.hostSystem = '120.0.0.1';

Implementar modelos de Simulink en Speedgoat

Esta sección explica cómo implementar los modelos de Simulink Path Follower y Vehicle en las plataformas objetivo en tiempo real de Speedgoat para implementar los sistemas RCP y HIL, respectivamente. Para implementar los modelos de Simulink en las plataformas objetivo en tiempo real de Speedgoat mediante la interfaz gráfica de usuario (GUI) o un enfoque programático.

Enfoque de interfaz gráfica de usuario

Para implementar los modelos en las plataformas objetivo mediante la GUI, siga los pasos del 1 al 4:

Paso 1: En el Editor de Simulink, desde la pestaña Apps, haga clic en Simulink Real-Time. Seleccione la plataforma de destino Speedgoat adecuada.

Al abrir la app, se agrega una pestaña Real-Time a la barra de herramientas. En la pestaña Real-Time, en la lista de objetivos, haga clic en SLRT Explorer.

Paso 2: Configurar sistemas RCP y HIL

Especifique el nombre de la computadora de destino como Sistema RCP y la dirección IP del modelo Path Follower. Cambie el indicador Desconectado a Conectado para conectarse a la computadora de destino.

En el panel Targets, haga clic en Add target para agregar una computadora de destino para el sistema HIL. Especifique el nombre de la computadora de destino como Sistema HIL y la dirección IP del modelo del vehículo. Cambie el indicador Desconectado a Conectado para conectarse a la computadora de destino.

Paso 3: Implementar el modelo de seguidor de trayectoria en el sistema RCP

Abra el modelo Path Follower. En la pestaña Real-Time, seleccione RCP System. Asegúrese de que el sistema RCP esté conectado a la plataforma objetivo Speedgoat. Seleccione Run on Target para compilar e implementar el modelo Path Follower en el sistema RCP.

open_system("PathFollower")

Paso 4: Implementar el modelo del vehículo en el sistema HIL

Abra el modelo Vehicle. En la pestaña Real-Time, seleccione HIL System. Asegúrese de que el sistema HIL esté conectado a la plataforma objetivo Speedgoat. Seleccione Run on Target para compilar e implementar el modelo de vehículo en el sistema HIL .

open_system("Vehicle")

Enfoque programático

Alternativamente, puede utilizar el enfoque programático para configurar e implementar los sistemas RCP y HIL. Utilice la función auxiliar helperRealTimeSimulation para especificar los nombres de modelo de Simulink para implementar los modelos en las plataformas objetivo. La función auxiliar helperRealTimeSimulation obtiene las direcciones IP utilizando la función auxiliar helperIPAddresses.

model = "PathFollower";
helperRealTimeSimulation(model)
model = "Vehicle";
helperRealTimeSimulation(model)

Ejecutar simulación y visualizar resultados

Abra el modelo Host y ejecute la simulación desde la pestaña SIMULATION.

open_system("Host")

El subsistema de seguimiento de trayectoria del monitor en el modelo host muestra los resultados de la simulación en tiempo real.

outputResults.gif

  • Puede observar que la trayectoria real del vehículo está mucho más cerca de la trayectoria de referencia. Desviaciones más pequeñas entre estas trayectorias indican la precisión del sistema. En zonas con alta curvatura, puede haber mayores desviaciones entre la trayectoria real del vehículo y la trayectoria de referencia. Para reducir estas desviaciones y mejorar el rendimiento general, puede ajustar los parámetros del controlador.

  • El gráfico de velocidad lineal muestra cómo varía la velocidad del vehículo a lo largo del tiempo. El controlador intenta mantener una velocidad deseada de 10 m/s en los tramos más rectos de la carretera. Sin embargo, para garantizar la estabilidad del vehículo, éste reduce la velocidad en los tramos con grandes curvas de la carretera.

  • El gráfico del ángulo de dirección ilustra cómo se ajustan los comandos de control para el ángulo de dirección a lo largo de la trayectoria. El ángulo de dirección generalmente sigue la curvatura de la trayectoria de referencia de entrada, y una mayor curvatura en la trayectoria de entrada produce ángulos de dirección mayores.

  • El gráfico de error de seguimiento cuantifica la calidad del seguimiento de la trayectoria midiendo la distancia más corta entre la trayectoria real del vehículo y la trayectoria de referencia. Cuanto menor sea este valor, mejor será el rendimiento. Se puede observar que el error de seguimiento alcanza los 4 metros en dos puntos, que corresponden a las partes de mayor curvatura de la trayectoria. Para minimizar este error, puede intentar ajustar los parámetros del controlador o utilizar seguidores de trayectoria avanzados como TEB (banda elástica temporizada) o MPPI (integral de trayectoria predictiva del modelo).

Comprobar el tiempo de ejecución de la tarea

Para mantener la estabilidad y confiabilidad del sistema en tiempo real, el tiempo máximo de ejecución de las plataformas objetivo en tiempo real debe ser menor que la tasa base. Puede utilizar el Monitor TET para ver el tiempo de ejecución de la tarea de la aplicación en tiempo real que se ejecuta en las plataformas objetivo de Speedgoat®. Desde el Editor Simulink, en la pestaña Real-Time, seleccione TET Monitor para ver el tiempo de ejecución de la tarea.

Detener la aplicación

Utilice el botón Stop Application en la pestaña RUN ON TARGET para detener las aplicaciones en tiempo real que se ejecutan en las plataformas objetivo de Speedgoat.

Consulte también

Bloques

Objetos

Temas

Sitios web externos