Закрыть
Описание движения мобильного робота

Описание движения мобильного робота

Мобильный робот перемещается для решения тех или иных задач, получает данные с внешних датчиков, и должен постоянно обрабатывать информацию, чтобы управлять своим движением. Все эти процессы происходят непрерывно и тесно взаимосвязаны друг с другом. Сегодня речь пойдет об основных конфигурациях колесных роботов и том, как математически описываются их перемещения. Этот материал поможет выбрать колесную конфигурацию для своего мобильного робота.

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

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

При разработке системы перемещения робота необходимо учитывать следующие моменты:

  • скорость или ускорение движения
  • точность позиционирования (повторяемость)
  • гибкость и робастность (надежность) при различных условиях
  • эффективность (низкое энергопотребление)

 

Система координат

Для того чтобы математически описать движение мобильного робота нам потребуется определить системы координат. Я введу две системы координат —  мировую систему координат W (буду считать что он неподвижна в пространстве), и система координат робота R, которая перемещается в пространстве и остается неподвижной относительно самого робота.

Системы координат
Системы координат

Нам необходимо определить местоположение робота, то есть мы хотим знать, как преобразовывать координаты между W и R.

 

Степени свободы движения

Число степеней свободы определяет минимальное количество независимых переменных (обобщённых координат), необходимых для полного описания движения механической системы.

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

Твердое тело, которое перемещается и вращается на плоскости имеет 3 степени свободы: 2 поступательных и 1 вращательную. Пример: наземный робот.

Твердое тело, которое перемещается и вращается в 3D-объеме имеет 6 степеней свободы: 3 поступательных и 3 вращательных. Пример: летающий робот.

Всенаправленное колесо
Всенаправленное колесо

Особый случай — это так называемый голономный робот, который способен перемещаться мгновенно в любом направлении в пространстве его степеней свободы (робот является голономным если число управляемых степеней свободы равно полному числу степеней свободы). Голономные роботы существуют, но требуют множество моторов и необычный конструктив, что зачастую очень непрактично. Однако, наземные голономные роботы могут быть реализованы с использованием всенаправленных колес (omni-wheels).

На видео показан пример четырехколесного робота со всенаправленными колесами.


 

Конфигурации колесных роботов

Существует множество различных конфигураций мобильных роботов.

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

segway_platform

Или марсоход Opportunity, который имеет колеса на штангах для преодоления больших препятсвий.

mars_rover

Но чаще применяются другие типы конфигураций.

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

Все эти роботы неголономны (используется два двигателя, но три степени свободы движения). Например, автомобилеподобный робот не может мгновенно двигаться в сторону.

Стандартный колесные конфигурации
Стандартный колесные конфигурации

 

Робот с дифференциальным приводом

Дифференциальный привод
Дифференциальный привод

Такая конфигурация используется в роботах-пылесосах.

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

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

криволинейный путь робота с дифференциальным приводом
Движение по дуге

Обозначим скорости колес (линейные скорости с которыми они «покрывают» поверхность) V_L и V_R - для левого и правого колес, соответственно, и W расстояние между колесами.

  • Прямолинейное движение, если V_L = V_R
  • Разворот на месте, если V_L = - V_R
  • В более общем случае — движение по дуге

Для того, чтобы найти радиус R криволинейного пути, рассмотрим период движения \Delta t, в течении которого робот движется вдоль дуги окружности, имеющей угол \Delta \theta.

  • Левое колесо: пройденное расстояние = V_L \Delta t; радиус дуги = R - \frac{W}{2}
  • Правое колесо: пройденное расстояние = V_R \Delta t; радиус дуги = R - \frac{W}{2}
  • Обе колесные дуги имеют в основании один и тот же угол \Delta \theta

    \[\Delta\theta = \frac{V_L\Delta t}{R-\frac{W}{2}} = \frac{V_R \Delta t}{R + \frac{W}{2}}\]

    \[\Rightarrow \frac{W}{2} (V_L+V_R) = R(V_R - V_L)\]

    \[\Rightarrow R = \frac{W(V_R+V_L)}{2(V_R-V_L}~~~~~ \Delta\theta = \frac{(V_R-V_L)\Delta t}{W}\]

 

Автомобиль/Трицикл/Реечно-зубчатый привод

Такой тип роботов имеет два мотора — один для движения, другой для рулежки.

  • Не может нормально развернуться на месте.
  • При постоянной скорости и угле поворота движется по дуге окружности.
  • В четырехколесной схеме необходим задний дифференциал и переменная связь («Принцип Аккермана») на рулевые колеса.

Круговой путь автомобилеподобного трехколесного робота
Круговое движение трехколесного робота

При условии, что отсутствует боковая пробуксовка колес, пересечем оси передних и задних колес, чтобы сформировать прямоугольный треугольник, и в результате получим:

    \[R = \frac{L}{\tan s}\]

Радиус траектории, которую описывают задние колеса:

    \[R_d = \frac{L}{\sin s}\]

За время \Delta t расстояние вдоль этой дуги окружности, пройденное приводными колесами равно v\Delta t, поэтому угол \Delta \theta на который повернется робот:

    \[\Delta \theta = \frac{V\Delta t}{R_d} = \frac{V \Delta t \sin s}{L}\]

    \[R = \frac{L}{\tan s}~~~~\Delta \theta = \frac{V \Delta t\sin s}{L}\]

 

Зубчатая передача

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

Зубчатые передачи
Зубчатые передачи

Если Передача 1 имеет крутящий момент t_1, она оказывает тангенциальную силу

    \[F = \frac{t_1}{r_1} \]

на Передачу 2. Крутящий момент Передачи 2 поэтому

    \[t_2 = r_2F = \frac{r_2}{r_1}t_1\]

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

    \[V = \omega_1 r_1 = \omega_2 r_2\]

    \[\Rightarrow \omega_2 = \frac{r_1}{r_2}\omega_1\]

  • Когда маленькая шестерня приводит в движение большую, второе зубчатое колесо будет иметь более высокий крутящий момент и меньшую угловую скорость пропорционально соотношению зубьев.
  • Для достижения комбинированного воздействия шестерни можно объединять в цепочки.

 

Оценка движения c помощью датчиков

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

Например, на основе очень простой оценки:

    \[D=KV\Delta t\]

Пройденное расстояние пропорционально напряжению и времени. Здесь K является расчетной константой (используя знания электричества и геометрии), но также может быть получена в результате калибровки.

  • Калибровка включает экспериментальное перемещение робота и сравнение фактического значения пройденного расстояния, со значением, полученным в результате теоретической оценки. Отношение фактического к теоретическому значениям и является коэффициентом калибровки.
  • Если при повторных испытаниях будет наблюдаться расхождения в полученных значениях, мы можем повысить точность путем изменения значения констант в наших выражений (таких как K), а затем повторить процесс.

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

 

Движение и состояние робота для плоскости

Если предположить, что робот ограничивается перемещением на плоскости, его местоположение может быть определено вектором состояния X, состоящем из трех параметров:

    \[X = \left(\begin{array}{c}x \\ y \\ \theta \end{array}\right) \]

x  и y определяют местоположение предопределенной точки «центра робота» в мировой системе координат.

\theta определяет угол поворота между системами координат (угол между осями x^W и x^R).

Две системы координат совпадают в момент, когда центр робота находится в начале координат и x = y = \theta = 0.

 

Интегральное движение на плоскости

Получая перемещения робота в некоторые моменты времени, мы можем найти весь путь, пройденный роботом, просуммировав эти значения, или перейдя к пределу (при стремлении количества измерений \rightarrow \infty) — путем их интегрирования.

При движении на плоскости мы имеем три степени свободы для определения положения, представленные (x, y, \theta) при \pi < \theta \le \pi.

Рассмотрим робота, который может только двигаться вперед или поворачиваться на месте:

Движение робота на плоскости
Движение робота на плоскости

При прямолинейном движении робота на расстояние D новое состояние будет выражено как:

    \[ \left(\begin{array}{c}x_{new} \\ y_{new} \\ \theta_{new} \end{array}\right) = \left(\begin{array}{c}x + D \cos \theta\\ y + D \sin \theta \\ \theta \end{array}\right) \]

Если присутствует только вращательное движение, при повороте на угол \alpha:

    \[ \left(\begin{array}{c}x_{new} \\ y_{new} \\ \theta_{new} \end{array}\right) = \left(\begin{array}{c}x \\ y \\ \theta + \alpha \end{array}\right) \]

 

Оценка кругового 2D движения

Движение по окружности
Движение по окружности

Для случаев и дифференциального и трехколесного роботов мы можем получить выражения для R и \Delta \theta для случая когда присутствует только движение по дуге окружности:

    \[ \left(\begin{array}{c}x_{new} \\ y_{new} \\ \theta_{new} \end{array}\right) = \left(\begin{array}{c}x + R(\sin(\Delta \theta + \theta) - \sin \theta) \\ y - R(\cos(\Delta \theta + \theta) - \cos \theta) \\ \theta + \Delta \theta \end{array}\right) \]

 

Планирование маршрута

Планирование маршрута, основываясь на положении
Планирование маршрута, основываясь на положении

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

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

На первом шаге планирования маршрута, предположим, что текущее положение робота (x, y, \theta) и следующей точкой маршрута является (W_x, W_y).

  • Сначала робот должен повернуться к указанной точке. Вектор направления должен указывать на:

    \[ \left(\begin{array}{c}d_x \\ d_y \end{array}\right) = \left(\begin{array}{c}W_x - x \\ W_y - y  \end{array}\right) \]

Значение абсолютного значения угла в градусах \alpha в который робот должен повернуться:

    \[\alpha = \tan^{-1}\frac{d_y}{d_x} \]

Необходимо убедиться, что \alpha находится в правильном квадранте, в промежутке -\pi < \alpha \le \frac{\pi}{2}.

  • Робот уже повернут на определенный угол, поэтому угол на который он должен повернуться \beta = \alpha - \theta. Чтобы робот двигался наиболее эффективно, нужно сдвинуть угол, добавив или вычитая 2\pi, чтобы -\pi < \beta \le \pi.
  • После этого, робот должен двигаться по прямой на расстояние d = \sqrt{d_x^2 + d_y^2}.

[add_ratings]

2 thoughts on “Описание движения мобильного робота

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

    Пожалуйста посоветуйте:

    1-какую программу применить для графического отображения пакета данных

    (азимут + число оборотов колеса)? Лучше в процессе движения ,в крайнем

    случае — таблица в конечной точке маршрута.

    2-как передать данные со входного порта компьютера в эту программу?

    Заранее благодарен.

    Юрий

    1. Юрий, здравствуйте!

      Самый простой способ визуализировать данные — использовать встроенный в Arduino IDE инструмент Serial Plotter. Для рисования траектории и визуализации каких-то дополнительных параметров придется писать самописную программку. Простенький язык специально предназначенный для подобных задач называется Processing. Есть видео.

      Hello world! на Processing.

      Также для реализации коммуникации между микроконтроллером и ПО, которое запущено на компьютере существует специальный протокол Firmata.

Оставить ответ

Ваш email не будет опубликован.Обязательны поля помечены *