Vector Field Histogram
![](vfh_block.png)
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 distancia. 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.
Limitaciones
Las entradas
Ranges
yAngles
están limitadas a 4000 elementos al generar código para modelos que usan este bloque.
Puertos
Entrada
Ranges — Valores de rango de datos de escaneo
vector de escalares
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.
Angles — Valores de ángulo de datos de escaneo
vector de escalares
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.
TargetDir — Dirección objetivo del vehículo
escalar
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
SteerDir — Dirección de dirección del vehículo
escalar
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
— Número de contenedores utilizados para crear los histogramas.
180
(predeterminado) | escalar
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
[0.05 2]
(predeterminado) | vector de dos elementos de escalares
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
[3 10]
(predeterminado) | vector de dos elementos de escalares
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
0.1
(predeterminado) | escalar
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 alrededor del vehículo
0.1
(predeterminado) | escalar
Distancia de seguridad que se deja alrededor de la posición del vehículo además de vehicle radius, especificada en 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 a la velocidad actual
0.1
(predeterminado) | escalar
Radio de giro mínimo para el vehículo que se mueve a su velocidad actual, especificado como escalar en metros.
Simular con — Especificar el tipo de simulación a ejecutar
Code generation
(predeterminado) | Interpreted execution
Code generation
: simula el modelo utilizando el 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
— Simula el modelo usando 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.
Sintonizable: No
— Ponderación de la función de coste para la dirección objetivo
5
(predeterminado) | escalar
Peso de la función de coste para moverse hacia la dirección objetivo, especificado como un escalar. Para seguir una dirección objetivo, establezca este peso para que sea mayor que la suma de Current direction weight y Previous direction weight. Para ignorar el coste de la dirección objetivo, establezca este peso en 0 .
— Peso de la función de coste para la dirección actual
2
(predeterminado) | escalar
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 coste de dirección actual, establezca este peso en 0 .
— Peso de la función de coste para la dirección anterior
2
(predeterminado) | escalar
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 coste de dirección anterior, establezca este peso en 0 .
Algoritmos
Histograma de campo vectorial
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
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)