Мобильный робот перемещается для решения тех или иных задач, получает данные с внешних датчиков, и должен постоянно обрабатывать информацию, чтобы управлять своим движением. Все эти процессы происходят непрерывно и тесно взаимосвязаны друг с другом. Сегодня речь пойдет об основных конфигурациях колесных роботов и том, как математически описываются их перемещения. Этот материал поможет выбрать колесную конфигурацию для своего мобильного робота.
Мобильные роботы могут перемещаться в различных средах: в водной, воздушной, по земле, в космосе. И движение в каждой среде имеет свои особенности, связанные с их различными физическими свойствами.
В этой публикации я рассмотрю колесных роботов, которые способны перемещаться по достаточно плоским поверхностям.
При разработке системы перемещения робота необходимо учитывать следующие моменты:
- скорость или ускорение движения
- точность позиционирования (повторяемость)
- гибкость и робастность (надежность) при различных условиях
- эффективность (низкое энергопотребление)
Система координат
Для того чтобы математически описать движение мобильного робота нам потребуется определить системы координат. Я введу две системы координат — мировую систему координат W (буду считать что он неподвижна в пространстве), и система координат робота R, которая перемещается в пространстве и остается неподвижной относительно самого робота.
Нам необходимо определить местоположение робота, то есть мы хотим знать, как преобразовывать координаты между W и R.
Степени свободы движения
Число степеней свободы определяет минимальное количество независимых переменных (обобщённых координат), необходимых для полного описания движения механической системы.
Твердое тело, которое перемещается и вращается двигаясь по одномерному пути имеет одну степень свободы — поступательную. В качестве примера можно привезти поезд, движущийся по рельсам.
Твердое тело, которое перемещается и вращается на плоскости имеет 3 степени свободы: 2 поступательных и 1 вращательную. Пример: наземный робот.
Твердое тело, которое перемещается и вращается в 3D-объеме имеет 6 степеней свободы: 3 поступательных и 3 вращательных. Пример: летающий робот.
Особый случай — это так называемый голономный робот, который способен перемещаться мгновенно в любом направлении в пространстве его степеней свободы (робот является голономным если число управляемых степеней свободы равно полному числу степеней свободы). Голономные роботы существуют, но требуют множество моторов и необычный конструктив, что зачастую очень непрактично. Однако, наземные голономные роботы могут быть реализованы с использованием всенаправленных колес (omni-wheels).
На видео показан пример четырехколесного робота со всенаправленными колесами.
Конфигурации колесных роботов
Существует множество различных конфигураций мобильных роботов.
Есть те, которые применяются реже, например, двухколесная платформа сигвей (segway) с динамическим балансом обладает хорошей высотой при малой площади и достаточно большим ускорением.
Или марсоход Opportunity, который имеет колеса на штангах для преодоления больших препятсвий.
Но чаще применяются другие типы конфигураций.
Это простые, надежные, прочные механизмы, пригодные для роботов, которые в основном передвигаются по плоскости.
Все эти роботы неголономны (используется два двигателя, но три степени свободы движения). Например, автомобилеподобный робот не может мгновенно двигаться в сторону.
Робот с дифференциальным приводом
Такая конфигурация используется в роботах-пылесосах.
Робот с дифференциальным приводом имеет два мотора, по одному на каждое колесо (на рисунке — это большие колеса). Изменение направления движения достигается за счет разных скоростей (отсюда и название — дифференциальный).
- Для прямолинейного движения колеса должны вращаться с одинаковыми скоростями.
- Для того, чтобы робот развернулся на месте, необходимо установить скорости одинаковыми по модулю, но направленными противоположно.
- Другие комбинации скоростей приводят к движению по дуге
Обозначим скорости колес (линейные скорости с которыми они «покрывают» поверхность) и - для левого и правого колес, соответственно, и расстояние между колесами.
- Прямолинейное движение, если
- Разворот на месте, если
- В более общем случае — движение по дуге
Для того, чтобы найти радиус криволинейного пути, рассмотрим период движения , в течении которого робот движется вдоль дуги окружности, имеющей угол .
- Левое колесо: пройденное расстояние = ; радиус дуги =
- Правое колесо: пройденное расстояние = ; радиус дуги =
- Обе колесные дуги имеют в основании один и тот же угол
Автомобиль/Трицикл/Реечно-зубчатый привод
Такой тип роботов имеет два мотора — один для движения, другой для рулежки.
- Не может нормально развернуться на месте.
- При постоянной скорости и угле поворота движется по дуге окружности.
- В четырехколесной схеме необходим задний дифференциал и переменная связь («Принцип Аккермана») на рулевые колеса.
При условии, что отсутствует боковая пробуксовка колес, пересечем оси передних и задних колес, чтобы сформировать прямоугольный треугольник, и в результате получим:
Радиус траектории, которую описывают задние колеса:
За время расстояние вдоль этой дуги окружности, пройденное приводными колесами равно , поэтому угол на который повернется робот:
Зубчатая передача
Двигатели постоянного тока, как правило, обладают высокой скоростью вращения и низким крутящим момент, поэтому зубчатая передача практически всегда необходима для управления роботом.
Если Передача 1 имеет крутящий момент , она оказывает тангенциальную силу
на Передачу 2. Крутящий момент Передачи 2 поэтому
Изменение угловой скорости между Передачей 1 и Передачей 2 вычислим, рассмотрев скорость в точке где они соприкасаются:
- Когда маленькая шестерня приводит в движение большую, второе зубчатое колесо будет иметь более высокий крутящий момент и меньшую угловую скорость пропорционально соотношению зубьев.
- Для достижения комбинированного воздействия шестерни можно объединять в цепочки.
Оценка движения c помощью датчиков
Очень часто, робот оценивает свое движение путем мониторинга собственных датчиков. Это может быть, например напряжение электродвигателя и колесные датчики. Эта информация называется одометрией.
Например, на основе очень простой оценки:
Пройденное расстояние пропорционально напряжению и времени. Здесь является расчетной константой (используя знания электричества и геометрии), но также может быть получена в результате калибровки.
- Калибровка включает экспериментальное перемещение робота и сравнение фактического значения пройденного расстояния, со значением, полученным в результате теоретической оценки. Отношение фактического к теоретическому значениям и является коэффициентом калибровки.
- Если при повторных испытаниях будет наблюдаться расхождения в полученных значениях, мы можем повысить точность путем изменения значения констант в наших выражений (таких как ), а затем повторить процесс.
Энкодеры дают большую точность измерения числа оборотов колес. Информация с энкодера может быть преобразована в линейное расстояние умножением на постоянный радиус колеса. Но все же, как правило, для большей точности, все равно проводится калибровка.
Движение и состояние робота для плоскости
Если предположить, что робот ограничивается перемещением на плоскости, его местоположение может быть определено вектором состояния , состоящем из трех параметров:
и определяют местоположение предопределенной точки «центра робота» в мировой системе координат.
определяет угол поворота между системами координат (угол между осями и ).
Две системы координат совпадают в момент, когда центр робота находится в начале координат и .
Интегральное движение на плоскости
Получая перемещения робота в некоторые моменты времени, мы можем найти весь путь, пройденный роботом, просуммировав эти значения, или перейдя к пределу (при стремлении количества измерений ) — путем их интегрирования.
При движении на плоскости мы имеем три степени свободы для определения положения, представленные при .
Рассмотрим робота, который может только двигаться вперед или поворачиваться на месте:
При прямолинейном движении робота на расстояние новое состояние будет выражено как:
Если присутствует только вращательное движение, при повороте на угол :
Оценка кругового 2D движения
Для случаев и дифференциального и трехколесного роботов мы можем получить выражения для и для случая когда присутствует только движение по дуге окружности:
Планирование маршрута
Если предположить, что роботу известно местоположение, и как оно относится к мировой системе координат, то планирование маршрута на основе его местоположения позволит ему двигаться по точному пути вдоль последовательности заранее определенных точек. Различные криволинейные траектории могут быть спланированы, с оптимизацией таких критериев, как время движения по маршруту или потребление энергии. Здесь я рассмотрю конкретный, достаточно простой случай, предполагая, что:
- Движение робота состоит из прямолинейных отрезков отдельно от разворотов на месте.
- Робот стремится свести к минимуму общее пройденное расстояние, так что он всегда сразу поворачивается лицом к следующей точке и едет прямо к ней.
На первом шаге планирования маршрута, предположим, что текущее положение робота и следующей точкой маршрута является .
- Сначала робот должен повернуться к указанной точке. Вектор направления должен указывать на:
Значение абсолютного значения угла в градусах в который робот должен повернуться:
Необходимо убедиться, что находится в правильном квадранте, в промежутке .
- Робот уже повернут на определенный угол, поэтому угол на который он должен повернуться . Чтобы робот двигался наиболее эффективно, нужно сдвинуть угол, добавив или вычитая , чтобы .
- После этого, робот должен двигаться по прямой на расстояние .
[add_ratings]
На роботе-танке есть компас, датчики вращения колес и блютус связь с компьютером (плюс датчики препятствий и микроконтроллер). Задача- отобразить на экране переданный от робота маршрут движения по лабиринту.
Пожалуйста посоветуйте:
1-какую программу применить для графического отображения пакета данных
(азимут + число оборотов колеса)? Лучше в процессе движения ,в крайнем
случае — таблица в конечной точке маршрута.
2-как передать данные со входного порта компьютера в эту программу?
Заранее благодарен.
Юрий
Юрий, здравствуйте!
Самый простой способ визуализировать данные — использовать встроенный в Arduino IDE инструмент Serial Plotter. Для рисования траектории и визуализации каких-то дополнительных параметров придется писать самописную программку. Простенький язык специально предназначенный для подобных задач называется Processing. Есть видео.
Hello world! на Processing.
Также для реализации коммуникации между микроконтроллером и ПО, которое запущено на компьютере существует специальный протокол Firmata.