Избегайте препятствий, используя гистограмму векторного поля
The controllerVFH
Системный object™ позволяет вашему транспортному средству избегать препятствий на основе данных датчика области значений с помощью гистограмм векторного поля (VFH). Учитывая показания лазерного скана и целевое направление для движения к, объект вычисляет направление рулевого управления без препятствий.
controllerVFH
в частности, использует алгоритм VFH +, чтобы вычислить свободное от препятствий направление. Во-первых, алгоритм берёт области значений и углы из данных лазерного скана и создает полярную гистограмму для местоположений препятствий. Затем входные пороги гистограммы используются для вычисления бинарной гистограммы, которая указывает на занятые и свободные направления. Наконец, алгоритм вычисляет маскированную гистограмму, которая вычисляется из бинарной гистограммы на основе минимального радиуса поворота транспортного средства.
Алгоритм выбирает несколько направлений рулевого управления на основе открытого пространства и возможных направлений движения. Функция затрат с весами, соответствующими предыдущим, текущим и целевым направлениям, вычисляет стоимость различных возможных направлений. Затем объект возвращает направление без препятствий с минимальными затратами. Используя направление без препятствий, можно ввести команды для перемещения транспортного средства в этом направлении.
Чтобы использовать этот объект для собственного приложения и окружения, необходимо настроить свойства алгоритма. Значения свойств зависят от типа транспортного средства, датчика области значений и используемого оборудования.
Чтобы найти свободное от препятствий направление рулевого управления:
Создайте controllerVFH
Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
возвращает объект гистограммы векторного поля, который вычисляет направление рулевого управления без препятствий с помощью VFH
= controllerVFHVFH+
алгоритм.
возвращает объект гистограммы векторного поля с дополнительными опциями, заданными одним или несколькими VFH
= controllerVFH(Name
,Value
)Name,Value
пар. Имя (Name) - это имя свойства, а значение (Value) - соответствующее значение. Имя должно находиться внутри одинарных кавычек (' '
). Можно задать несколько аргументы пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN
. Не заданные свойства сохраняют значения по умолчанию.
находит свободное от препятствий направление рулевого управления, используя алгоритм VFH + для входных steeringDir
= vfh(scan
,targetDir
)lidarScan
объект, scan
. Целевое направление задается на основе целевого местоположения.
Чтобы включить этот синтаксис, вы должны задать UseLidarScan
свойство к true
. Для примера:
mcl = monteCarloLocalization('UseLidarScan',true); ... [isUpdated,pose,covariance] = mcl(odomPose,scan);
задает скан лидара с двумя векторами: steeringDir
= vfh(ranges
,angles
,targetDir
)ranges
и angles
.
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
[1] Borenstein, J., and Y. Koren. «Гистограмма векторного поля - быстрое предотвращение препятствий для мобильных роботов». IEEE Journal of Robotics and Automation. Том 7, № 3, 1991, pp.278-88.
[2] Ульрих, И., и Й. Боренштейн. VFH: Надежное предотвращение препятствий для быстрых мобильных роботов. Разбирательство. 1998 Международная конференция IEEE по робототехнике и автоматизации. (1998): 1572–1577.