controllerVFH
Évitez les obstacles à l'aide de l'histogramme de champ vectoriel
Description
Le controllerVFH
System object™ permet à votre véhicule d'éviter les obstacles en fonction des données du capteur de distance à l'aide d'histogrammes de champ vectoriel (VFH). Compte tenu des lectures du balayage laser et d'une direction cible vers laquelle se diriger, l'objet calcule une direction de direction sans obstacle.
controllerVFH
utilise spécifiquement l'algorithme VFH+ pour calculer une direction sans obstacle. Tout d’abord, l’algorithme prend les distances et les angles des données de balayage laser et crée un histogramme polaire pour l’emplacement des obstacles. Ensuite, les seuils d'histogramme d'entrée sont utilisés 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'objet renvoie alors une direction sans obstacle avec un coût minime. En utilisant la direction sans obstacle, vous pouvez saisir des commandes pour déplacer votre véhicule dans cette direction.
Pour utiliser cet objet pour votre propre application et environnement, vous devez régler les propriétés de l'algorithme. Les valeurs des propriétés dépendent du type de véhicule, du capteur de distance et du matériel que vous utilisez.
Pour trouver une direction sans obstacle :
Créez l'objet
controllerVFH
et définissez ses propriétés.Appelez l'objet avec des arguments, comme s'il s'agissait d'une fonction.
Pour en savoir plus sur le fonctionnement des objets système, voir What Are System Objects?
Création
Description
renvoie un objet histogramme de champ vectoriel qui calcule la direction de direction sans obstacle à l'aide de l'algorithme VFH
= controllerVFHVFH+
.
renvoie un objet histogramme de champ vectoriel avec des options supplémentaires spécifiées par une ou plusieurs paires VFH
= controllerVFH(Name
,Value
)Name,Value
. Name est le nom de la propriété et Value est la valeur correspondante. Le nom doit apparaître entre guillemets simples (' '
). Vous pouvez spécifier plusieurs arguments de paire nom-valeur dans n'importe quel ordre comme Name1,Value1,...,NameN,ValueN
. Les propriétés non spécifiées conservent leurs valeurs par défaut.
Propriétés
Utilisation
Description
trouve une direction de direction sans obstacle à l'aide de l'algorithme VFH+ pour l'objet d'entrée steeringDir
= vfh(scan
,targetDir
)lidarScan
, scan
. Une direction cible est donnée en fonction de l'emplacement cible.
Pour activer cette syntaxe, vous devez définir la propriété UseLidarScan
sur true
. Par exemple:
mcl = monteCarloLocalization('UseLidarScan',true); ... [isUpdated,pose,covariance] = mcl(odomPose,scan);
définit le scan lidar avec deux vecteurs : steeringDir
= vfh(ranges
,angles
,targetDir
)ranges
et angles
.
Arguments en entrée
Arguments de sortie
Fonctions d'objet
Pour utiliser une fonction objet, spécifiez le System object comme premier argument d'entrée. Par exemple, pour libérer les ressources système d'un System object nommé obj
, utilisez cette syntaxe :
release(obj)
Exemples
Références
[1] Borenstein, J., and Y. Koren. "The Vector Field Histogram - Fast Obstacle Avoidance for Mobile Robots." IEEE Journal of Robotics and Automation. Vol. 7, Number 3, 1991, pp.278–88.
[2] Ulrich, I., and J. Borenstein. "VFH : Reliable Obstacle Avoidance for Fast Mobile Robots." Proceedings. 1998 IEEE International Conference on Robotics and Automation. (1998): 1572–1577.
Capacités étendues
Historique des versions
Introduit dans R2019b