Вопрос

У меня есть поле, заполненное препятствиями, я знаю, где они расположены, и я знаю позицию робота. Используя алгоритм нахождения пути, я рассчитаю путь для подписания робота.

Теперь моя проблема в том, что я руководствую роботу из сетки к сетке, но это создает не так гладкое движение. Я начинаю с собой, поверните нос в точку B, двигайтесь прямо до достижения точки B, промыть и повторить, пока не будет достигнута конечная точка.

Итак, мой вопрос: какие методы используются для навигации в такой среде, чтобы я получаю гладкое движение?

Робот имеет два колеса и два двигателя. Я меняю направление двигателя, повернув двигатели в обратном направлении.

Редактировать: Я могу варьироваться в зависимости от скорости двигателей в основном робот - это Arduino Plus Ardumoto, я могу поставлять значения от 0 до 255 моторов на любом направлении.

Это было полезно?

Решение

Вам нужна линеаризация обратной связи для дифференциально управляющего робота. Этот документ Объясняет его в разделе 2.2. Я включал соответствующие порции ниже:

Имитационный робот, необходимый для проекта, является дисковым роботом диска Di FF с ограниченной скоростью. Поскольку дисковые роботы Di FF являются неломическими, студенты рекомендуются использовать линеаризацию обратной связи для преобразования кинематического контроля вывода из их алгоритмов для управления дисперсными роботами диска Di FF. Преобразование следует:

Transformation

где v, ω, Икс, у являются линейными, угловыми и кинематическими скоростями. L представляет собой установленную длину O FF пропорциональна измерению базового колеса робота.

Другие советы

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

Больший вид впереди расстояния создаст более гладкое движение. Тем не менее, больший вид на дальние расстояния приведут к роботу нарезать углы, которые могут столкнуться с препятствиями. Вы можете решить эту проблему, реализуя идеи из алгоритма реактивного управления, называемого векторной гистограммой поля (VFH). VFH в основном толкает робота вдали от близких стен. Хотя это обычно использует датчик нахождения датчика некоторых видов, вы можете экстраполировать относительные местоположения препятствий, так как вы знаете позу робота и препятствия.

Мои первоначальные мысли об этом (я на работе, так что не могу провести слишком много времени):

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

Учитывая ширину робота, которую вы можете рассчитать радиус поворота, учитывая скорость для каждого колеса. Предполагая, что вы хотите пойти как можно быстрее, и что Skidding не является проблемой, вы всегда будете держать внешнее колесо на 255 и уменьшить внутреннее колесо до скорости, которая дает вам необходимый радиус поворота.

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

Подход оптимизации - это очень общий способ справиться с этим.

Используйте расчетный путь в качестве ввода в универсальную нелинейную алгоритму оптимизации (ваш выбор!) С функцией затрат, состоящей из близости траектории ответа на входную траекторию, а также приверженность к нелономическим ограничениям, и любые другие ограничения вы хочу принуждать (например, остаться от препятствий). Алгоритм оптимизации также может быть инициализирован с траекторией, построенной из исходной траектории.

Ноты робототехники Marc Toussaint - хороший источник для этого типа подхода. Увидеть в частной лекции 7:http://userpage.fu-berlin.de/mtoussai/teathing/10-Robotics/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top