Алгоритм векторной полевой гистограммы (VFH) вычисляет руководящие направления без препятствий для робота на основе показаний датчика области значений. Показания датчика области значений используются для расчета полярные гистограммы плотности, чтобы идентифицировать местоположение препятствия и близость. На основе заданных параметров и порогов, эти гистограммы преобразованы в бинарные гистограммы, чтобы указать на допустимые руководящие направления для робота. Алгоритм VFH включает размер робота и превращение радиуса, чтобы вывести держащееся направление для робота, чтобы избежать препятствий и следовать за целевым направлением.
Чтобы вычислить держащиеся направления, необходимо указать информацию о размере робота и его ведущих возможностях. Алгоритм VFH требует только четырех входных параметров для робота. Эти параметры являются свойствами controllerVFH
объект: RobotRadius
, SafetyDistance
, MinTurningRadius
, и DistanceLimits
.
RobotRadius
задает радиус самого маленького круга, который может окружить все части робота. Этот радиус гарантирует, что робот избегает препятствий на основе своего размера.
SafetyDistance
опционально задает добавленное расстояние сверху RobotRadius
. Можно использовать это свойство добавить коэффициент безопасности при навигации по среде.
MinTurningRadius
задает радиус превращения минимума для робота, перемещающегося при желаемой скорости. Робот не может смочь сделать крутые повороты при высоких скоростях. Это свойство включает навигацию вокруг препятствий и дает ей достаточно пробела, чтобы маневрировать.
DistanceLimits
указывает диапазон расстояния, который вы хотите рассмотреть для предотвращения препятствия. Вы задаете пределы в двухэлементном векторе, [lower upper]
. lower
предел используется, чтобы проигнорировать показания датчика, которые пересекаются с частями на роботе, погрешностях датчика на коротких расстояниях или шуме датчика. upper
предел является диапазоном измерений датчика или основан на вашем приложении. Вы не можете хотеть рассматривать все препятствия в полной области значений датчика.
Вся информация о показаниях датчика области значений принимает, что ваше средство поиска области значений смонтировано в центре вашего робота. Если датчик области значений смонтирован в другом месте, преобразуйте свои показания датчика диапазона от лазерной координатной системы координат до базовой системы координат робота.
Веса функции стоимости используются, чтобы вычислить итоговые руководящие направления. Алгоритм VFH рассматривает несколько держащихся направлений на основе ваших текущих, предыдущих, и целевых направлений. Путем установки CurrentDirectionWeight
, PreviousDirectionWeight
, и TargetDirectionWeight
свойства, можно изменить держащееся поведение робота. Изменение этих весов влияет на скорость отклика робота и как это реагирует на препятствия. Чтобы заставить робота направиться к своему целевому местоположению, установите TargetDirectionWeight
выше, чем сумма других весов. Этот высокий TargetDirectionWeight
значение помогает гарантировать, что вычисленное руководящее направление близко к целевому направлению. В зависимости от вашего приложения вы можете должны быть настроить эти веса.
Алгоритм VFH вычисляет гистограмму на основе данных данных о датчике области значений. Это берет все направления вокруг робота и преобразует их в угловые секторы, которые заданы NumAngularSectors
свойство. Это свойство является ненастраиваемым и остается фиксированным однажды controllerVFH
объект называется. Данные о датчике области значений используются, чтобы вычислить полярную гистограмму плотности по этим угловым секторам.
Используя маленький NumAngularSectors
значение может заставить алгоритм VFH пропускать меньшие препятствия. Пропущенные препятствия не появляются на гистограмме.
Эта гистограмма отображает угловые секторы синего цвета и пороги гистограммы в розовом. HistogramThresholds
свойство является двухэлементным вектором, который определяет значения гистограммы маскированной в виде [lower upper]
. Полярные значения плотности препятствия выше, чем верхний порог представлены как занятое место (1) в гистограмме маскированной. Значения, меньшие, чем более низкий порог, представлены как свободное пространство (0). Значения, которые падают между пределами, установлены к значениям в предыдущей бинарной гистограмме со значением по умолчанию, являющимся свободным пространством (0). Гистограмма маскированная также включает MinTurningRadius
, RobotSize
, и SafetyDistance
.
Полярный график плотности имеет следующий соответствующий график гистограммы маскированный. Этот график показывает цель и держащиеся направления, показания области значений и пределы расстояния.
show
При работе с controllerVFH
объект, можно визуализировать свойства и параметры алгоритма с помощью show
функция. Этот метод отображает полярный график плотности и замаскировал бинарную гистограмму. Это также отображает параметры алгоритма и выходное руководящее направление для VFH.
Вы можете затем настройки параметров, чтобы помочь вам моделировать свое приложение предотвращения препятствия. Например, если вы видите, что определенные препятствия не появляются в Полярном графике Гистограммы Маскированном (справа), затем в Полярном графике Плотности Препятствия, рассмотрите корректировку порогов гистограммы к соответствующим значениям. После того, как вы внесете корректировки в Полярном графике Гистограммы Маскированном, показания датчика области значений, отображенные красным, должны совпасть с местоположениями в (синей) гистограмме маскированной. Кроме того, вы видите цель и держащиеся направления. Вы задаете целевое направление. Держащимся направлением является основной выход из алгоритма VFH. Корректировка Весов Функции стоимости может помочь вам настроить выход итогового руководящего направления.
Несмотря на то, что можно использовать show
метод в цикле, это замедляет скорость расчета из-за графического изображения. Если при запуске этот алгоритм для приложений реального времени, получаете и отображаете данные VFH в отдельных операциях.