Vector Field Histogram
Evite obstáculos usando el histograma de campo vectorial

Bibliotecas:
Navigation Toolbox /
Control Algorithms
Descripción
El bloque Vector Field Histogram (VFH) permite que su vehículo evite obstáculos según los datos del sensor de alcance. Dada una lectura del sensor de rango en términos de rangos y ángulos, y una dirección objetivo hacia la cual conducir, el controlador VFH calcula una dirección de dirección libre de obstáculos.
Para obtener más información sobre los detalles del algoritmo, consulte Histograma de campo vectorial en Algoritmos.
Ejemplos
Seguimiento de caminos con evasión de obstáculos en Simulink
Utilice Simulink ® para evitar obstáculos mientras sigue la ruta de un robot con accionamiento diferencial. Este ejemplo utiliza ROS para enviar y recibir información de un simulador basado en MATLAB. Puede reemplazar el simulador con otros simuladores basados en ROS como Gazebo®.
Limitaciones
Las entradas
Ranges
yAngles
están limitadas a 4000 elementos al generar código para modelos que usan este bloque.
Puertos
Entrada
Valores de rango de datos de escaneo, especificados como un vector de escalares en metros. Estos valores de rango son distancias desde un sensor en ángulos específicos. El vector debe tener la misma longitud que el vector Angles correspondiente.
Valores de ángulo de datos de escaneo, especificados como un vector de escalares en radianes. Estos valores de ángulos son los ángulos específicos de los rangos especificados. El vector debe tener la misma longitud que el vector Ranges correspondiente.
Dirección de destino del vehículo, especificada como escalar en radianes. La dirección de avance del vehículo se considera cero radianes, con ángulos positivos medidos en sentido contrario a las agujas del reloj. Puede utilizar la salida TargetDir del bloque Pure Pursuit al generar controles a partir de un conjunto de puntos de referencia.
Salida
Dirección de dirección del vehículo, especificada como escalar en radianes. Esta dirección libre de obstáculos se calcula según el algoritmo VFH+. La dirección de avance del vehículo se considera cero radianes, con ángulos positivos medidos en sentido contrario a las agujas del reloj.
Parámetros
Principal
Número de contenedores utilizados para crear los histogramas, especificados como escalar. Este parámetro no se puede ajustar. Puede establecer este parámetro solo cuando se inicializa el objeto.
Límites para lecturas de rango en metros, especificados como un vector de escalares de dos elementos. Las lecturas de rango ingresadas solo se consideran si se encuentran dentro de los límites de distancia. Utilice el límite de distancia inferior para ignorar falsos positivos debidos a un rendimiento deficiente del sensor en rangos inferiores. Utilice el límite superior para ignorar obstáculos que estén demasiado lejos del vehículo.
Umbrales para calcular el histograma binario, especificados como un vector de escalares de dos elementos. El algoritmo utiliza estos umbrales para calcular el histograma binario a partir de la densidad de obstáculos polares. Los valores de densidad de obstáculos polares superiores al umbral superior se representan como espacio ocupado (1) en el histograma binario. Los valores menores que el umbral inferior se representan como espacio libre (0). Los valores que se encuentran entre los límites se establecen en los valores de un histograma binario calculado previamente, si existe uno de iteraciones anteriores. Si no existe un histograma anterior, el valor se establece como espacio libre (0).
Radio del vehículo, especificado como escalar en metros. Esta dimensión define el círculo más pequeño que puede circunscribir su vehículo. El radio del vehículo se utiliza para tener en cuenta el tamaño del vehículo al calcular la dirección libre de obstáculos.
Distancia de seguridad dejada alrededor de la posición del vehículo además de vehicle radius, especificada como escalar en metros. El radio del vehículo y la distancia de seguridad se utilizan para calcular la dirección libre de obstáculos.
Radio de giro mínimo para el vehículo que se mueve a su velocidad actual, especificado como escalar en metros.
Code generation
— Simular modelo usando código C generado. La primera vez que ejecuta una simulación, Simulink® genera código C para el bloque. El código C se reutiliza en simulaciones posteriores, siempre que el modelo no cambie. Esta opción requiere tiempo de inicio adicional, pero la velocidad de las simulaciones posteriores es comparable aInterpreted execution
.Interpreted execution
— Simular el modelo utilizando el intérprete MATLAB®. Esta opción acorta el tiempo de inicio pero tiene una velocidad de simulación más lenta queCode generation
. Este modo permite depurar el código fuente del bloque.
Ajustable: No
Ponderaciones de la función de coste
Peso de la función de coste para moverse hacia la dirección objetivo, especificado como un escalar. Para seguir una dirección objetivo, configure este peso para que sea mayor que la suma de Current direction weight y Previous direction weight. Para ignorar el costo de la dirección de destino, establezca este peso en 0
.
Peso de la función de coste para mover el vehículo en la dirección del rumbo actual, especificado como un escalar. Los valores más altos de este peso producen rutas eficientes. Para ignorar el costo de dirección actual, establezca este peso en 0
.
Peso de la función de coste para moverse en la dirección de dirección seleccionada previamente, especificado como un escalar. Los valores más altos de este peso producen rutas más suaves. Para ignorar el costo de dirección anterior, establezca este peso en 0
.
Algoritmos
El bloque utiliza el algoritmo VFH+ para calcular la dirección libre de obstáculos. Primero, el algoritmo toma los rangos y ángulos de los datos del sensor de rango y construye un histograma polar para las ubicaciones de los obstáculos. Luego, utiliza los umbrales del histograma de entrada para calcular un histograma binario que indica las direcciones ocupadas y libres. Finalmente, el algoritmo calcula un histograma enmascarado, que se calcula a partir del histograma binario en función del radio de giro mínimo del vehículo.
El algoritmo selecciona múltiples direcciones de dirección en función del espacio abierto y las posibles direcciones de conducción. Una función de coste, con ponderaciones correspondientes a las direcciones anterior, actual y objetivo, calcula el coste de diferentes direcciones posibles. Luego, el algoritmo devuelve una dirección libre de obstáculos con un coste mínimo. Usando la dirección libre de obstáculos, puede ingresar comandos para mover su vehículo en esa dirección.
Para utilizar este bloque para su propia aplicación y entorno, debe ajustar los parámetros del algoritmo. Los valores de los parámetros dependen del tipo de vehículo, el sensor de distancia y el hardware que utilice. Para obtener más información sobre el algoritmo VFH, consulte controllerVFH
.
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante Simulink® Coder™.
Historial de versiones
Introducido en R2019b
Consulte también
Bloques
- Pure Pursuit | Publish (ROS Toolbox) | Subscribe (ROS Toolbox) | Timed Elastic Band
Clases
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)