Timed Elastic Band
Planificar la ruta para evitar obstáculos y generar trayectorias óptimas en el tiempo
Desde R2025a

Bibliotecas:
Navigation Toolbox /
Control Algorithms
Descripción
El bloque de banda elástica temporizada (TEB) calcula una ruta factible que evita obstáculos mientras guía el vehículo hacia una ruta de referencia específica. La ruta de referencia normalmente se calcula utilizando un planificador de ruta global como plannerRRTStar
.
El planificador de ruta local suaviza la ruta mientras optimiza el tiempo de recorrido y mantiene una distancia segura de obstáculos conocidos o desconocidos para el planificador global.
Ejemplos
Evite obstáculos utilizando el Planificador Local TEB en Simulink
Realizar el seguimiento de trayectoria utilizando el planificador local TEB en Simulink.
- Desde R2025a
- Abrir script en vivo
Puertos
Entrada
Pose actual del robot, especificada como un vector de tres elementos con la forma [x y theta]. x y y especifican la posición del robot en metros. theta especifica la orientación del robot en radianes.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Velocidad actual del robot, especificada como un vector de dos elementos con la forma [v w]. v especifica la velocidad lineal del robot en metros por segundo. w especifica la velocidad angular del robot en radianes por segundo.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Información del mapa local, especificado como autobús. El autobús consta de estos campos:
Resolution
- Resolución de la cuadrícula, especificada como un escalar en celdas por metro que representa la cantidad y el tamaño de las ubicaciones de la cuadrícula.GridLocationInWorld
- [x,y] coordenadas mundiales de la esquina inferior izquierda de la cuadrícula, especificadas como un vector de 1 por 2.OccMat
- Valores de la cuadrícula de ocupación, especificados como una matriz h por w. h y w se definen mediante los dos elementos de la propiedadGridSize
del objeto de la cuadrícula de ocupación.GridSize
- Número de filas y columnas en la cuadrícula, especificado como un vector de valor real de 1 por 2 que representa el número de filas y columnas, en ese orden.GridOriginInLocal
- Ubicación de la esquina inferior izquierda de la cuadrícula en coordenadas locales, especificada como un vector de dos elementos, [xLocal yLocal].
Tipos de datos: bus
Ruta de referencia a seguir, especificada como una matriz N por 3.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Límites máximos de velocidad lineal y angular para comandos de velocidad, especificados como un vector positivo de dos elementos. El primer elemento es el límite de velocidad lineal, en metros por segundo, y el segundo elemento es el límite de velocidad angular, en radianes por segundo.
Dependencias
Para habilitar este puerto de entrada, seleccione la casilla de verificación Especificar la velocidad máxima usando el puerto de entrada en la pestaña Trajectory
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Velocidad máxima del vehículo mientras se mueve en dirección inversa, especificada como un escalar positivo. El valor predeterminado es NaN
. Cuando la propiedad se establece en NaN
, el valor de la velocidad inversa máxima es el mismo que el de la velocidad lineal máxima. Las unidades están en metros por segundo.
Dependencias
Para habilitar este puerto de entrada, seleccione la casilla de verificación Especificar la velocidad inversa máxima usando el puerto de entrada en la pestaña Trajectory
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Límites máximos de aceleración lineal y angular para comandos de velocidad, especificados como un vector positivo de dos elementos. El primer elemento es el límite de aceleración lineal, en metros por segundo al cuadrado, y el segundo elemento es el límite de aceleración angular, en radianes por segundo al cuadrado.
Dependencias
Para habilitar este puerto de entrada, seleccione la casilla de verificación Especificar aceleración máxima usando el puerto de entrada en la pestaña Trajectory
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Radio de giro mínimo para el vehículo en la ruta optimizada, especificado como un escalar no negativo. Este valor corresponde al radio del círculo de giro en el ángulo máximo de dirección del vehículo. Las unidades se establecen en metros.
Disminuya este valor para permitir giros bruscos y rotaciones en el lugar. Aumente este valor para limitar los giros bruscos. Cuando aumenta el valor, el vehículo realizará más movimientos hacia adelante y hacia atrás para girar en un espacio restringido.
Dependencias
Para habilitar este puerto de entrada, seleccione la casilla de verificación Especificar el radio de giro mínimo usando el puerto de entrada en la pestaña Trajectory
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Peso del tiempo, especificado como un escalar positivo. Para reducir el duración del recorrido, aumente este valor de peso.
Dependencias
Para habilitar este puerto de entrada, seleccione el parámetro Especificar peso de tiempo usando el puerto de entrada en la pestaña Optimization
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Peso de la función de coste para un movimiento suave, especificado como un escalar positivo. Para obtener una ruta más suave, aumente este valor de peso.
Dependencias
Para habilitar este puerto de entrada, seleccione el parámetro Especificar peso de suavidad usando el puerto de entrada en la pestaña Optimization
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Peso de la función de coste para mantener una distancia segura de los obstáculos, especificado como un escalar positivo.
Dependencias
Para habilitar este puerto de entrada, seleccione el parámetro Especificar el peso del obstáculo usando el puerto de entrada en la pestaña Optimization
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Distancia de seguridad entre el robot y los obstáculos, especificada como escalar positivo, en metros.
Dependencias
Para habilitar este puerto de entrada, seleccione el parámetro Especificar margen de seguridad de obstáculos usando el puerto de entrada en la pestaña Main
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Número de iteraciones para optimizar la trayectoria, especificado como un entero positivo.
Dependencias
Para habilitar este puerto de entrada, seleccione la casilla de verificación Especificar número de iteraciones usando el puerto de entrada en la pestaña Optimization
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Tiempo de anticipación, especificado como un escalar positivo en segundos.
Dependencias
Para habilitar este puerto de entrada, seleccione la casilla de verificación Especificar tiempo de anticipación usando el puerto de entrada en la pestaña Main
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Tolerancia alrededor de la pose objetivo, especificada como un vector de tres elementos con la forma [x y θ]. x y y denotan la posición del robot en las direcciones x y y, respectivamente. Las unidades están en metros. θ es el ángulo de rumbo del robot en radianes.
Dependencias
Para habilitar este puerto de entrada, seleccione la casilla de verificación Especificar tolerancia de objetivo usando el puerto de entradaen la pestaña Main
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Tiempo delta de referencia, especificado como un escalar positivo en segundos. Especifica el tiempo de recorrido entre poses consecutivas.
Dependencias
Para habilitar este puerto de entrada, seleccione la casilla de verificación Especificar el tiempo delta de referencia usando el puerto de entrada en la pestaña Trajectory
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Salida
Comandos de velocidad, devueltos como una matriz N por 2. La primera columna es la velocidad lineal en metros por segundo y la segunda columna es la velocidad angular en radianes por segundo.
Tipos de datos: double
Marcas de tiempo correspondientes a los comandos de velocidad, devueltos como un vector columna de elemento N.
Tipos de datos: double
Ruta optimizada, devuelta como una matriz N por 3. Cada fila tiene el formato [x y theta], que define la posición xy y el ángulo de orientación theta en un punto de la ruta.
Tipos de datos: double
Información extra, devuelto en autobús. El autobús consta de estos campos:
Campo | Descripción |
---|---|
LastFeasibleIdx | Índice que especifica un elemento en la ruta optimizada y las salidas de marca de tiempo hasta el cual la trayectoria es factible. Más allá de este índice, el valor de |
DistanceFromStartPose | Distancia de cada pose en |
HasReachedGoal | Indica si el robot ha alcanzado con éxito la última pose en ReferencePath dentro de una tolerancia y retorna como |
TrajectoryCost | Coste de la trayectoria optimizada para funciones de coste en el algoritmo Timed Elastic Band. |
ExitFlag | Valor escalar que indica la condición de salida de la función
|
Tipos de datos: bus
Parámetros
Para editar los parámetros del bloque de forma interactiva, utilice Property Inspector. Desde la barra de herramientas Simulink®, en la pestaña Simulation, en la galería Prepare, seleccione Property Inspector.
Pestaña principal
Especifique el tiempo de muestra del controlador en segundos. Este bloque solo admite tiempo de muestra discreto.
Seleccione esta casilla de verificación para agregar un puerto de entrada para especificar el parámetro Tiempo de anticipación (s).
Especifique el tiempo de anticipación como un escalar positivo. Unidades en segundos. El controlador genera comandos de velocidad y optimiza la trayectoria hasta que el controlador alcanza el tiempo de anticipación. Un tiempo de anticipación más alto genera comandos de velocidad más lejanos en el futuro. Esto permite que el robot reaccione antes ante obstáculos invisibles, pero aumenta el tiempo de ejecución del controlador. Por el contrario, un tiempo de anticipación más corto reduce el tiempo disponible para reaccionar ante obstáculos nuevos y desconocidos, pero permite que el controlador funcione a un ritmo más rápido.
Dependencias
Para habilitar este parámetro, desmarque la casilla de verificación Especificar tiempo de anticipación usando el puerto de entrada.
Seleccione esta casilla de verificación para agregar un puerto de entrada para especificar el parámetro Tolerancia del objetivo ([m m rad]).
Especifique la tolerancia alrededor de la pose objetivo como un vector de tres elementos con la forma [x y θ]. x y y denotan la posición del robot en las direcciones x y y, respectivamente. Las unidades están en metros. θ es el ángulo de rumbo del robot en radianes. Este valor de tolerancia objetivo especifica el límite para determinar si el robot ha alcanzado la pose objetivo.
Dependencias
Para habilitar este parámetro, desmarque la casilla de verificación Especificar tolerancia de objetivo usando el puerto de entrada.
Especifique la forma del robot como Rectangle
o Point
.
Especifique el tamaño del robot como un vector positivo de dos elementos con la forma [longitud ancho], en metros.
Matriz de transformación, especificada como un objeto se2
que define una matriz de transformación SE(2) o un vector fila de tres elementos que representa el origen del robot. El vector tiene la forma [x, y, theta]. Cuando se especifica el origen como [x, y, theta], el bloque Timed Elastic Band
calcula la matriz de transformación SE(2) asociada y la almacena en el campo FixedTransform
.
El origen predeterminado está en el centro de la parte trasera del robot. Puede utilizar este parámetro para especificar un nuevo origen para el robot en relación con el origen predeterminado.
Este parámetro sólo es válido si el robot tiene forma rectangular.
Seleccione esta casilla de verificación para agregar un puerto de entrada para especificar el parámetro Margen de seguridad de obstáculos (m).
Distancia de seguridad entre el robot y los obstáculos, especificada como escalar positivo, en metros.
Dependencias
Para habilitar este parámetro, desmarque la casilla de verificación Especificar margen de seguridad de obstáculos usando el puerto de entrada.
Pestaña Trayectoria
Seleccione esta casilla de verificación para agregar un puerto de entrada para especificar el parámetro Velocidad máxima ([m/s rad/s]).
Límites máximos de velocidad lineal y angular para comandos de velocidad, especificados como un vector positivo de dos elementos. El primer elemento es el límite de velocidad lineal, en metros por segundo, y el segundo elemento es el límite de velocidad angular, en radianes por segundo.
Dependencias
Para habilitar este parámetro, desmarque la casilla de verificación Especificar la velocidad máxima usando el puerto de entrada.
Seleccione esta casilla de verificación para agregar un puerto de entrada para especificar el parámetro Velocidad inversa máxima (m/s).
Velocidad máxima del vehículo mientras se mueve en dirección inversa, especificada como un escalar positivo. El valor predeterminado es NaN
. Cuando la propiedad se establece en NaN
, el valor de la velocidad inversa máxima es el mismo que el de la velocidad lineal máxima. Las unidades están en metros por segundo.
Dependencias
Para habilitar este parámetro, desmarque la casilla de verificación Especificar la velocidad inversa máxima usando el puerto de entrada.
Seleccione esta casilla de verificación para agregar un puerto de entrada para especificar el parámetro Aceleración máxima ([m/s^2 rad/s^2]).
Límites máximos de aceleración lineal y angular para comandos de velocidad, especificados como un vector positivo de dos elementos. El primer elemento es el límite de aceleración lineal, en metros por segundo al cuadrado, y el segundo elemento es el límite de aceleración angular, en radianes por segundo al cuadrado.
Dependencias
Para habilitar este parámetro, desmarque la casilla de verificación Especificar aceleración máxima usando el puerto de entrada.
Seleccione esta casilla de verificación para agregar un puerto de entrada para especificar el parámetro Radio de giro mínimo (m).
Radio de giro mínimo para el vehículo en la ruta optimizada, especificado como un escalar no negativo. Este valor corresponde al radio del círculo de giro en el ángulo máximo de dirección del vehículo. Las unidades se establecen en metros.
Disminuya este valor para permitir giros bruscos y rotaciones en el lugar. Aumente este valor para limitar los giros bruscos. Cuando aumenta el valor, el vehículo realizará más movimientos hacia adelante y hacia atrás para girar en un espacio restringido.
Dependencias
Para habilitar este parámetro, desmarque la casilla de verificación Especificar el radio de giro mínimo usando el puerto de entrada.
Seleccione esta casilla de verificación para agregar un puerto de entrada para especificar el parámetro Tiempo delta de referencia (s).
Tiempo delta de referencia, especificado como un escalar positivo en segundos. Especifica el tiempo de recorrido entre poses consecutivas. Este parámetro afecta la adición y eliminación de poses para la trayectoria optimizada. Aumente el valor de este parámetro para tener menos poses y redúzcalo para tener más poses en la ruta de salida.
Dependencias
Para habilitar este parámetro, desmarque la casilla de verificación Especificar el tiempo delta de referencia usando el puerto de entrada.
Pestaña Optimización
Seleccione esta casilla de verificación para agregar un puerto de entrada para especificar el parámetro Número de iteraciones.
Número de iteraciones para optimizar la trayectoria, especificado como un entero positivo. Este valor es el número de veces que se produce la interpolación y el controlador llama al solver para optimizar la trayectoria.
Dependencias
Para habilitar este parámetro, desmarque la casilla de verificación Especificar número de iteraciones usando el puerto de entrada.
Seleccione esta casilla de verificación para agregar un puerto de entrada para especificar el parámetro Peso de tiempo.
Ponderación de la función de coste por tiempo, especificada como un escalar positivo. Para reducir el duración del recorrido, aumente este valor de peso.
Dependencias
Para habilitar este parámetro, desmarque la casilla de verificación Especificar peso de tiempo usando el puerto de entrada.
Seleccione esta casilla de verificación para agregar un puerto de entrada para especificar el parámetro Peso de suavidad.
Peso de la función de coste para un movimiento suave, especificado como un escalar positivo. Para obtener una ruta más suave, aumente este valor de peso.
Dependencias
Para habilitar este parámetro, desmarque la casilla de verificación Especificar peso de suavidad usando el puerto de entrada.
Seleccione esta casilla de verificación para agregar un puerto de entrada para especificar el parámetro Peso del obstáculo.
Peso de la función de coste para mantener una distancia segura de los obstáculos, especificado como un escalar positivo. Para priorizar el mantenimiento de una distancia segura de los obstáculos, aumente este valor de peso.
Dependencias
Para habilitar este parámetro, desmarque la casilla de verificación Especificar el peso del obstáculo usando el puerto de entrada.
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante Simulink® Coder™.
Historial de versiones
Introducido en R2025a
Consulte también
Objetos
Bloques
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)