exponenta event banner

controllerVFH

Избегайте препятствий с помощью гистограммы векторного поля

Описание

controllerVFH Система object™ позволяет избежать препятствий на основе данных датчика дальности с использованием векторных гистограмм поля (VFH). Учитывая показания лазерного сканирования и целевое направление движения, объект вычисляет направление управления без препятствий.

controllerVFH специально использует алгоритм VFH + для вычисления направления без препятствий. Сначала алгоритм берет диапазоны и углы из данных лазерного сканирования и строит полярную гистограмму для мест расположения препятствий. Затем по порогам входной гистограммы вычисляют двоичную гистограмму, которая указывает на занятое и свободное направления. Наконец, алгоритм вычисляет маскированную гистограмму, которая вычисляется из двоичной гистограммы на основе минимального радиуса поворота транспортного средства.

Алгоритм выбирает множество направлений управления на основе открытого пространства и возможных направлений движения. Функция затрат с весами, соответствующими предыдущему, текущему и целевому направлениям, вычисляет стоимость различных возможных направлений. Затем объект возвращает направление без препятствий с минимальными затратами. Используя направление без препятствий, можно ввести команды для перемещения транспортного средства в этом направлении.

Чтобы использовать этот объект для собственного приложения и среды, необходимо настроить свойства алгоритма. Значения свойств зависят от типа транспортного средства, датчика дальности и используемого оборудования.

Чтобы найти направление рулевого управления без препятствий:

  1. Создать controllerVFH и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

пример

VFH = controllerVFH возвращает объект векторной гистограммы поля, который вычисляет направление управления без препятствий с помощью VFH+ алгоритм.

VFH = controllerVFH(Name,Value) возвращает объект гистограммы векторного поля с дополнительными опциями, заданными одним или несколькими Name,Value пар. Имя - имя свойства, а значение - соответствующее значение. Имя должно отображаться в отдельных кавычках (' '). Можно указать несколько аргументов пары имя-значение в любом порядке как Name1,Value1,...,NameN,ValueN. Не указанные свойства сохраняют значения по умолчанию.

Свойства

развернуть все

Число угловых секторов в гистограмме векторного поля, указанное как скаляр. Это свойство определяет количество ячеек, используемых для создания гистограмм. Это свойство не настраивается. Этот параметр можно задать только при инициализации объекта.

Пределы для показаний диапазона, определяемые как 2-элементный вектор с элементами, измеренными в метрах. Показания диапазона, заданные при вызове объекта, учитываются только в том случае, если они находятся в пределах расстояния. Используйте нижний предел расстояния для игнорирования ложных срабатываний от плохой работы датчика в более низких диапазонах. Используйте верхний предел, чтобы игнорировать препятствия, которые находятся слишком далеко от транспортного средства.

Радиус транспортного средства в метрах, указанный как скаляр. Этот размер определяет наименьший круг, который может ограничивать транспортное средство. Радиус транспортного средства используется для учета размера транспортного средства при вычислении направления без препятствий.

Безопасное расстояние вокруг транспортного средства, указанное как скаляр в метрах. Это безопасное расстояние для ухода вокруг положения транспортного средства в дополнение к значению RobotRadius параметр. Сумма радиуса транспортного средства и безопасного расстояния используется для вычисления направления без препятствий.

Минимальный радиус поворота в метрах для транспортного средства, движущегося с текущей скоростью, определяемый как скаляр.

Вес функции затрат для перемещения к целевому направлению, заданному как скаляр. Чтобы следовать целевому направлению, установите этот вес выше суммы CurrentDirectionWeight и PreviousDirectionWeight свойства. Чтобы игнорировать стоимость целевого направления, установите этот вес равным нулю.

Вес функции затрат для перемещения робота в направлении текущего курса, заданный как скаляр. Более высокие значения этого веса дают эффективные пути. Чтобы игнорировать текущую стоимость направления, установите этот вес равным нулю.

Вес функции затрат для перемещения в ранее выбранном направлении управления, указанный как скаляр. Более высокие значения этого веса обеспечивают более плавные пути. Чтобы игнорировать стоимость предыдущего направления, установите этот вес равным нулю.

Пороговые значения для вычисления двоичной гистограммы, заданные как 2-элементный вектор. Алгоритм использует эти пороги для вычисления двоичной гистограммы из полярной плотности препятствий. Полярные значения плотности препятствий выше верхнего порога представлены в двоичной гистограмме как занятое пространство (1). Значения, меньшие нижнего порога, представлены как свободное пространство (0). Значения, попадающие между пределами, устанавливаются в значения предыдущей двоичной гистограммы, по умолчанию - свободное пространство (0).

Использовать lidarScan объект как вход сканирования, указанный как true или false.

Использование

Описание

пример

steeringDir = vfh(scan,targetDir) находит направление рулевого управления без препятствий с помощью алгоритма VFH + для входаlidarScan объект, scan. Целевое направление задается на основе целевого местоположения.

Чтобы включить этот синтаксис, необходимо установить UseLidarScan свойство для true. Например:

mcl = monteCarloLocalization('UseLidarScan',true);
...
[isUpdated,pose,covariance] = mcl(odomPose,scan);

steeringDir = vfh(ranges,angles,targetDir) определяет лидарное сканирование с двумя векторами: ranges и angles.

Входные аргументы

развернуть все

Показания сканирования Lidar, указанные как lidarScan объект.

Зависимости

Чтобы использовать этот аргумент, необходимо установить UseLidarScan свойство для true.

mcl.UseLidarScan = true;

Значения диапазона из данных сканирования, заданные как вектор в метрах. Эти значения диапазона - расстояния от датчика при заданных angles. Вектор должен иметь ту же длину, что и соответствующий angles вектор.

Значения углов из данных сканирования, заданные как вектор в радианах. Эти угловые значения являются конкретными углами данного ranges. Вектор должен иметь ту же длину, что и соответствующий ranges вектор.

Целевое направление для транспортного средства, указанное как скаляр в радианах. Направление движения транспортного средства вперед считается нулевым радианом с положительными углами, измеренными против часовой стрелки.

Выходные аргументы

развернуть все

Направление рулевого управления для транспортного средства, указанное как скаляр в радианах. Это направление без препятствий вычисляется на основе алгоритма VFH +. Направление движения транспортного средства вперед считается нулевым радианом с положительными углами, измеренными против часовой стрелки.

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

развернуть все

showПоказ VectorFieldHistogram информация в окне рисунка
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
resetСброс внутренних состояний объекта System

Примеры

свернуть все

В этом примере показано, как рассчитать направление поворота на основе входных данных лазерного сканирования.

Создать controllerVFH объект. Установите UseLidarScan свойство для true.

vfh = controllerVFH;
vfh.UseLidarScan = true;

Ввод данных лазерного сканирования и направления цели.

ranges = 10*ones(1,500);
ranges(1,225:275) = 1.0;
angles = linspace(-pi,pi,500);
targetDir = 0;

Создать lidarScan путем задания диапазонов и углов.

scan = lidarScan(ranges,angles);

Вычислите направление рулевого управления без препятствий.

steeringDir = vfh(scan,targetDir);

Визуализация VectorFieldHistogram вычисления.

h = figure;
set(h,'Position',[50 50 800 400])
show(vfh)

Ссылки

[1] Боренштейн, Дж., и Я. Корен. «Векторная гистограмма поля - быстрое устранение препятствий для мобильных роботов». IEEE Journal of Robotics and Automation. Том 7, номер 3, 1991, стр. 278-88.

[2] Ульрих, И. и Дж. Боренштейн. «VFH: надежное предотвращение препятствий для быстрых мобильных роботов». Разбирательство. 1998 Международная конференция IEEE по робототехнике и автоматизации. (1998): 1572–1577.

Расширенные возможности

.
Представлен в R2019b