Рулевое управление робота на Arduino: особенности конструкции и программирования

Как устроено рулевое управление робота на Arduino. Какие компоненты нужны для создания системы рулевого управления. Как запрограммировать движение робота по заданной траектории. Какие алгоритмы используются для навигации робота.

Содержание

Конструкция рулевого управления робота на Arduino

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

  • Arduino-совместимая плата (например, Arduino Uno или Arduino Nano)
  • Сервопривод для поворота передних колес
  • Двигатель постоянного тока для привода задних колес
  • Драйвер двигателя (например, L298N)
  • Колеса (2 задних ведущих и 2 передних поворотных)
  • Шасси или рама для крепления компонентов

Сервопривод подключается напрямую к Arduino и управляется с помощью библиотеки Servo.h. Двигатель постоянного тока подключается через драйвер к цифровым выходам Arduino. Такая конфигурация позволяет независимо управлять поворотом передних колес и скоростью вращения задних.


Программирование движения робота по заданной траектории

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

1. Движение по точкам

Траектория задается набором координат точек. Робот последовательно движется от одной точки к другой. На каждом шаге:

  • Вычисляется угол поворота к следующей точке
  • Выполняется поворот сервопривода на нужный угол
  • Включается движение вперед до достижения точки

2. Движение по дуге

Для плавного движения по кривой траектория аппроксимируется дугами окружности. Для каждой дуги задается:

  • Радиус поворота
  • Угол дуги
  • Направление поворота (вправо/влево)

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

3. ПИД-регулирование

Для точного следования по линии или вдоль стены используется ПИД-регулятор. Он вычисляет необходимый угол поворота колес на основе отклонения от заданной траектории:

  • П-составляющая — пропорциональна текущему отклонению
  • И-составляющая — пропорциональна интегралу отклонения
  • Д-составляющая — пропорциональна скорости изменения отклонения

Правильная настройка коэффициентов ПИД-регулятора обеспечивает плавное и точное движение робота.


Особенности программирования рулевого управления на Arduino

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

Управление сервоприводом

Для управления сервоприводом используется библиотека Servo.h. Основные команды:

  • servo.attach(pin) — подключение сервопривода к пину
  • servo.write(angle) — поворот на заданный угол
  • servo.read() — чтение текущего угла поворота

Важно учитывать ограничения по углу поворота сервопривода и колес.

Управление двигателем

Для управления двигателем через драйвер используются функции:

  • analogWrite() — задание скорости вращения (ШИМ)
  • digitalWrite() — задание направления вращения

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

Обработка датчиков

Для навигации робота могут использоваться различные датчики:

  • Датчики линии — для движения по разметке
  • Ультразвуковые дальномеры — для обхода препятствий
  • Энкодеры — для измерения пройденного расстояния

Показания датчиков необходимо фильтровать для устранения шумов и выбросов.


Алгоритмы навигации робота в пространстве

Для автономной навигации робота в пространстве используются различные алгоритмы. Рассмотрим наиболее распространенные:

1. Движение вдоль стены

Робот поддерживает постоянное расстояние до стены с помощью бокового дальномера. Алгоритм:

  • Измерение расстояния до стены
  • Вычисление отклонения от заданного расстояния
  • Корректировка угла поворота колес

2. Движение по линии

Робот следует по линии с помощью датчиков отражения. Основные этапы:

  • Определение положения линии относительно центра робота
  • Вычисление необходимого угла поворота
  • Поворот колес для возврата на линию

3. Построение карты

Для навигации в неизвестном пространстве робот может строить карту окружения:

  • Сканирование пространства дальномером
  • Построение сетки занятости
  • Планирование маршрута по свободным ячейкам

Этот метод требует значительных вычислительных ресурсов.

Оптимизация траектории движения робота

Для повышения эффективности движения робота применяются различные методы оптимизации траектории:


Сглаживание траектории

Позволяет уменьшить рывки при движении робота. Методы сглаживания:

  • Аппроксимация сплайнами
  • Фильтрация методом скользящего среднего
  • Применение S-образных кривых разгона/торможения

Оптимизация по времени

Целью является минимизация времени прохождения маршрута. Подходы:

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

Оптимизация по энергопотреблению

Позволяет увеличить время автономной работы робота. Методы:

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

Тестирование и отладка системы рулевого управления

Важным этапом разработки является тестирование системы рулевого управления. Основные шаги:

1. Проверка базовых функций

  • Поворот колес на заданный угол
  • Движение по прямой на заданное расстояние
  • Разворот на месте на заданный угол

2. Тестирование сложных маневров

  • Движение по S-образной траектории
  • Парковка задним ходом
  • Объезд препятствий

3. Стресс-тесты

  • Движение по неровной поверхности
  • Работа при низком заряде батареи
  • Многократное повторение маневров

При отладке важно использовать логирование параметров движения для последующего анализа.


Перспективы развития систем рулевого управления роботов

Системы рулевого управления роботов продолжают активно развиваться. Основные тенденции:

Использование машинного обучения

Применение нейронных сетей позволяет:

  • Адаптировать параметры управления под разные условия
  • Прогнозировать оптимальную траекторию движения
  • Улучшать точность позиционирования

Мультиагентные системы

Взаимодействие нескольких роботов открывает новые возможности:

  • Совместное картографирование местности
  • Распределенное решение задач
  • Групповое маневрирование

Интеграция с системами компьютерного зрения

Использование камер и алгоритмов распознавания образов позволяет:

  • Точно определять положение робота
  • Детектировать и классифицировать препятствия
  • Распознавать дорожные знаки и разметку

Развитие этих направлений приведет к созданию более интеллектуальных и автономных роботов.


Описание движения мобильного робота | РОБОТОША

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

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

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

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

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

 

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

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

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

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

 

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

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

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

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

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

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

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

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


 

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

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

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

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

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

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

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

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

 

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

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

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

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

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

Движение по дуге

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

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

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

   

   

   

 

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

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

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

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

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

   

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

   

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

   

   

 

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

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

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

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

   

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

   

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

   

   

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

 

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

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

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

   

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

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

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

 

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

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

   

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

определяет угол поворота между системами координат (угол между осями и ).

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

 

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

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

При движении на плоскости мы имеем три степени свободы для определения положения, представленные при .

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

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

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

   

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

   

 

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

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

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

   

 

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

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

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

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

На первом шаге планирования маршрута, предположим, что текущее положение робота и следующей точкой маршрута является .

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

   

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

   

Необходимо убедиться, что находится в правильном квадранте, в промежутке .

  • Робот уже повернут на определенный угол, поэтому угол на который он должен повернуться . Чтобы робот двигался наиболее эффективно, нужно сдвинуть угол, добавив или вычитая , чтобы .
  • После этого, робот должен двигаться по прямой на расстояние .
 

Еще по этой теме

Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.

Создание робота для соревнований Roborace / Хабр

Специфика Roborace

Roborace – это состязания, в которых соревнуются роботы-автомобили на специальной кольцевой трассе. Можно провести некоторую аналогию между Roborace и гонками Формулы 1, за исключением двух моментов.

  • Во-первых, вместо полномасштабных гоночных болидов участвуют уменьшенные модели авто и оригинальные конструкции с габаритными и весовыми ограничениями (максимальные ШхД=25х50 см и вес до 3 кг).
  • Во-вторых, вместо пилотов автомобилем управляет бортовой компьютер, который анализирует показания различных датчиков и ориентирует автомобиль на трассе, выбирает скорость движения, предотвращает столкновения с препятствиями и соперниками. Собственно “поведение” авто на трассе определяется управляющей программой бортового компьютера.

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


Рисунок 1 – Трасса для гонок роботов:

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

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

Этапы создания робота

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

сервоприводом

. На рисунке 2 изображен робот для Roborace, построенный по подобной схеме.

Рисунок 2 – робот:

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

Так как в моем случае сервопривод уже был установлен, с ним проблем не возникло.

Следующий этап – выбор платы управления. Тут есть множество вариантов. Я выбрал Arduino как самый простой вариант. То же можно порекомендовать и читателю, особенно при недостатке опыта. Исходя из моего достаточно большого опыта, для таких роботов достаточно обычных 8-битных микроконтроллеров. Поэтому если не планируется использовать для отслеживания движений робота камеру, не стоит усложнять его более мощным процессором.

Сервопривод можно напрямую подключить к Arduino – например, через sensor shield, изображенный на рисунке 3. К нему также удобно подключать датчики.

Рисунок 3 – sensor shield v4:

Мотор подключить к Arduino напрямую не получится. Нужно использовать специальные Motor Driver. Сейчас из достаточно много в продаже, и есть инструкции по подключению. Я использовал Motor Driver, разработанный в нашей лаборатории (рис. 4).

Рисунок 4 – motor driver:

В соревнованиях роботов приходится много внимания уделять батареям. Я использую литий-полимерные аккумуляторы. Они очень хорошо себя зарекомендовали. Один из хаков, которые я применяю в своем роботе, касается преобразователя напряжения. Штатный преобразователь в Arduino не очень хорош, поэтому для экономии энергии аккумулятора неплохо использовать Step-Down регулятор. Конечно, можно использовать и обычный линейный преобразователь.

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

На представленной здесь модели робота установлено три инфракрасных датчика. Датчики можно увидеть на рисунке 2. Они установлены в глубь корпуса по двум причинам:

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

Боковые датчики установлены под углом 45 градусов. Хорошо, если в конструкции робота предусмотрена регулировка угла их установки.

Общую схему робота можно посмотреть на рисунке 5.

Рисунок 5 – общая схема робота:

Программирование робота

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


  1. Фильтрация показаний датчиков;
  2. Вычисление угла и скорости движения робота;
  3. Передача управляющих сигналов на механизмы.

В данной структуре отсутствует блок получения информации от датчиков. Так как датчики возвращают аналоговый сигнал, в Arduino IDE есть функция analogWrite(). Данная функция замечательно работает, если не важна скорость измерения. Но так как робот разрабатывался для соревнований, было принято решение вынести обработку датчиков в прерывание.

Все платы Arduino, построенные на микроконтроллере ATmega, имеют возможность проводить измерения АЦП в автоматическом режиме. Нужно один раз настроить этот режим, а потом пользоваться полученными значениями. В результате контроллер постоянно проверяет датчики, не тратя на это процессорное время. Фильтрация показаний датчиков осуществляется медианным фильтром с окном в три элемента.

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

Есть, конечно, и нерешенные проблемы. Например, робот не знает кривизну поворота, поэтому тормозит перед каждым поворотом.

Посмотреть код проекта можно на GitHub.

Урок 1. Мобильная робототехника. Программирование движения робота. Прямолинейное движение

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

Прежде чем приступить к программированию, нам необходимо выполнить сборку нашего робота. Примером такого робота может послужить конструкция Базового робота из набора Lego EV3 45544.

Для составления программы прямолинейного движения робота воспользуемся блоками Рулевое управление из панели блоков Действие и Математика из панели блоков Операции с данными. 

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

Длина окружности колеса определяется по формуле S=π*D, π — постоянная, равная 3,14, D — диаметр колеса. В базовом наборе Lego EV3 45544 диаметр колеса составляет 56 мм. Тогда, длина окружности этого колеса будет 56*3,14≈176 мм. Для колеса другого диаметра длина его окружности вычисляется аналогично.  Следовательно, чтобы робот преодолел отрезок пути длиной Х мм, требуется совершить (Х/S) число оборотов колес.

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

В параметр b впишем значение длины окружности, а выход блока Математика подадим на вход Обороты блока Рулевое управление.

Выделяем оба блока и с помощью меню Инструменты>Конструктор моего блока создадим собственный блок для прямолинейного движения робота вперед/назад на заданное расстояние с заданной скоростью.

В окне Конструктор моего блока в поле Имя впишем название нашего блока Move. Щелчком по кнопке «+» добавим два параметра:

Затем переключимся во вкладку Значки параметров. Для первого параметра выбираем значок «Х», для второго — значок скорости. После этого нажимаем кнопку Завершить.

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

Затем переключаемся во вкладку с основной программой Program :

В этом окне появляется новый блок, с помощью которого мы можем программировать движение нашего робота на прямолинейных участках с заданной длиной пути. Первый параметр блока указывает расстояние в миллиметрах, второй — скорость движения. Для движения назад необходимо один из параметров ввести со знаком «–».

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

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

Программа «Робототехника»

 

 

Первый год обучения:

 

Тема 1. Введение: информатика, кибернетика, робототехника −2 ч.

 

Теория. Инструктаж по ТБ.

 

Практика. Зачёт.

 

Тема 2. Основы конструирования – 7 ч.

 

Теория. Простейшие механизмы. Принципы крепления деталей. Рычаг. Зубчатая передача: прямая, коническая, червячная. Передаточное отношение. Ременная передача, блок. Колесо, ось. Центр тяжести. Измерения. Названия и принципы крепления деталей.

 

Практика. Решение практических задач. Строительство высокой башни. Хватательный механизм. Редуктор. Осевой редуктор с заданным передаточным отношением. Зачет.

 

Тема 3. Моторные механизмы – 5 ч.

 

Теория. Механизмы с использованием электромотора и батарейного блока. Роботы-автомобили, тягачи, простейшие шагающие роботы.

 

Практика. Стационарные моторные механизмы. Одномоторный гонщик. Преодоление горки. Робот-тягач. Сумо. Шагающие роботы. Зачет.

 

Тема 4. Трехмерное моделирование – 6 ч.

 

Теория. Введение в виртуальное конструирование. Зубчатая передача.

 

Практика. Простейшие модели. Создание трехмерных моделей конструкций из Lego.

 

Тема 5. Введение в робототехнику – 4 ч.

 

Теория. Знакомство с контроллером NXT. Встроенные программы. Датчики. Среда программирования EV3.

 

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

 

Тема 6. Основы управления роботом – 10 ч.

 

Теория. Эффективные конструкторские и программные решения классических задач. Эффективные методы программирования: регуляторы, события, параллельные задачи, подпрограммы, контейнеры. Релейный регулятор. Пропорциональный регулятор. Защита от застреваний.

 

Практика. Траектория с перекрестками. Пересеченная местность. Обход лабиринта по правилу правой руки. Анализ показаний разнородных датчиков. Синхронное управление двигателями. Робот-барабанщик.

 

Тема 7. Удаленное управление – 12 ч.

 

Теория. Управление роботом через bluetooth.

 

Практика. Передача числовой информации. Кодирование при передаче. Управление моторами через bluetooth. Устойчивая передача данных.

 

Тема 8. Программирование и робототехника – 16 ч.

 

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

 

Практика. Траектория с перекрестками. Поиск выхода из лабиринта. Транспортировка объектов. Эстафета. Взаимодействие роботов. Шестиногий маневренный шагающий робот. Ралли по коридору. Рулевое управление и дифференциал. Скоростная траектория. Передаточное отношение и ПД-регулятор. Плавающий коэффициент. Кубический регулятор.

 

Тема 9. Среда программирования – 6 ч.

 

Теория. Изучение различных сред и языков программирования роботов на базе NXT и EV3. Структура программы. Команды управления движением. Подпрограммы.

 

Практика. Работа с датчиками. Ветвления и циклы. Переменные. Массивы данных.

 

Тема 10. Игры роботов – 10 ч.

 

Теория. Боулинг, футбол, баскетбол. Использование удаленного управления.

 

Практика. Проведение состязаний, популяризация новых видов робо-спорта. «Царь горы». Управляемый футбол роботов. Теннис роботов. Футбол с инфракрасным мячом (основы).

 

Тема 11. Состязания роботов – 18 ч.

 

Теория. Подготовка команд для участия в состязаниях роботов различных уровней. Использование микроконтроллеров NXT и EV3.

 

Практика. Сумо. Перетягивание каната. Кегельринг. Следование по линии. Слалом. Лабиринт. Интеллектуальное сумо.

 

Тема 12. Творческие проекты – 6 ч.

 

Теория. Разработка творческих проектов на свободную тематику. Одиночные и групповые проекты.

 

Практика. Правила дорожного движения. Роботы-помощники человека. Роботы-артисты. Свободные темы.

 

Тема 13. Защита проектов – 6 ч.

 

Второй год обучения:

 

Тема 1. Введение. Теория. Информатика, кибернетика, робототехника. Инструктаж по ТБ – 2 ч.

 

Практика. Зачет.

 

Тема 2. Основы конструирования – 8 ч.

 

Теория. Простейшие механизмы. Принципы крепления деталей. Рычаг. Зубчатая передача: прямая, коническая, червячная. Передаточное отношение. Ременная передача, блок. Колесо, ось. Центр тяжести. Измерения. Названия и принципы крепления деталей. Хватательный механизм. Повышающая передача. Понижающая передача. Редуктор. Осевой редуктор с заданным передаточным отношением.

 

Практика. Решение практических задач. Волчок. Силовая «крутилка». Зачет.

 

Тема 3. Моторные механизмы – 4 ч.

 

Теория. Механизмы с использованием электромотора и батарейного блока. Роботы-автомобили, тягачи, простейшие шагающие роботы.

 

Практика. Горки. Робот-тягач. Сумотори. Шагающие роботы. Маятник Капицы. Зачет.

 

Тема 4. Трехмерное моделирование – 4 ч.

 

Теория. Введение в виртуальное конструирование. Зубчатая передача.

 

Практика. Создание трехмерных моделей конструкций из Lego. Простейшие модели.

 

Тема 5. Введение в робототехнику – 10 ч.

 

Теория. Знакомство с контроллером NXT. Встроенные программы. Датчики. Среда программирования Robolab.

 

Практика. Стандартные конструкции роботов. Колесные, гусеничные и шагающие роботы. Решение простейших задач. Цикл, Ветвление, параллельные задачи. Кегельринг. Следование по линии.

 

Тема 6. Основы управления роботом – 10 ч.

 

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

 

Практика. Релейный регулятор. Пропорциональный регулятор. Защита от застреваний. Траектория с перекрестками. Пересеченная местность. Обход лабиринта по правилу правой руки. Анализ показаний разнородных датчиков. Синхронное управление двигателями.

 

Тема 7. Удаленное управление – 10 ч.

 

Теория. Управление роботом через bluetooth. Передача числовой информации. Кодирование при передаче.

 

Практика. Управление моторами через bluetooth. Устойчивая передача данных.

 

Тема 8. Программирование и робототехника – 14 ч.

 

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

 

Практика. Траектория с перекрестками. Поиск выхода из лабиринта. Транспортировка объектов. Эстафета. Взаимодействие роботов. Шестиногий маневренный шагающий робот. Ралли по коридору. Рулевое управление и дифференциал. Скоростная траектория. Передаточное отношение и ПД-регулятор. Плавающий коэффициент. Кубический регулятор.

 

Тема 9. Альтернативные среды программирования – 12 ч.

 

Теория. Изучение различных сред и языков программирования роботов на базе EV3Basic-1. Структура программы. Команды управления движением.

 

Практика. Работа с датчиками. Ветвления и циклы. Переменные. Подпрограммы. Массивы данных.

 

Тема 10. Игры роботов – 12 ч.

 

Теория. Использование удаленного управления.

 

Практика. Проведение состязаний, популяризация новых видов робо-спорта. «Царь горы». Управляемый футбол роботов. Теннис роботов.

 

Тема 11. Состязания роботов – 10 ч.

 

Теория. Подготовка команд для участия в состязаниях роботов различных уровней. Использование микроконтроллеров NXT и RCX.

 

Практика. Сумо. Перетягивание каната. Кегельринг. Следование по линии. Слалом. Лабиринт. Интеллектуальное сумо.

 

Тема 12. Творческие проекты – 6 ч.

 

Теория. Разработка творческих проектов на свободную тематику. Одиночные и групповые проекты.

 

Практика. Роботы-помощники человека. Свободные темы.

 

Тема 13. Защита проектов – 6 ч.

 

Третий год обучения:

 

Модуль «Робототехника на основе Arduino» −67 ч.

 

Тема 1. Введение – 1 ч.

 

Теория. Правила поведения при работе с микросхемами.

 

Тема 2. Основы радиоэлектроники – 4 ч.

 

Теория. Понятие электрический ток, напряжение, сила тока, закон Ома, знакомство с мультиметром.

 

Тема 3. Схема. Условно – графическое изображение – 4 ч.

 

Теория. Знакомство с радиоэлементами, изображениями на схеме.

 

Тема 4. Принципиальная электрическая схема – 4 ч.

 

Практика. Составление принципиальной электрической схемы, монтаж и отладка.

 

Тема 5. Электроприводы. Редукторы – 4 ч.

 

Теория. Обзор робототехнических приводов. Знакомство с основными видами электродвигателей. Понятие о редукторах.

 

Практика. Способы передачи движения.

 

Тема 6. Непрограммируемые роботы – 4 ч.

 

Теория. Знакомство с микросхемой L293D, L298N и ее возможностями.

 

Практика. Роботы на транзисторах.

 

Тема 7. Микроконтроллер – 3 ч.

 

Теория. Знакомство с микроконтроллером Arduino.

 

Тема 8. Интерфейс работы с Arduino – 3 ч.

 

Теория. Среда разработки Arduino.

 

Тема 9. Свет и звук – 4 ч.

 

Практика. Подключение светодиодов, семисегментного индикатора, ЖК дисплея и пьезоэлемента.

 

Тема 10. Управление – 4 ч.

 

Практика. Подключение кнопок и джойстика.

 

Тема 11. Сервопривод – 4 ч.

 

Теория. Изучение сервопривода.

 

Практика. Подключение и программирование.

 

Тема 12. Датчики расстояния – 4 ч.

 

Теория. Знакомство с датчиками измерения расстояния.

 

Практика. Соединение датчиков расстояния и сервоприводов, поворот в определенную сторону.

 

Тема 13. Датчики и модули – 3 ч.

 

Теория. Знакомство с датчиками температуры, влажности.

 

Практика. Подключение Wi-Fi и Bluetooth модулей.

 

Тема 14. Драйвер двигателя 2 ч.

 

Теория. Знакомство с драйвером двигателя.

 

Тема 15. Линейная программа – 4 ч.

 

Практика. Сборка простой модели. Движение вперед назад.

 

Тема 16. Разветвляющаяся программа – 6 ч.

 

Практика. Сборка модели, движущейся по линии.

 

Тема 17. Умный робот – 4 ч.

 

Практика. Сборка модели с сервоприводом и ультразвуковым дальномером, объезжающим препятствия.

 

Тема 18. Проект «Мой робот» – 3 ч.

 

Практика. Сборка собственной модели.

 

Тема 19. Демонстрация моделей −2 ч.

 

Модуль «Управление квадрокоптерами» – 41 ч.

 

Тема 1. Введение −2 ч.

 

Теория. Рассказ о развитии беспилотных летательных аппаратов в мировом сообществе и в частности в России. Показ видео роликов о беспилотных аппаратах, их возможностях. Правила техники безопасности.

 

Тема 2. Беспилотные летательные аппараты (БПЛА), базовый уровень – 6 ч.

 

Теория. Основные понятия беспилотных летательных аппаратов (БПЛА), их свойства; законодательство о применении воздушных летательных аппаратов; элементы БПЛА: фюзеляж, винтомоторная группа, системы управления, электроника и прочее.

 

Практика. Блок-схема БПЛА, основные параметры энергозависимости винтомотрных групп и веса аппарата.

 

Тема 3. Программное обеспечение контроллеров – 4 ч.

 

Теория. Понятие программирования контроллера полета; гиростабилизация платформы; датчики полетного контроллера; среда программирования полетного контроллера; регуляторы моторов; изменение скорости вращения и мотора («прошивка«).

 

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

 

Тема 4. Полетные задания. Использование БПЛА – 6 ч.

 

Теория. Применение БПЛА для различных нужд современного общества; понятия и виды полетных задач; регистрация полетов и результатов; техническое обслуживание и правильная эксплуатация полетной техники.

 

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

 

Тема 5. Изучение модуля GPS и навигационного оборудования −6 ч.

 

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

 

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

 

Тема 6. Составление полетных заданий, программирование контроллеров – 5 ч.

 

Теория. Среда программирования контроллеров; балансировка гироскопов, акселерометров, компаса; маршрутизаторы движения БПЛА по точкам GPS.

 

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

 

Тема 7. Обработка визуальной информации с борта – 7 ч.

 

Теория. Контроллеры стабилизированного подвеса; механика стабилизированного подвеса; системы передачи видеоизображения с подвеса на приемное оборудование; оптические камеры; программы обработки фотографий, создания 3D туров.

 

Практика. Управление полетами двумя операторами – БПЛА и подвесного оборудования. Режимы съемки и обработки информации. Создание панорамных изображений для индивидуальных фотоальбомов. Создание видеороликов с высоты.

 

Тема 8. День показательных выступлений и соревнований – 4 ч.

 

Практика. Соревнования.

 

Итоговое занятие −1 ч.

ПОДКЛЮЧЕНИЕ GPS К МК, РАЗРАБОТКА АЛГОРИТМА ДВИЖЕНИЯ РОБОТА ПО GPS | Опубликовать статью ВАК, elibrary (НЭБ)

Черных А.А.

Студент, НИ Томский политехнический университет

ПОДКЛЮЧЕНИЕ GPS К МК, РАЗРАБОТКА АЛГОРИТМА ДВИЖЕНИЯ РОБОТА ПО GPS

Аннотация

В данной работе описано подключение GPS модуля к микроконтроллеру. Составление алгоритма движения робота по GPS координатам траекторией “Гауссом”.

Ключевые слова: микроконтроллер, GPS модуль, алгоритм.

Chernykh A.A.

Student, Tomsk Polytechnic University

PS RECEIVER TO MICROCONTROLLER CONNECTION, DEVELOPMENT MOVEMENT ALGORITHMS OF THE ROBOT USING GPS

Abstract

This article describes a connection of GPS module to a microcontroller. Designing a “Gauss-trajectory” robot movement algorithm using GPS coordinates.

Keywords: microcontroller, GPS module, algorithm.

Введение

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

Одной из основных задач в робототехнике является позиционирование и навигация робота в пространстве.

Существуют различные вездеходы, аппараты на воздушных подушках. Управляются они человеком. Для автономного управления таких платформ необходима система навигации.

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

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

Подключение GPS к МК

Первоначальным этапом необходимо настроить GPS модуль для передачи координат на микроконтроллер и отделением нужной  информации для ее дальнейшего применения в программировании по алгоритму движения робота, так как сам модуль передает на МК различные данные. Был выбран GPS модуль u-blox 6m.

Для передачи GPS координат на микроконтроллер используют NMEA 0183 протокол.

Была собрана схема подключения (рис.1) GPS к микроконтроллеру и написана программа на языке C++. Использовался МК ATmega 328, GPS u-blox 6.

Рис.1 – Электрическая принципиальная схема подключения GPS к AVR МК

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

Для этого подбирается управляющий узел (микроконтроллер, ЭВМ) и набор датчиков и модулей. На рынке представлено множество готовых модулей, которые напрямую подключаются к  микроконтроллеру, что существенно облегчает задачу разработки устройства.

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

Поэтому разработчики берут в расчет конструктивные особенности и применяют уже конкретные модули для решения поставленных задач.

Алгоритм движения робота по прямой траектории с GPS данных

        В качестве одно из вариантов траектории движения – “Гауссом” (работа комбайна на поле).

  1. Устанавливаем робота вручную в нужном нам направлении для прохождения заданной нами траектории (длина прямого участка траектории гауссом, и количество таких участков).
  2. По цифровому компасу будет определено и передано на МК направление в статике, а также глобальные координаты по GPS.
  3. Зная вектор между текущей точкой и конечной, а также вектор текущего движения робота, можно корректировать движение робота при отклонении от заданной траектории:
  • Вычисляем вектор текущего направления (куда робот едет в данный момент)
  • Вычисляем вектор от робота к нужной точке. Этот вектор разворачиваем на 90 градусов.
  • Тогда при параллельности, а следовательно и истинности направления движения, скалярное произведение вектора текущего направления и вектора от робота до конечной точки будет равно нулю. Управляющее воздействие не подаем на рулевой механизм.
  • При отклонениях траектории скалярное произведению будет в пределах от -1 до 1. Так как вектор от робота к нужной точке развернули на 90 градусов, то при отклонении робота вправо результирующий угол между векторами будет (90°+𝜑). То есть скалярное произведение будет отрицательным, и как следствие при значении скалярного произведения от -1 до 0 нужно подворачивать влево. И наоборот, со значениями скалярного произведения векторов от 0 до 1, подворачивать вправо.
  • В зависимости от значения подаем управляющее воздействие на поворотный механизм. Изменяем скважность сигнала ШИМ, подавая его на сервопривод, пропорционально отклонению. Чем больше значение по модулю, тем больше управляющее воздействие соответственно. От знака скалярного произведения зависит направления “подворота” (отрицательное – поворот влево, положительное – поворот вправо).

Заключение

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

Литература

  1. Блог: Arduino [Электронный ресурс]. URL: http://arduino.ru/ Режим доступа: свободный (дата обращения: 15.01.2015).
  2. Datasheet на GPS модуль Ublox 6m.
  3. Datasheet на микроконтроллер

References

  1. Blog: Arduino [Jelektronnyj resurs]. URL: http://arduino.ru/ Rezhim dostupa: svobodnyj (data obrashhenija: 15.01.2015).
  2. Datasheet na GPS modul’ Ublox 6m.
  3. Datasheet na mikrokontroller ATmega328.

Создание робота автономного движения по линии

Ключевые слова: конкурс робототехники, автономное движение по линии, ПИД регулятор, А-мега.

 

В современный период технологии робототехники активно развиваются и внедряются в повседневную жизнь. В частности, распространению автоматизации в Российской федерации способствует создание новых научно-исследовательских центров, активное исследование и внедрение роботизированной техники в промышленную и общественную среду, финансирование данной среды, а также проведение соревнований и тестирования в реальных условиях [2]. Если ранее достать запчасти для создания робота было крайне проблематично, то в настоящий момент запчасти и инструкции по их созданию доступны любому желающему.

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

Именно данная цель была поставлена перед участниками соревнований по робототехнике «KubSU-robotics 2014» г. Краснодара. Наша команда принимала участие в категории «Линия». Нашей задачей было разработать робота, который должен самостоятельно за наименьшее время пройти трассу. Трасса была разработана Санкт-Петербургским Государственным Политехническим Университетом (рис. 1). Длина трассы составляет 12 м.

Он должен менять направление своего движения в зависимости от положения линии относительно центра масс линейки датчиков робота.

Рис. 1. Трек дисциплины «Гонки по линии»

 

Для начала было решено, что в качестве процессора будет использована плата Arduino Mega 2560 ввиду своей надежности и быстродействия (рис.2).

Рис. 2. Плата Mega 2560

 

В качестве источника питания использовался литий-полимерный аккумулятор напряжением 12 В и ёмкостью 2 200 мАч.

Была использована стандартная для таких видов соревнований колёсная схема с двумя ведущими колесами, расположенными сзади и одной шаровой опорой [1]. Привод колёс осуществляется двумя мотор-редукторами по одному на каждое колесо, развивающими 290 об/мин на выходе при подаче на них напряжения в 6 Вольт. Ведущие колёса представляют собой автомодельные колёса с шиной диаметром 120 мм и шириной шины 60 мм.

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

Несущая конструкция робота была изготовлена из ПВХ плиты толщиной 8 мм, что позволило снизить вес робота без потери прочности несущей конструкции. Так же были использованы различные детали из набора робототехнического конструктора

«Robo Trick» (крепления двигателей, передняя шаровая опора, крепления линейки датчиков). Снимок робота представлен на рисунке 3.

Рис. 3. Конструкция робота

 

Далее необходимо было разместить на роботе систему распознавания линии. Для этого была использована линейка датчиков, составленная из пяти плат-датчиков промышленного производства «Eb-Line finder». Плата датчик представляет из себя плату со смонтированными на ней двумя инфракрасными парами, работающими на отражении. Так же на плате расположен аналоговый компаратор, который переводит аналоговый сигнал с каждого датчика в цифровой «0» или «1» и переводит этот сигнал на выход. Схема алгоритма работы платы-датчика представлена на рис.4 [3].

Рис. 4. Схема работы платы-датчика

 

Перейдем к описанию программы. Схема работы этапов представлена на рисунке 5. Работа программы состоит из следующих этапов:

1.                  Производится считывание данных с датчиков.

2.                  На основании полученных данных с датчиков, производятся математические расчёты и определяются значения коэффициентов для датчиков.

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

Рис. 5. Схема работы программы

 

Рассмотрим каждый из этапов работы.

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

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

1.                  Нахождение суммы массива.

2.                  Если сумма массива меньше 10, то соответственно робот находится на линии, следовательно, робот находится на линии, иначе запускается алгоритм поиска линии.

3.                  Присвоение весового коэффициента каждому датчику. Чем датчик дальше от центра, тем коэффициент больше.

4.                  Вычисление центра суммы значений датчиков и перерасчет с весовыми коэффициентами. Производится получение точного значения отклонения от линии.

5.                  Расчёт упреждения ПИД-регулятором (пропорционально-интегрально-дифференциальный регулято) по 4 итерациям.

6.                  После вычитания из максимально возможного коэффициента тяги значения упреждения, получаем момент тяги для каждого колеса.

Краткая схема работы алгоритма представлена на рисунке 6.

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

Если робот всё равно не может найти центр, тогда попеременно через каждый промежуток времени производится переключение тяги с левого двигателя на правый и наоборот до тех пор, пока линия не будет найдена, то есть будет двигаться по траектории в форме восьмерки, пока линия не будет обнаружена. Более подробно алгоритм поиска линии представлен на рисунке 7.

Вывод результата. Вывод результата осуществляется стандартным способом с помощью ШИМ, и сигнал передается на драйвер. Драйвер соответственно усиливает полученный сигнал и подает необходимый ток на двигатели [4].

Итог. В результате робот устойчиво держится на трассе, а в случае ухода с линии, немедленно возвращается на неё. Полосу препятствий, представленную на рисунке 1 робот проходит со скоростью 1 м/с за 12 секунд. Благодаря достигнутым данным показателям наша команда заняла первое место на соревнованиях по робототехнике по данной дисциплине.

Рис. 6. Алгоритм вычисления центра линии

 

Рис. 7. Алгоритм поиска линии.

 

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

 

Литература:

 

1.      Филиппов С. А. Робототехника для детей и родителей. — СПб.: Наука, 2013. 319 с. ISBN 978–5-02–038–200–8

2.      Макаров И. М., Топчеев Ю. И. Робототехника: История и перспективы. — М.: Наука; Изд-во МАИ, 2003. — 349 с. — (Информатика: неограниченные возможности и возможные ограничения). — ISBN 5–02–013159–8.

3.      Соммер У. Программирование микроконтроллерных плат Arduino/Freeduino. М.: БХВ-Петербург, 2012. — 256 с. — (Электроника). — ISBN978–5-9775–0727–1.

4.      Сайт энциклопедии «Амперика/Вики». http://wiki.amperka.ru/

Основные термины (генерируются автоматически): алгоритм поиска линии, датчик, линия, робот, считывание данных, вывод результата, момент тяги, плат, рисунок.

Промробоквантум

1. Основы конструирования: способы соединения деталей, простые конструкции, характеристики конструкций, простые механизмы (рычаги, колеса и оси, ремни и шкивы, зубчатые колеса и передачи).
2. Основы робототехники: программное управление, алгоритмы и теория управления, программирование (WeDo), система датчиков, система привода, передача механической энергии.
3. Мехатроника: усложненные конструкции (каркас + механизмы), механизированные конструкции, комбинации различных решений робототехнических систем.
4. Автономная робототехника: система управления, алгоритмы и теория управления, программирование (EV3), система датчиков, система привода, системы движения робота, манипуляторы (обнаружение, захват объекта, перемещение объекта, изменение состояния объекта).
5. Конструирование систем роботов из металлических деталей: детали, способы соединения деталей, металлические конструкции, параметры конструкций, усложненные конструкции, прочностные характеристики.
6. Мехатронная робототехника: алгоритмика и теория автоматического управления и регулирования, текстовое программирование, система датчиков, система привода, симуляция работы роботов в 2D и 3D режимах, машинное
зрение.
7. Электроника и ардуино робототехника: выбор деталей конструкции из готовых вариантов, освоение различных видов сборки конструкций.
8. Мобильные роботы со сложной кинематикой: электроника, сборка электрических схем, программирование Arduino (Си).
9. Освоение стандартных решений: изготовление деталей конструкции с применением различных технологий обработки материалов (CAD, фрезер, лазер, 3D-печать, литье в формы), освоение различных видов сборки конструкций, электроника, сборка электрических схем, пайка, программирование Arduino, различные виды дистанционного управления роботом (ИК, bluetooth, WI-FI).
10. Проектно-соревновательная робототехника: олимпиада НТИ интеллектуальные робототехнические си-
стемы, WRO Advanced robotics Challenge, RoboCUP Soccer, Junior, VEX IQ & Robotics Challenge, AutoNET 14+.

42Bots / ArduinoBlueBot: робот с дифференциальным рулевым управлением, совместимый с Arduino, управляемый с телефона Android через Bluetooth

Робот с дифференциальным рулевым управлением, совместимый с Arduino, управляемый с телефона Android через Bluetooth.

Это робот с дифференциальным рулевым управлением, которым можно управлять с телефона Android через Bluetooth. «Мозг» робота — это плата, совместимая с Arduino Uno («Arduino на макете»). Робот использует модуль Bluetooth JY-MCU для связи с телефоном Android.Пользовательское приложение для Android, созданное с помощью MIT App Inventor 2, по сути, действует как пульт дистанционного управления, отправляя команды на Arduino, которые говорят роботу двигаться вперед, назад, останавливаться или вращаться.

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

Связь между телефоном и платой Arduino на данный момент очень проста.Когда вы нажимаете кнопку на телефоне, он отправляет байт через соединение Bluetooth (в настоящее время используются числа от 0 до 5). Скетч Arduino считывает данные из последовательного порта и действует в соответствии с командой (0 — остановка, 1 — движение вперед и т. Д.). Его можно легко расширить и использовать в обоих направлениях. Например, мы можем легко отобразить данные с двух ультразвуковых датчиков расстояния на телефоне.

  • Arduino Uno (или совместимая плата)
  • JY-MCU Bluetooth-модуль
  • 2 сервопривода, модифицированные для непрерывного вращения
  • 2 ультразвуковых датчика HC-SR04 для обнаружения препятствий
  • 2 колеса (утилизировано из принтера)
  • 2 акриловых места для базы
  • 2 ролика
  • Телефон Android
  • Аккумулятор 9 В с футляром для Arduino
  • 5 батареек AA и футляр для сервоприводов и других компонентов
  • Винты, стяжки и немного горячего клея, чтобы скрепить все вместе
  • Проточная плата и провода для подключения электронных компонентов
  • Резисторы 20 кОм и 10 кОм, используемые для создания делителя напряжения (сдвиньте сигнал Arduino 5 В на выводе TX на 3.3V необходимо JY-MCU)
  • левый серво сигнал на вывод D2 Arduino
  • правый серво сигнал на вывод Arduino D4
  • передний датчик эхо-сигнала HC-SR04 и контакт триггера, подключенный к контакту Arduino D6
  • задний эхо-сигнал датчика HC-SR04 и контакт триггера, подключенный к контакту Arduino D7
  • Контакт TX JY-MCU к контакту 12 Arduino (используется как контакт RX в SoftWareSerial)
  • Вывод RX JY-MCU через делитель напряжения и к выводу 9 Arduino (используется как вывод TX в SoftWareSerial)
  • все заземления соединены вместе
  • Датчики
  • HC-SR04 и JY-MCU питаются от регулируемой линии 5 В
  • сервоприводы непрерывного вращения питаются от 5 аккумуляторных батарей AA

способов перемещения вашего робота


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

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

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

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

Самая простая форма состоит из двух колес, установленных по обе стороны от робота, как показано на рис. 1 .

РИСУНОК 1. Дифференциальное рулевое управление предполагает использование двух двигателей с каждой стороны робота.Робот управляет, изменяя скорость и направление каждого двигателя.


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

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

В конструкциях с двумя роликами / салазками колеса размещаются в центре транспортного средства, а по отдельному ролику на каждом конце (см. Рисунок 2 ).

РИСУНОК 2. Два ролика (или салазки) необходимы для роботов с дифференциальным управлением с двигателями в центре. Это обеспечивает максимальный баланс и поддержку, но снижает способность робота перемещаться по пересеченной местности.


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

В конструкциях с одним роликом / салазками колеса размещаются с одной стороны транспортного средства, а ролики — с другой. Это дает преимущество создания хорошего трехточечного баланса, не доставляя особых проблем на неровной поверхности. Недостатком является то, что радиус поворота робота не такой узкий, как при установке колес по центру.

Варианты двухколесной базы включают четыре или шесть колес (4WD, 6WD).На базах с более чем двумя колесами опорные ролики или салазки обычно не требуются.

В системах 4WD и 6WD каждое колесо может приводиться в действие отдельным двигателем. Двигатели с каждой стороны работают как одно целое; например, все двигатели слева включаются или выключаются одновременно. На рис. 3 показана база полноприводного робота, в которой используются четыре двигателя, каждый из которых подключен к своему колесу. Колеса вытянуты из недорогой игрушки. Их жесткая пластиковая конструкция снижает «пробуксовку», вызываемую трением при поворотах, что является проблемой для полноприводных моделей.

РИСУНОК 3. Роботы с приводом на четыре и шесть колес используют несколько колес для обеспечения тяги и устойчивости. Колеса с каждой стороны робота могут приводиться в движение отдельными двигателями или приводиться в движение посредством рычажных механизмов или шестерен от центрального двигателя.


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

Размер колеса сильно влияет на скорость передвижения робота. Колеса большего размера (для заданного числа оборотов двигателя) заставляют робота двигаться быстрее. Пример: если робот движется со скоростью шесть дюймов в секунду с колесами диаметром 1,5 дюйма, переход на колеса диаметром 3 дюйма увеличивает скорость до 12 дюймов в секунду. Однако увеличение скорости не обходится без затрат. Крутящий момент уменьшается по мере увеличения колес.

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

Хотя дифференциальное рулевое управление является наиболее распространенной геометрией привода для роботов с колесами, существуют и другие подходы.В одном используется один приводной двигатель, приводящий в действие два задних колеса и рулевое колесо спереди; расположение такое же, как у детского трехколесного велосипеда (см. рис. 4 ).

РИСУНОК 4. При рулевом управлении трехколесного велосипеда робот приводит в движение один приводной двигатель; одно колесо впереди управляет роботом. Остерегайтесь короткой колесной базы, так как это может привести к опрокидыванию робота при повороте.


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

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

Существует два основных варианта трехколесных приводов:

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

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

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

Со времен Первой мировой войны танк стал символом военных сражений.Неудивительно, что конструкция танка пользуется популярностью среди конструкторов роботов. Те же принципы, которые делают военный танк лучшим на пересеченной местности, применимы и к роботам. Гусеницы или протекторы образуют широкую основу, повышающую устойчивость автомобиля. Механика протекторов создает «виртуальное» колесо с очень большой площадью поверхности, которое соприкасается с землей.

Как и обычный двухколесный бот, гусеничные роботы также управляются по-разному. Две длинные цепные гусеницы (или гусеницы ) установлены параллельно с каждой стороны транспортного средства, как в , рис. 5, .Отдельный двигатель приводит в движение каждую гусеницу в любом направлении через звездочку; Зубчатая конструкция звездочки гарантирует, что приводной механизм не просто раскрутится в случае заклинивания гусеницы.

РИСУНОК 5. Роботов с гусеницами танка (также называемыми гусеницами) можно использовать на пересеченной местности.


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

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

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

Если обе гусеницы движутся в одном направлении, робот движется по прямой вперед или назад.Если одна гусеница перевернута, робот поворачивает ( Рисунок 6, ).

РИСУНОК 6. Как и колесные роботы с дифференциальным управлением, гусеничные боты управляются путем изменения направления гусениц.


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

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

Основным преимуществом гусеничного транспортного средства является его способность перемещаться по пересеченной местности. Гусеницы улучшают «сцепление с дорогой», позволяя роботу перемещаться по рыхлой грязи, песку, траве и другим поверхностям, о которых колесный робот может только мечтать. Большая площадь протектора значительно увеличивает трение. У гусеничного транспортного средства могут возникнуть проблемы с поворотами, а гусеницы могут соскочить, если они сделаны из гибкой резины. Подходящий материал протектора бывает трудно найти.

Распространенным подходом является использование резиновых гусениц и колес Tamiya (Tamiya # 70100) или взлом игрушечного танка, подобного тому, что изображен на , рис. 7, .

РИСУНОК 7. Удобный источник гусениц для роботов — моторизованные танковые игрушки.


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

РИСУНОК 8. Ходовую часть взломанного танка можно снять и поставить на собственное шасси. Это требует больше работы, но обеспечивает большую гибкость при проектировании вашего робота.


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

Лучший способ предотвратить рыхлые и неровные следы — использовать неэластичный материал. Рис. 9 показывает механизм привода гусеничного робота-самовар, в котором используются пластиковые звенья протектора.

РИСУНОК 9. В отличие от обычных резиновых ступеней, используемых в гусеничных роботах, пластиковые звенья гусеницы сопротивляются растяжению, поэтому они не так легко отрываются, когда бот делает поворот.


Каждое звено отлито отдельно из жесткого пластика; стержень из нержавеющей стали соединяет звенья.Вы можете добавлять или удалять ссылки для регулировки длины проступи. Эти конкретные ссылки доступны в интернет-магазинах. Поищите другие источники протектора из твердого пластика (а в некоторых случаях и металла).

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

Зачем кататься, если можно ходить? Это идея роботов на ногах. Ходячие боты могут иметь две, четыре, шесть и даже восемь ног — шестиногая разновидность (гексапода), пожалуй, самая распространенная. Четыре или более ножек обеспечивают так называемый статический баланс , при котором как минимум три ножки касаются земли в любой момент.При таком расположении ножки предотвращают опрокидывание робота.

Суставы каждой ноги определяются как степеней свободы (DOF) : чем больше DOF, тем более маневренная платформа, но тем сложнее ее построить. Два-три сустава характерны для четырех-, шести- и восьминогих роботов. В большинстве конструкций для каждого шарнира требуется собственный двигатель, поэтому для каждой степени свободы стоимость, вес и сложность робота быстро возрастают.

Гексаподу 3DOF, например, требуется 18 двигателей — по три двигателя на каждой из шести опор.Большинство шагающих роботов используют серводвигатели от радиоуправляемых моделей самолетов. При средней стоимости 12 долларов за двигатель это 216 долларов только за двигатели. (Честно говоря, вам будет лучше с сервоприводами более высокого качества для вашего шагающего бота. Нетрудно потратить от 300 до 500 долларов только на моторы для хорошо оборудованного робота-гексапода.)

Из всех типов передвижения ноги требуют наибольшего мастерства обработки и сборки. Сгибание ног может вызвать напряжение в материале; акриловые пластмассы со временем могут сломаться. На рис. 10 показан гексапод 2DOF, изготовленный из вспененного ПВХ-пластика. Лучшие прогулочные боты используют алюминиевый металл, поликарбонатный пластик или АБС-пластик.

РИСУНОК 10. Несколько серводвигателей RC действуют как суставы ног в шагающем роботе. Всего в этой конструкции используется 12 двигателей; по два сервопривода на каждую из шести опор.


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

На рисунке 11 показана наиболее распространенная походка шестиногого робота. Эту походку часто называют «попеременной походкой на треноге», потому что по крайней мере три ноги всегда касаются земли одновременно, обеспечивая статический баланс, отмеченный ранее.

РИСУНОК 11. Ходьба робота на ногах — это его походка. Обычно у робота с шестью ногами (гексапода) три ноги одновременно касаются земли в виде штатива, обеспечивая статический баланс.


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

Ножки работают либо для подъема, либо для привода (см. Рисунок 12 ).

РИСУНОК 12. Как и любое идущее существо, робот на ногах перемещается, поднимая сегмент ноги вверх и вниз, одновременно размахивая ногой взад и вперед.


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

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

Итак, теперь у вас есть основы создания мобильного робота, ну, в общем, мобильного. В своем следующем проекте обязательно внимательно изучите плюсы и минусы каждого метода привода.Убедитесь, что система привода соответствует вашему бюджету, строительным навыкам и игровой зоне робота. Нет ничего хуже, чем увидеть, как беспомощный робот, предназначенный для катания по ковру, застревает в мягком песке вашего заднего двора. Поговорим о жестоком! SV


Гордон МакКомб является автором бестселлеров Robot Builder’s Bonanza и Arduino Robot Bonanza , опубликованных McGraw-Hill.

Kuman Smart 2 Wheel Obstacle Avoidance, Tracking, Коммунальная машина Arduino Robot Car Kit SM2, Робот Kit

Этот робот-автомобиль предназначен для всех профессиональных любителей инженеров, которые могут собрать и сделать вторую разработку, это не игрушка.
Разработанный, чтобы дать пользователю в изучении микроконтроллера ARDUINO может от скучных теоретических знаний, возможность приобрести разработанную систему SCM.
Подходит для инженеров-электронщиков или студентов старше 12 лет.

Основные характеристики:
● Встроенная фиксация макетной платы на платформе, легко расширяемая и вторая разработка
● Бесплатная сварочная установка, более 40 компонентов, в том числе
● 2в1: автомобильный комплект робота и стартовый комплект для Arduino
● Инфракрасная форма для предотвращения препятствий и ультразвуковая форма для предотвращения препятствий Форма для инфракрасного отслеживания для легкого управления автомобилем-роботом.

Английский Подробное руководство, включая введение в проект и его исходный код, будет предоставлено БЕСПЛАТНО. Свяжитесь с нами, чтобы получить ЭЛЕКТРОННУЮ КНИГУ

Упаковочный лист:
1 X UNO R3 Совет по развитию
1 линия передачи данных USB
1 X коробка для компонентов SMT
1 X LCD1602 дисплей
1 X SG90 Рулевой двигатель
1 X сумка для аксессуаров рулевого двигателя
2 X нескользящее колесо
2 X двигатель угольной щетки
1 X HC-SR04 ультразвуковой модуль
1 зарядное устройство
2 аккумулятора 14500
1 X сумка для аксессуаров (латунный винт)
1 X 8 * 8 точечная матрица
Цифровая трубка 1 X 4
1 X 1 цифровая трубка
1 X активный зуммер
4 X ключевой переключатель
2 X шаровой переключатель
2 X светочувствительное сопротивление
2 X термистор
1 X 74HC595Чип
1 X Интеллектуальный автомобильный пол
2х малая макетная доска
1 X расширенная приемная коробка
1 X MINI пульт дистанционного управления
1 X диск с данными
30X Красочная хлебная линия
25 X DuPont линия
1 X Универсальное колесо
1 X фиксированная доска
1 X ультразвуковой модуль Фиксированная плата
1 X Рулевой двигатель Фиксированная плата
1 X батарейный отсек
1 X инфракрасная приемная трубка
3 X регулируемое сопротивление
1 X датчик пламени
5 X сопротивление штекера 10K
5 X сопротивление штекера 1K
8 X Сопротивление штекера 220 Ом
5 X красный светодиод
5 X желтый светодиодный свет
5 X синий светодиодный свет

Как сделать собственного робота

Как сделать своего собственного робота на 2 колесах, используя шаговые двигатели с деталями и датчиками Arduino:

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

В предыдущем посте «Использование Arduino для управления двигателем». Создавая радиоуправляемую машину с использованием серводвигателя для рулевого управления, мы создали автомобиль с дистанционным управлением, в котором обычный двигатель обеспечивает движение вперед / назад, а серводвигатель управляет рулевым управлением.

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

Создайте своего собственного робота с помощью этого рецепта электронной конструкции

Приблизительное время: 90 минут
Необходимые детали

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

Иллюстрация 1. Моделирование двухколесного робота

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

Детали для 3D-принтера, который я использовал, можно найти здесь .

На иллюстрации 1 используется бесплатное программное обеспечение для моделирования «123d design» и показано, что я думал о простой конструкции тела двухколесного робота.Я подумываю использовать круглый кусок дерева в качестве основы и прикрепить к нему шаговые двигатели, Arduino и батарею. Поскольку двухколесный робот может перевернуться вперед или назад, я прикреплю к задней части доски небольшой шарнирный механизм для поддержки.

Чтобы определить размер колес, поместите шаговый двигатель на круглый кусок дерева, показанный на рисунке 1, и измерьте высоту от пола. К этой высоте прибавьте высоту, когда колесико будет немного плавать + 2-3 мм, и вы получите диаметр колеса.

Рисунок 1 Круглая доска и колесо, изготовленные на 3D-принтере

Рисунок 2 Опора шарикового ролика

Также я смоделировал деталь, которая фиксирует шаговый двигатель на плате. На осевой стороне шагового двигателя есть четыре 4-миллиметровых отверстия для винтов, поэтому я сделал деталь, которую можно использовать для фиксации круглой платы на шаговом двигателе.

Иллюстрация 2 Деталь, которая крепит шаговый двигатель к круглой плате

Рисунок 3 Детали, напечатанные на 3D-принтере

После того, как 3D-принтер произвел детали, я установил шаговый двигатель и подтвердил размер.Он идеально подошел.

Рисунок 4 — Сборка деталей

Присоедините драйвер к шаговым двигателям.

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

Изображение 5 — Временно открутите винты и прикрепите плату драйвера.

Рисунок 6 — Плата драйвера на задней стороне шагового двигателя

Схема для управления двумя шаговыми двигателями с использованием Arduino

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

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

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

Рисунок 3 — Схема, соединяющая два шаговых двигателя

Отличие от того, когда в схеме был только один, состоит в том, что теперь у первого и второго шаговых двигателей есть часть, соединяющая их. После подтверждения с таблицей данных L6470, первый шаговый двигатель подключен к SDO, а второй шаговый двигатель подключен к SDI.Данные отправляются и принимаются через эту часть.

Рисунок 4 — Принципиальная схема L6470

Заключение

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

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

By 2 Fast 2 Автономный: — Беркай Гириш — Биркан Денизер — Мухаммед Альперен Озкан — Мустафа Фуркан Сюве — Салих Джан Юрткулу — Sergen Kayıkçı

25.12.2017

Содержание

1.Абстракция

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

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

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

2. Мотивация

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

На некоторых транспортных средствах уже есть функции автономного вождения благодаря машинному обучению и сложной системе датчиков, камер и программного обеспечения, которое помогает транспортным средствам поглощать данные из окружающей среды, а также учиться и реагировать на то, о чем они говорят [1]. Многие компании, такие как Ford, BMW, Tesla, Google и т. Д., Делают несколько крупных инвестиций в беспилотные автомобили [2]. В частности, Ford вкладывает огромные средства в совершенствование технологии автономного вождения и заявляет, что к 2021 году начнет поставки беспилотных автомобилей.Из заявлений и инвестиций Ford можно понять, что компания хочет быть лидером на рынке автономных автомобилей. Однако похоже, что Ford — не единственный производитель автомобилей, который приблизится к успеху в индустрии беспилотных автомобилей; Tesla и BMW также вкладывают большие средства и продолжают создавать новые возможности для самостоятельного вождения [3]. Даже Uber тестирует и инвестирует 300 миллионов долларов в дальнейшее развитие парка беспилотных автомобилей [1].

Наша мотивация, стоящая за этим проектом, заключается в том, что поиск мест для парковки действительно трудный, стрессовый и трудоемкий, особенно в больших городах.Кроме того, парковка автомобиля — стрессовая и сложная проблема для нескольких водителей. Ключевая идея автоматической парковки состоит в том, чтобы спланировать и определить угол поворота и скорость, чтобы достичь желаемой операции парковки с помощью распознавания окружающей среды. Парковочный маневр выполняется как последовательность контролируемых движений с использованием данных датчиков из измерений дальности в окружающей среде. Управление рулевым управлением и скоростью вычисляется и выполняется в реальном времени. Такой подход приводит к различным формам траекторий, необходимых для выполнения маневров при парковке.

3. Справочная информация

Основная цель этого проекта — построить автомобиль, который может припарковаться на парковочном месте параллельно. Для достижения этой цели автомобилю необходимо выполнять несколько операций в быстрой последовательности. Во-первых, автомобиль должен выровняться со стеной, чтобы он мог начать поиск подходящего места для парковки. Когда он выровнен, он должен проверить его расстояние до стены, чтобы измерить длину и глубину парковочного места по мере его движения. Как только место с идеальными требованиями (рис. 1) найдено, он должен выполнить маневры при парковке, а также проверить расстояние до любых объектов, которые могут быть поблизости.Если операции по парковке завершены, автомобиль будет ждать несколько секунд перед выполнением следующей операции при выезде с места. Чтобы покинуть место, автомобиль будет проверять свои боковые датчики, удаляясь от места, чтобы он мог выровняться со стеной, что является конечным условием для этой операции.

Для поворота автомобиля требуются рулевые механизмы. Большинство этих рулевых механизмов работает по принципу Аккермана. Если во время поворота I-центры всех колес встречаются в одной точке, то транспортное средство повернется вокруг этой точки, что приведет к чистому качению транспортного средства.Это условие называется условием Аккермана, и этот принцип известен как принцип Аккермана [4]. Геометрия рулевого управления Ackermann связывает угол поворота внутренней шины с углом поворота внешней шины. При повороте внутренняя шина движется по меньшему радиусу, чем внешняя шина, и поэтому должна иметь больший угол поворота, чтобы избежать царапания шины. Classic Ackermann сводит к минимуму истирание, располагая обе шины перпендикулярно центру поворота. Это может существенно повлиять на износ шин [5].

Что касается аппаратного обеспечения, платформа Arduino используется для управления двигателями и датчиками.Автомобиль оснащен двумя двигателями постоянного тока 6 В 250 об / мин сзади для обеспечения движения по вертикальной оси. Эти два двигателя постоянного тока подключены к контроллеру привода двигателя 9 В под названием L298N, который подключен к Arduino Mega. Единственный серводвигатель под названием Power HD Mini Servo HD-1160A расположен в передней части автомобиля, чтобы указывать направление системе рулевого управления Ackerman. Последняя рабочая версия системы включала девять ультразвуковых датчиков дальности HC-SR04 для измерения расстояния. Относительное положение этих датчиков: три датчика спереди, три датчика сзади и три датчика справа.Для питания всех этих компонентов использовалось несколько групп батарей. Arduino Mega и все восемь подключенных ультразвуковых датчиков диапазона питались от одной батареи 9 В. Сервопривод на передней панели питался от четырех батарей 1,5 В, которые были подключены в последовательном режиме для достижения желаемого режима высокой мощности 6 В. Наконец, контроллер привода двигателя на задней панели и два подключенных двигателя постоянного тока питались от четырех батарей 9 В, которые были подключены в параллельном режиме, чтобы увеличить время использования.

4.Типовой проект дома

Объем проекта состоит из контроллера для физического управления автомобилем и состоит из значительного объема работ. Наша система состоит в основном из двух частей: электрической и механической.

Выбирая размеры автомобиля, мы пришли к смелым расчетным размерам и конструкции кузова (рис. 2). Однако наш дизайн постоянно менялся, и мы решили сначала построить прототип из картона. Таким образом, мы получили плавные числа для формы тела (Рисунок 4).Что касается механической части, мы построили кузов автомобиля из тонкой древесины. Форму тонкой древесине мы придали путем резки и наждачной бумаги. Причина, по которой мы использовали дерево в качестве материала корпуса, заключалась в том, что дерево было достаточно прочным, чтобы выдерживать вес электрических компонентов без изгиба.

Другим важным моментом при проектировании кузова была конструкция рулевого управления Ackermann. Поскольку первое приложение было успешным, мы построили еще один прототип для рулевого управления и получили наши измерения от этого прототипа (рисунок 3).

Что касается электрической части, мы выбрали Arduino для управления всем процессом. Причина, по которой мы выбрали Arduino: это экономически выгодно для этого проекта, а его компоненты легко найти / работать с ними. Нам понадобились два двигателя постоянного тока, чтобы вращать колеса. Кроме того, нам пришлось использовать серводвигатель для управления рулевым управлением. Мы разработали нашу машину с задним приводом, чтобы нам не приходилось иметь дело с управлением разными скоростями для дифференциального привода на передние колеса.

Мы решили работать с ультразвуковыми датчиками для определения расстояния до стен вокруг или вдоль пути движения автомобиля и определения места парковки.Для обнаружения парковочных мест мы вдохновились конструкцией Ford, показанной на рисунке 6. Как показано на рисунке 4, нам потребовалось три датчика сбоку для обнаружения парковочного места и по три датчика спереди и сзади для обнаружения стен или препятствий во время движения. машина. Таким образом, мы разработали нашу машину, как показано на Рисунке 7. В свете данных деталей конструкции полный список требований приведен в Таблице 1.

Сумма Компонент
1 Ардуино Мега 2560
1 Драйвер двигателя постоянного тока L298N
2 Комплект двигателя и колеса постоянного тока
1 Серводвигатель
9 Ультразвуковой датчик расстояния HC-SR04
5 Аккумулятор 9 В
4 1.Аккумулятор 5V
2 Колеса тележки

5. Конструкция робота

5.1. Оборудование

  1. Arduino Mega: Arduino Mega — это набор микроконтроллеров для создания цифровых устройств и интерактивных объектов. Мы использовали Arduino Mega 2560, поскольку у него больше контактов по сравнению с другими микроконтроллерами Arduino.

    Недвижимость: Напряжение: 9 В Цифровые контакты ввода / вывода: 54 Аналоговые выводы ввода / вывода: 16 Постоянный ток на контакт ввода / вывода: 40 мА Флэш-память: 128 КБ Тактовая частота: 16 МГц,

  2. Драйвер двигателя: Драйвер двигателя преобразует слаботочные сигналы, поступающие от Arduino, в сильноточные сигналы для управления двигателями.Мы использовали драйвер двигателя постоянного тока с двойным Н-мостом L298N.

    Недвижимость: Напряжение: 9 В Токовый вход: 0 мА — 36 мА Токовый выход: 2А Максимальная мощность: 25 Вт Размер: 43 мм x 43 мм x 26 мм Вес: 26 г

    Подключений:

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

    Недвижимость: Напряжение: 6 В Скорость раунда: 250 об / мин Вес: 29 г

  4. Серводвигатель: Серводвигатель — это поворотный привод, который регулирует угловое положение, скорость и ускорение.Мы использовали один серводвигатель для управления передними колесами.

    Недвижимость: Скорость: 60 ° / 0,12 с Крутящий момент: 3 кг / см Максимальный ток: 800 мА Мин. Ток: 5 мА Вес: 16 г Размер: 28 мм x 13,2 мм x 30,2 мм Степень двигателя: 180 °

    Подключений:

  5. Колеса: Колесо — это механический компонент, обеспечивающий движение. Мы использовали два колеса тележки для покупок для переднего и два обычных колеса для заднего и два L-образных стержня для крепления передних колес к телу робота.

    Характеристики заднего колеса: Диаметр: 64 мм Ширина: 28 мм Вес: 45 г

    Свойства переднего колеса: Диаметр: 74 мм Ширина: 22 мм Вес: 60 г

  6. Ультразвуковые датчики: Ультразвуковой датчик — это устройство, которое может измерять расстояние, посылая звуковую волну определенной частоты и прислушиваясь к отражению этой волны. Мы использовали девять ультразвуковых датчиков HC-SR04 и L-образные стержни для крепления ультразвуковых датчиков к телу робота.Три передних и три задних датчика используются для предотвращения препятствий, а боковые датчики используются для обнаружения парковки и парковки.

    Недвижимость: Напряжение: 5 В Ток: 15 мА Частота: 40 Гц Максимальный диапазон: 40 м Минимальный диапазон: 2 см Угол обзора: 15 ° Степень мотора: 180 ° 45 мм x 20 мм x 15 мм

    Подключений:

  Рисунок 10: Подключения ультразвукового датчика
  
  1. Батареи: Батарея — это устройство, обеспечивающее питание электрических компонентов.Мы использовали 1 батарею 9 В для Arduino Mega, 4 параллельных 9 В батареи для драйвера двигателя и 4 последовательные батареи 1,5 В для серводвигателя.

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

5.2. Программное обеспечение

До рабочего пакета 1 (WP1) программное обеспечение, работающее на Arduino, было очень простым с точки зрения дизайна. Данные датчика считывались, а затем на каждой итерации цикла выполнялась соответствующая функция предотвращения препятствий. Этот базовый дизайн хорошо послужил нам в первом рабочем пакете, так как было не более одного состояния. Однако для достижения желаемой цели рабочего пакета 2 (WP2) необходимо было изменить логику программного обеспечения.В этой первой итерации нового дизайна была создана логика с двумя состояниями: обнаружение и парковка соответственно. Робот был инициализирован в состоянии обнаружения, и если во время работы в состоянии обнаружения выполнялись требования к парковке, он изменил свое состояние. В следующей итерации цикла маневры парковки будут выполнены. Если условия завершения были выполнены, робот остановил бы движение. После серьезного тестирования существующей конструкции выход из парковочного места был добавлен как новое состояние.В этой новой итерации дизайна всего было три состояния, и если состояние обнаружения было завершено, то логика будет делать выбор в зависимости от того, припаркован автомобиль или нет. Если бы он не был припаркован, он бы выполнял соответствующую функцию парковки. Если бы он был припаркован, он бы выполнил соответствующий выход из функции парковки и остановил бы движение.

Некоторые библиотеки, такие как ElapsedMillis, Servo и math, были добавлены для реализации некоторых функций. Например, ElapsedMillis предоставляет информацию об истекшем времени для расчета скорости и, следовательно, информацию о расстоянии для определения рабочего состояния.Библиотека сервопривода используется для управления сервоприводом спереди. Наконец, математическая библиотека используется для вычисления абсолютного значения разницы расстояний при обнаружении.

На последней итерации дизайна было девять датчиков, и эти датчики считывались с помощью одной функции. В этой функции возвращаемое значение датчиков будет в микросекундах, а затем оно будет преобразовано в сантиметры для использования при вычислении расстояния. В WP1 были некоторые заметные задержки, вызванные датчиком, поскольку их значения тайм-аута по умолчанию составляли одну секунду.Чтобы улучшить это, функции pulseIn было присвоено максимальное значение 2 метра или 11600 микросекунд.

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

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

В функции парковки были две разные фазы, называемые parkFirstPhase и parkSecondPhase, соответственно. На основании значений, поступающих от боковых и задних датчиков, произойдет сдвиг фазы от parkFirstPhase к parkSecondPhase. Если робот был ближе к стене, чем определенное пороговое значение, он остановился бы и выйдет из функции парковки, установив флаг для функции exitPark в значение true, тем самым сигнализируя о переходе состояния от парковки к выходу из парковки.

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

6. Результаты и оценка

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

Рабочий пакет 1 заключался в создании настоящего робота. Для этого мы создаем электрические компоненты автомобиля, которые включают в себя Arduino, два двигателя, которые толкают автомобиль вперед, один сервопривод, чтобы автомобиль мог управлять, и некоторые батареи, которые питают все эти компоненты. У нас есть несколько батарей для питания различных компонентов. Поскольку двигатели выдают такую ​​большую мощность, у нас иногда заканчиваются батареи, и нам приходилось заменять их новыми.Более того, мы решили, что у нашего сервопривода недостаточно крутящего момента; поэтому мы меняем его на тот, у которого больше крутящего момента.

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

Затем мы применили дизайн Аккермана для рулевой части автомобиля. Мы заметили, что Аккерманн иногда мог застрять на другом компоненте, а винт, который мы использовали для его стабилизации, мог покачиваться. Немного перемещаем компоненты и закручиваем винт, чтобы он стал более устойчивым.Следовательно, машина могла лучше управлять и вести себя больше, чем мы хотели.

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

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

Для определения парковочного места мы использовали два датчика сбоку.Поскольку мы знали расстояние между ними, мы попытались оценить скорость автомобиля, проезжающего мимо начала слота. Однако, поскольку наши датчики не были идеальными, мы столкнулись с некоторыми шумами. Эти шумы сбивали программное обеспечение с толку, и иногда оно неправильно определяло, проезжало ли оно мимо слота для парковки и закончило ли прохождение мимо слота. Из-за этого он иногда проезжал мимо щели и продолжал движение. Кроме того, иногда решалось, что он получил позицию после обнаружения парковочного места, даже если он находился посередине.

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

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

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

7. Ожидания и благодарности

У нас возникли проблемы при реализации предлагаемого нами проекта из-за реальных обстоятельств и материалов, которые мы использовали.

7.1. Запаздывающее действие

Ожидание: Мы ожидали, что наш автономный автомобиль будет двигаться плавно.

Благодарность: У нас на машине 10 датчиков. Мы берем все данные датчиков в виде массива. Если расстояние, измеренное датчиком, велико, для возврата потребуется больше времени. Чтобы двигаться в соответствии с правильными данными о расстоянии, мы устанавливаем задержку, чтобы автомобиль использовал данные входящего датчика, а не старые.

Улучшение: В рабочем пакете 2 мы разработали новый алгоритм получения данных с датчиков. Он просто игнорирует данные, поступающие от датчиков, задержка которых превышает наш фиксированный порог.

7.2. Недостаточно мощности для поворота колес влево или вправо

Ожидание: Мы думали, что наш сервопривод достаточно мощный.

Подтверждение: Наш сервопривод был недостаточен.

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

7.3. Угловой ход вместо идеально прямого

Ожидание: Мы ожидали, что наша машина будет двигаться прямо.

Благодарность: Из-за несовершенного рулевого управления Ackerman наша машина не движется вперед прямо. Рулевой механизм Ackerman мы построили из деревянных деталей. Извлечение необходимых деталей из деревянной плиты было для нас трудным из-за недостатка материала. Кроме того, рулевое управление Акермана имеет движущиеся части, трение между этими частями было одной из причин углового движения.

Улучшение: Мы устанавливаем углы сервопривода в соответствии с нашей несовершенной системой рулевого управления Акермана.Например, мы устанавливаем 92 градуса вместо 90 градусов.

7,4. Ошибочные движения при обнаружении парковочного места

Ожидание: Мы рассчитывали легко обнаружить место для парковки.

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

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

7,5. Ошибочный расчет длины парковочного места

Ожидание: Мы рассчитывали легко рассчитать длину парковочного места.

Благодарность: Мы не смогли правильно рассчитать длину парковочного места, потому что нам неизвестна скорость автомобиля.

7,6. Неизвестная скорость

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

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

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

Ожидание: Мы ожидали, что после обнаружения парковочного места мы без проблем разместим машину.

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

8. Список литературы

  • [1] Б. Марр, «Форбс», 6 ноября 2017 г. [Online].Доступно: https://www.forbes.com/sites/bernardmarr/2017/11/06/the-future-of-the-transportindustry-iot-big-data-ai-and-autonomous-vehicles/#66529c031137. [Доступ 24 декабря 2017 г.].
  • [2] Д. Муойо, «Business Insider», Business Insider Inc., 27 сентября 2017 г. [Online]. Доступно: http://www.businessinsider.com/the-companies-most-likely-to-getdriverless-cars-on-the-road-first-2017-4/#1-ford-18. [Доступ 24 декабря 2017 г.].
  • [3] Д. Ньюман, «Форбс», 27 сентября 2016 г. [Online].Доступно: https://www.forbes.com/sites/danielnewman/2016/09/27/autonomous-cars-thefuture-of-mobility/#1c6dee2d583b. [Доступно 24 декабря 2016 г.].
  • [4] Коладиа, «Математическая модель для расчета геометрии рулевого управления Акермана стойки и шестерни» Международный журнал научных и инженерных исследований, том 5, выпуск 9, сентябрь-2014 ISSN 2229-5518
  • [5] Митчелл В., Стэнифорт А. и Скотт И., «Анализ геометрии рулевого управления Аккермана», Технический документ SAE 2006-01-3638, 2006.
  • [6] http://fordaddict.com/self-driving-cars-future-automobiles/

Робот на базе Arduino, управляемый Tactigon

Конфиденциальность и файлы cookie

Файлы cookie — это крошечные файлы данных, которые хранятся в вашем веб-браузере, когда вы посещаете веб-сайт. На www.electromaker.io мы используем файлы cookie, чтобы персонализировать ваш опыт и помочь нам выявлять и устранять ошибки.

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

Наша политика в отношении файлов cookie

Чтобы в полной мере использовать www.electromaker.io, пользоваться персонализированными функциями и гарантировать, что веб-сайты работают в полную силу, ваш компьютер, планшет или мобильный телефон должен будет принимать файлы cookie.

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

Если вы предпочитаете ограничивать, блокировать или удалять файлы cookie с www.electromaker.io или любого другого веб-сайта, вы можете использовать для этого свой браузер. Все браузеры индивидуальны, поэтому проверьте меню «Справка» в своем конкретном браузере (или в руководстве к мобильному телефону), чтобы узнать, как изменить настройки файлов cookie.

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

  • Electromaker — сеанс входа в систему
  • Google Analytics — Аналитика
  • Twitter — лента Twitter

Управление файлами cookie

Каждый веб-браузер обрабатывает файлы cookie по-разному, следуйте инструкциям для выбранного браузера:

4WD RC Smart Car шасси с металлическим сервоприводом S3003 и комплектом подшипников для Arduino

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

И профессиональный гоночный принцип дистанционного управления, использование двух стержней через сервопривод рулевого управления для управления направлением автомобиля. Кроме того, был изменен рулевой механизм заднего колеса. Алюминиевая фиксирующая деталь выполнена за одно целое с двигателем, и двигатель плотно соединен с приводным валом. В двигателе используется цельнометаллический редукторный двигатель. Если вы преследуете высокую скорость, двигатель может иметь диаметр вала 25 мм. Заднее колесо включает в себя два подшипника с фланцевыми чашками для обеспечения более гибкого вращения двигателя.

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

У нас есть только фиксированные монтажные отверстия для платформы Arduino, если у вас другие платформы, вам нужно пробить отверстия или попытаться установить.

Характеристики

Мотор цельнометаллический задний привод

Использование рулевого управления рулевым управлением автомобиля

Рулевое управление с подшипниками, потеря передачи

Технические характеристики

Модель двигателя: JGA25-370

Рабочее напряжение двигателя: 6-12 В

Модель сервопривода: MG996

Размер автомобиля: 248 мм (длина) x 146 мм (ширина) x 70 мм (высота)

Вес: 680 г

Список пакетов

Металлическое шасси x 1
Акриловое шасси x 2
Колеса 65 мм x4
Хлопок с защитой от столкновений x1
Металлический мотор-редуктор x1
Счетный кронштейн двигателя x1
Рулевое колесо x 2
Тяга заднего колеса x1
Фланец подшипника качения x2
17 МИЛЛИМЕТРОВ Муфта D-5MM x2
Привод MG996R x1
Сервомеханизм x1
L Монтажный кронштейн x1
Сектор x 2
Тяга x2
Рулевой рычаг x2
Тяга передачи x2
Подшипник (8 мм) x 2
Подшипник (12 мм) x 2
Алюминий колонка x 2
Шестигранный адаптер x 2
Переключатель x1
M3 * 16 мм проходная двойная медная колонна x 4 M3 * 16 мм
M3 * 22 мм проходная двойная медная колонна x 8 M3 * 22 мм
M3 * 35 мм проходная двойная медная колонна x 4 M3 * 35 мм
Отвертка с головкой M3 * 5 мм x2
Отвертка M3 * 5 мм x5
Отвертка M3 * 8 мм x40
M2.

Добавить комментарий

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