Vector Field Histogram
Évitez les obstacles à l'aide de l'histogramme de champ vectoriel
Depuis R2019b
![](vfh_block.png)
Bibliothèques :
Navigation Toolbox /
Control Algorithms
Description
Le bloc Vector Field Histogram (VFH) permet à votre véhicule d'éviter les obstacles en fonction des données du capteur de distance. À partir d'une lecture du capteur de distance en termes de distances et d'angles, et d'une direction cible vers laquelle se diriger, le contrôleur VFH calcule une direction de direction sans obstacle.
Pour plus d'informations sur les détails de l'algorithme, voir Histogramme de champ vectoriel sous Algorithmes.
Limites
Les entrées
Ranges
etAngles
sont limitées à 4000 éléments lors de la génération de code pour les modèles qui utilisent ce bloc.
Ports
Saisir
Ranges — Valeurs de plage à partir des données d'analyse
vecteur de scalaires
Valeurs de plage à partir des données d'analyse, spécifiées sous forme de vecteur de scalaires en mètres. Ces valeurs de plage correspondent aux distances d'un capteur à des angles spécifiés. Le vecteur doit avoir la même longueur que le vecteur Angles correspondant.
Angles — Valeurs d'angle à partir des données numérisées
vecteur de scalaires
Valeurs d'angle issues des données d'analyse, spécifiées sous forme de vecteur de scalaires en radians. Ces valeurs d'angle sont les angles spécifiques des plages spécifiées. Le vecteur doit avoir la même longueur que le vecteur Ranges correspondant.
TargetDir — Direction cible du véhicule
scalaire
Direction cible du véhicule, spécifiée sous forme de scalaire en radians. La direction avant du véhicule est considérée comme zéro radian, avec des angles positifs mesurés dans le sens inverse des aiguilles d'une montre. Vous pouvez utiliser la sortie TargetDir du bloc Pure Pursuit lors de la génération de contrôles à partir d'un ensemble de waypoints.
Sortir
SteerDir — Direction de direction pour véhicule
scalaire
Direction de direction du véhicule, spécifiée sous forme de scalaire en radians. Cette direction sans obstacle est calculée sur la base de l'algorithme VFH+. La direction avant du véhicule est considérée comme zéro radian, avec des angles positifs mesurés dans le sens inverse des aiguilles d'une montre.
Paramètres
— Nombre de bacs utilisés pour créer les histogrammes
180
(par défaut) | scalaire
Nombre de groupes utilisés pour créer les histogrammes, spécifié sous forme de scalaire. Ce paramètre n'est pas réglable. Vous pouvez définir ce paramètre uniquement lorsque l'objet est initialisé.
— Limites des lectures de plage
[0.05 2]
(par défaut) | vecteur à deux éléments de scalaires
Limites des lectures de portée en mètres, spécifiées comme un vecteur de scalaires à deux éléments. Les lectures de plage saisies ne sont prises en compte que si elles se situent dans les limites de distance. Utilisez la limite de distance inférieure pour ignorer les faux positifs dus à de mauvaises performances du capteur à des portées inférieures. Utilisez la limite supérieure pour ignorer les obstacles trop éloignés du véhicule.
— Seuils pour le calcul de l'histogramme binaire
[3 10]
(par défaut) | vecteur à deux éléments de scalaires
Seuils pour le calcul d'un histogramme binaire, spécifié comme un vecteur de scalaires à deux éléments. L'algorithme utilise ces seuils pour calculer l'histogramme binaire à partir de la densité d'obstacles polaires. Les valeurs de densité d'obstacles polaires supérieures au seuil supérieur sont représentées sous forme d'espace occupé (1) dans l'histogramme binaire. Les valeurs inférieures au seuil inférieur sont représentées par de l'espace libre (0). Les valeurs comprises entre les limites sont définies sur les valeurs d'un histogramme binaire calculé précédent s'il en existe un lors des itérations précédentes. Si aucun histogramme précédent n'existe, la valeur est définie comme espace libre (0).
— Rayon du véhicule
0.1
(par défaut) | scalaire
Rayon du véhicule, spécifié sous forme de scalaire en mètres. Cette dimension définit le plus petit cercle pouvant circonscrire votre véhicule. Le rayon du véhicule est utilisé pour tenir compte de la taille du véhicule lors du calcul de la direction sans obstacle.
— Distance de sécurité autour du véhicule
0.1
(par défaut) | scalaire
Distance de sécurité laissée autour de la position du véhicule en fonction de vehicle radius, spécifiée sous forme d'un scalaire en mètres. Le rayon du véhicule et la distance de sécurité sont utilisés pour calculer la direction sans obstacle.
— Rayon de braquage minimum à la vitesse actuelle
0.1
(par défaut) | scalaire
Rayon de braquage minimum pour le véhicule se déplaçant à sa vitesse actuelle, spécifié sous forme d'un scalaire en mètres.
— Spécifier le type de simulation à exécuter
Code generation
(par défaut) | Interpreted execution
Code generation
— Simulez le modèle à l'aide du code C généré. La première fois que vous exécutez une simulation, Simulink® génère du code C pour le bloc. Le code C est réutilisé pour les simulations ultérieures, tant que le modèle ne change pas. Cette option nécessite un temps de démarrage supplémentaire mais la vitesse des simulations ultérieures est comparable àInterpreted execution
.Interpreted execution
— Simulez le modèle à l'aide de l'interpréteur MATLAB® . Cette option réduit le temps de démarrage mais a une vitesse de simulation plus lente queCode generation
. Dans ce mode, vous pouvez déboguer le code source du bloc.
Accordable : Non
— Pondération de la fonction de coût pour la direction cible
5
(par défaut) | scalaire
Pondération de la fonction de coût pour se déplacer vers la direction cible, spécifiée sous forme de scalaire. Pour suivre une direction cible, définissez ce poids pour qu'il soit supérieur à la somme de Current direction weight et Previous direction weight. Pour ignorer le coût de la direction cible, définissez ce poids sur 0 .
— Pondération de la fonction de coût pour la direction actuelle
2
(par défaut) | scalaire
Poids de la fonction de coût pour déplacer le véhicule dans la direction actuelle, spécifié sous forme de scalaire. Des valeurs plus élevées de ce poids produisent des chemins efficaces. Pour ignorer le coût de direction actuel, définissez ce poids sur 0 .
— Pondération de la fonction de coût pour la direction précédente
2
(par défaut) | scalaire
Poids de la fonction de coût pour se déplacer dans la direction de direction précédemment sélectionnée, spécifié sous forme de scalaire. Des valeurs plus élevées de ce poids produisent des chemins plus fluides. Pour ignorer le coût de la direction précédente, définissez ce poids sur 0 .
Algorithmes
Histogramme de champ vectoriel
Le bloc utilise l'algorithme VFH+ pour calculer la direction sans obstacle. Tout d’abord, l’algorithme prend les distances et les angles à partir des données du capteur de distance et crée un histogramme polaire pour l’emplacement des obstacles. Ensuite, il utilise les seuils d'histogramme d'entrée pour calculer un histogramme binaire qui indique les directions occupées et libres. Enfin, l'algorithme calcule un histogramme masqué, calculé à partir de l'histogramme binaire basé sur le rayon de braquage minimum du véhicule.
L'algorithme sélectionne plusieurs directions de direction en fonction de l'espace ouvert et des directions de conduite possibles. Une fonction de coût, avec des pondérations correspondant aux directions précédente, actuelle et cible, calcule le coût des différentes directions possibles. L'algorithme renvoie ensuite une direction sans obstacle avec un coût minimal. En utilisant la direction sans obstacle, vous pouvez saisir des commandes pour déplacer votre véhicule dans cette direction.
Pour utiliser ce bloc pour votre propre application et environnement, vous devez régler les paramètres de l'algorithme. Les valeurs des paramètres dépendent du type de véhicule, du capteur de distance et du matériel que vous utilisez. Pour plus d'informations sur l'algorithme VFH, voir controllerVFH
.
Capacités étendues
Génération de code C/C++
Générez du code C et C++ avec Simulink® Coder™.
Historique des versions
Introduit dans R2019b
Commande MATLAB
Vous avez cliqué sur un lien qui correspond à cette commande MATLAB :
Pour exécuter la commande, saisissez-la dans la fenêtre de commande de MATLAB. Les navigateurs web ne supportent pas les commandes 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)