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