Диплом: Разработка автоматизированной информационной робототехнической системы для фиксации изображения с помощью САПР SolidWorks

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
42
3. Исследование кинематики движения и программное
управление мобильным роботом
3.1 Исследование кинематики движения мобильного колесного робота
На основании спроектированной в данной работе 3D модели
автоматизированной информационно-управляющей системы робота был
собран и испытан макетный образец автоматизированной информационной
робототехнической системы для фиксации изображения.
На рисунке 38 показана фотография макетного образца
автоматизированной информационной робототехнической системы с
пультом радиоуправления.
На данный макет будет установлена плата с микроконтроллером
Arduino.
Рисунок 38 – Макетный образец трехколесного робота
Для его сборки были использованы различные инструменты (отвертки,
молоток, пилы, болты, паяльник и др.), набор которых показан в приложении
Б.
43
В приложении В показаны макеты трёх и четырехколесного роботов в
собранном виде.
Для определения траекторий движений мобильного робота необходимо
рассмотреть его геометрические особенности и определить математическую
модель его движения.
Недостатком использования опорного колеса является тот факт, что
при движении робота назад (т.е. в направлении от ведущих колес к
опорному, вдоль оси Y) опорное колесо может быть повернута на угол α,
относительно осей Y и O.
В связи с этим опорное колеса будет иметь направление по оси Х, а
движение робота будет происходить по оси Z (рисунок 39).
Рисунок 39 – Направления движения робота назад при повернутом на
угол α опорном колесе
Пройденный ведущими колесами путь можно выразить через формулу
определения дуги окружности:
L(α) = αR, (1)
где r - радиус ведущего колеса,
α – угол поворота колеса (рисунок 40).
44
Рисунок 40 – Определение длины дуги окружности ведущего колеса
Один полный поворот ведущего колеса соответствует углу α=360 град.
Для определения угловой скорости вращения колеса необходимо
использовать следующую формулу:
  
, (2)
где N - число оборотов ведущего колеса,
t – время, за которое колесо совершает.
Если известен угол α, то число оборотов ведущего колеса определяется
выражением:
  

, (3)
Подставив формулу 3 в 1, получим выражение для определения пути,
пройденного ведущими колесами, в зависимости от времени, при известной
угловой скорости двигателя:
     , (4)
Исследование зависимости пройденного пути от времени будем
производить с помощью компьютерной программы Mathcad.
45
Mathcad система компьютерной алгебры из класса систем
автоматизированного проектирования, ориентированная на подготовку
интерактивных документов с вычислениями и визуальным сопровождением,
отличается лёгкостью использования и применения для коллективной
работы.
Mathcad используют в сложных проектах, чтобы визуализировать
результаты математического моделирования путем использования
распределенных вычислений и традиционных языков программирования.
Mathcad достаточно удобно использовать для обучения, вычислений и
инженерных расчетов.
Линейные графики зависимости пройденного пути робота от времени,
построенные с помощью программы Mathcad, показаны на рисунке 41.
Рисунок 41 – Графики зависимости пройденного пути робота от
времени и их функции в программе Mathcad
46
Для разворота мобильного робота вправо или влево на 90 градусов
необходимо заставить вращаться его ведущие колеса в противоположных
направлениях, так что бы робот повернулся, описав при этом окружность,
относительно точки О (рисунок 42).
При этом, исходное положение колес можно обозначить по оси X, а
после разворота по оси Y.
Рисунок 42 – Разворот осей ведущих колес робота вправо на 90
градусов
При развороте на 90 градусов робот должен проехать путь,
определенно равный одной четвертой длине круга, образованного осью
ведущих колес.
Согласно разработанной 3Д модели робота этот радиус составит 90 мм.
Если роботу необходимо полностью развернуться (360 градусов) и
поехать в обратном направлении, то при скорости двигателя 230 об/мин,
время движения составит 0.6 сек.
Определение времени движения необходимо при реализации
программного управления роботом, так как сигналы на двигатели робота
должны подаваться с точным временным интервалом.
47
3.2 Программное управление мобильным роботом
3.2.1 Реализация программного кода в среде Arduino
Сформируем программное управление мобильным роботом с помощью
языка C++. Программный код будет формироваться для платы Arduino [37].
Любая программа в среде Arduino состоит из отдельных блоков.
Начало блока кода в C/C++ обозначается левой фигурной скобкой {, его
конец - правой фигурной скобкой }.
Блоки бывают разных видов и какой из них, когда будет исполняться,
зависит от внешних условий.
При запуске новой программы в приложении Arduino появляются 2
блока: voidsetup ( ), voidloop ( ) (рисунок 43).
Такие блоки называют определением функции. Функция - это блок
кода с заданным именем. Код программы в среде Arduino так же называют
Скетчем [40].
Рисунок 43 – Блоки voidsetup( ), voidloop( ) при первом запуске
программного приложения на Arduino
В данном случае присутствуют две функции с именами setup и loop. Их
присутствие обязательно в любой программе на C++ для Arduino. Они могут
48
ничего и не делать, как в нашем случае, но должны быть написаны. Иначе на
стадии компиляции будет ошибка.
Функция setup( ) вызывается, когда стартует скетч. Используется для
инициализации переменных, определения режимов работы выводов, запуска
используемых библиотек и т.д.
Функция setup запускает только один раз, после каждой подачи
питания или сброса платы Arduino.
Функция loop( ) позволяет описывать действия программного кода, и
крутится в цикле, позволяя программе совершать вычисления и реагировать
на них. Используется для активного управления платой Arduino.
При составлении скетча будем использовать тип данных
int (от англ. integer - целое число) - один из наиболее часто используемых
типов данных для хранения чисел. Int занимает 2 байта памяти, и может
хранить числа от -32 768 до 32 767.
Arduino компилятор сам заботиться о размещение в памяти и
представление отрицательных чисел, поэтому арифметические действия над
целыми числами производятся как обычно.
Синтаксис при записи данных int выглядит следующим образом:
intvar = val;
где var - имя переменной;
val – значение, присваиваемое переменной.
Функция pinMode.
Вызов осуществляется следующим образом:
pinMode (порт, режим);
Конфигурирует указанный порт на ввод или вывод сигнала.
Порт – номер порта, режим которого Вы желает установить (значение
целого типа от 0 до 13). Режим – либо INPUT (ввод) либо OUTPUT (вывод).
Пример: pinMode(13, OUTPUT); //13й вывод будет выходом
pinMode(12, INPUT); //а 12й – входом
49
Примечание: Аналоговые входы могут использоваться как цифровые
входы/выходы, при обращении к ним по номерам с 14 (аналоговый вход 0) по
19 (аналоговый вход 5).
Функция digitalWrite.
Вызов осуществляется следующим образом:
digitalWrite(порт, значение);
Устанавливает высокий (HIGH) или низкий (LOW)
уровень напряжения на указанном порте.
Пример:
digitalWrite(13, HIGH); // выставляем 13й вывод в «высокое» состояние
digitalWrite(12,LOW); // выставляем 12й вывод в «низкое» состояние
digitalRead
Вызов осуществляется следующим образом:
value = digitalRead (порт);
Считывает значение на указанном порту.
Возвращает текущее значение на порту (HIGH или LOW) типа int
Пример:
intval;
val = digitalRead(12); // опрашиваем 12й вывод.
Примечание:
Если к считываемому порту ничего не подключено, то функция
digitalRead ( ) может беспорядочно возвращать значения HIGH или LOW.
Работа со временем с помощью функции delay.
Вызов осуществляется следующим образом: delay(время_мс);
Приостанавливает программу на заданное число миллисекунд.
Время мс - время задержки программы в миллисекундах.
Пример:
delay(1000); //пауза 1 секунда delayMicroseconds
Вызов осуществляется следующим образом:
delayMicroseconds(время_мкс);
50
Приостанавливает программу на заданное число микросекунд.
Время_мкс – время задержки программы в микросекундах.
Пример: delayMicroseconds(500); //пауза 500 микросекунд
Последовательная передача данных.
Arduino имеет встроенный контроллер для последовательной передачи
данных, который может использоваться как для связи между Arduino
устройствами, так и для связи с компьютером.
На компьютере соответствующее соединение представлено USBCOM-
портом. Связь происходит по цифровым портам с помощью логических 0 и 1.
С цифровых портов 2,3,4 и 5 Arduino логические 0 и 1поступают на
соответствующие входы драйвера двигателя IN1, IN2, IN3, IN4 (рисунок 44).
Рисунок 44 - Подключение портов Arduino и входов драйвера двигателей
В соответствии с логическим уровнем сигнала драйвера двигателей
подает напряжение на двигатели согласно логики, описанной в таблице 4.
51
В таблице в соответствии с уровнями IN1, IN2, IN3, IN4 реализуется
определенное движение робота: “Стоим на месте”, “Разворот на право”,
“Движение вперед”, “Разворот”, “Налево” или “Движение назад”.
Таблица 4
Логика подаваемых сигналов на драйвер двигателей
IN1
IN2
IN3
IN4
Движение
робота
0
0
0
0
Стоим на месте
1
0
1
0
Разворот на
право
0
1
1
0
Движение
вперед
0
1
0
1
Разворот
налево
1
0
0
1
Движение назад
Выбор необходимой комбинации логических сигналов (таблица 4),
позволяет сформировать программный код движения мобильного робота.
3.2.2 Разработка скетча для программного управления мобильным
роботом
Для организации движения робота необходимо записать команду,
дающую возможность его ориентации в пространстве.
Программа движения робота должна задавать следующие процессы
движения:
- Поворот по часовой стрелке (разворот вправо);
- Движение вперед;
- Поворот против часовой стрелки (разворот влево).
- Движение назад;
Алгоритм программы, реализующий основные команды показан на
рисунке 45.
Алгоритм записан в бесконечно-повторяющемся цикле.

Смотрите также:

Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран
Work-life balance подход в управлении рабочим временем молодых сотрудников (на примере ООО «МГТ-сервис»)
Актуализация контента, отражающего концепцию «диалога культур», при освоении английского языка взрослыми обучающимися
Актуализация приемов инсценирования и драматизации в рамках интерактивной модели обучения английскому языку в старших классах
Актуальные подходы в построении внутреннего pr строительной компании (на примере ООО "Ренессанспроект")
Анализ деловой активности и экономической эффективности деятельности организации (на примере АО «СГ-Транс»)
Анализ деловой активности организации как инструмент повышения эффективности ее деятельности (на примере Косинского районного потребительского общества)