Реферат по теме выпускной работы
Содержание
- Введение
- 1. Проектирование и разработка шагохода
- 2. Оборудованием и конструкция робота
- 3. Реализация и отладка начального положения
- 4. Создание алгоритмов движения
- 4.1 Алгоритм движения вперед
- 4.2 Алгоритм движения назад
- 4.3 Алгоритмы вращение по и против направления часовой стрелки
- Выводы
- Планы на будущее
- Список источников
Введение
Роботы – часть стремительно надвигающегося будущего высоких технологий. В настоящее время на планете Земля в сфере робототехники революции происходят чуть ли не каждую неделю. Роботы спасают людей, работают в экстремальных условиях, заменяют живое общение, исследуют планеты Солнечной системы и многое другое. От слуг до наставников, роботы развиваются чрезвычайно быстрыми темпами. И поэтому каждый человек хоть частично заинтересованный этой темой, с искрой в глазах и желанием созидать, воплощать в реальность былые мечты писателей фантастов, просто обязан прикоснутся, стать частью этого стремительного шествия технологий.
Мы с моим напарником не стали исключением. Эта ситуация мотивировала нас создать своего робота-шагохода, который хотя бы частично поможет воплотить наши стремления, и проявить наши способности.
1. Проектирование и разработка шагохода
Проектирование и разработку шагохода мы разделили на две части физическая реализация и программная, в свою очередь мне досталась программная
Проектирование и создание программы для шагохода включает в себя:
- Оценка и ознакомление с оборудованием и конструкцией робота.
- Реализация и отладка начального положения.
- Создание алгоритмов движения.
- Адаптация и отладка алгоритмов движения.
Программирование робота можно назвать окончательным процессом его создания.
2. Оборудованием и конструкция робота
Изначальный выбор конструкции робота пал на шагающего робота квадропода с тремя степенями свободы для каждой ноги, и весь начальный подбор оборудования обусловлен именно этим выбором. С выбором оборудования можно ознакомится по этой ссылке.
Платформой для реализации робота была выбрана Arduino. Простота реализации программ на С-подобном языка привлекла начинавшего программиста робототехника. Компактная плата Arduino Nano v3.0 вполне подходила для поставленных задач, и наличие 12 дискретных входов подходило для выбранного количества сервоприводов.
Изначальный выбор конструкции повлек множество проблем. Реализация алгоритмов для такого робота требовала высокой точности кинематических расчетов, правильного распределения масс и точной отработки углов сервопривода. Но наше оборудование не позволяло досконально отработать такие алгоритмы, что повлекло к неправильной реализации распределения масс, проседание сервоприводов при движении.
Решением данных проблем стало изменение в конструкции робота. Превращение квадропода в гексапода, добавило две дополнительных точки опоры что предало стабильность системе робота и уменьшило нагрузку на сервоприводы. К тому же по задумке это должно было расширить функционал возможностей реализации различных алгоритмов движений, взаимодействия с разными объектами, и дало свободу для выполнения многих других возможностей.
3. Реализация и отладка начального положения
Для стабильной и точной отработки алгоритмов немаловажной задачей является реализация начального положения с возможностью последующей отладки и корректировки алгоритмов управления на его основе.
Начальное положение робота реализовывалось путем выставления всех сервоприводов в положение 90°. Выставление начального положения производилось первично механическим путем (сборкой робота с его учетом).
Все реализация алгоритмов движения будет основана с учетом схемы направления движения сервоприводов (от 0° до 180°) Рисунок 1.
В программе начальное положения и последующих алгоритмов будут присутствовать сокращения и обозначения, приведённые ниже.
- LF – (left forward) – левая передняя(нога).
- RF – (right forward) – правая передняя(нога).
- LM – (left middle) – левая средняя(нога).
- RM – (right middle) – правая средняя(нога).
- LB – (left back) – левая задняя(нога).
- RB – (right back) – правая задняя(нога)
Из-за 12 дискретных входов/выводов и 16 сервоприводов все алгоритмы движения упрощается, путем спаренноия движения ног LF и LB, RF и RB. Такое упрощение ограничит вариации алгоритмов движений.
Обозначения по типу s1LF, s2LF, s3LF – с приставкой s и номером, обозначают номер серводвигателя согласно схеме, Рис. 1.
Движение осуществляется от заданного начального положение приводов, в градусной мере, которая задается величиной s1LFinV (с указанием на inV – initial valueц (начальное положение)).
Программа начального положения
Для работы с сервоприводами в среде Arduino есть специальная библиотека < Servo.h > , она позволяет задавать положение сервопривода значением угла. Для управления скоростью отработки углов, для последующих алгоритмов управления я воспользовался пользовательской библиотекой < VarSpeedServo.h > . Первым шагом при создании программы производится подключение этой библиотеки. (Все фразы после //
считаются комментариями и не влияют на отработку программы).
#include < VarSpeedServo.h > //подключаем библиотеку для работы с сервоприводом
Далее производится объявление переменных типа VarSpeedServo что являет собой присваиванием значения, подаваемого на сервопривод (которое обрабатывается библиотекой VarSpeedServo.h).
Следующим шагом создаются переменные начальных значений для каждого сервопривода (сигналы дублируются для некоторых сервопривод с учетом спаривания), и присваиваю им значение 90. С помощью изменения этих значений производится корректировка начального положения.
Вызывается функция setup (void setup ()) – это обязательная команда, вызывается единожды при включении или после перезапуска контроллера, позволяющая начать выполнение команд. Чаще всего это всевозможные процедуры инициализации чего-либо. Setup является однопроходным циклом.
void setup () //процедура setup
Процедура присваивания логического сигнала с дискретных входов/ выводов Arduino определенным сервоприводам, привязывая определенный выход к определенному сервоприводу.
Символы { и } используются для обозначения начала и конца циклов.
Вызывается функция loop (void loop()), которая представляет собой замкнутый бесконечный цикл.
С помощью функции write производится присваивание величин углов переменным, содержащим значение логического сигнала. Так как эти команды заданы в цикле loop робот будет бесконечно держать заданное положение.
Так реализуется программная наладка начального положения, которая позволит создать программы для выполнения различных движений.
4. Создание алгоритмов движения
После реализации начального положения можно приступать к написанию алгоритмов движения. Из-за использования Arduino Nano v3.0, и спаривания ног алгоритмы для движения будут представлены в четырех вариантах: движение вперед, назад, вращение вокруг своей оси по часовой и против часовой стрелки (что обеспечивает изменение направления движения).
Для разработки всех алгоритмов использовалась условная схема направления вращения углов сервоприводов, Рисунок 2.
4.1 Алгоритм движения вперед
Данный алгоритм осуществляется путем последовательного перемещения двух групп ног: первая группа (левая передняя, правая средняя, левая задняя), вторая группа (правая передняя, левая средняя, правая задняя).
Передвижение осуществляется таким образом:
- Ноги первой группы поднимаются вверхи и смещаются на 13° вперед, в то время как ноги второй группы смещаются на 13° назад, перемещая корпус робота вперёд. Так из начального положения мы приходим в первое положение шага. Поворот/смешение каждой ноги осуществляется при помощи сервоприводов s1. Подъем каждой ноги осуществляется при помощи сервоприводов s2 и s3, смешением их на 45°, так чтобы нога подгибалась, прижимаясь к корпусу при подъёме.
- Ноги второй группы поднимаются вверх и смещаются на 26° вперед, в то время как ноги первой группы смещаются на 26° назад, перемещая корпус робота вперёд.
- Ноги первой группы поднимаются вверх и смещаются на 26° вперед, в то время как ноги второй группы смещаются на 26° назад, перемещая корпус робота вперёд.
Так последовательным чередованием пункта 2 и 3 осуществляется полный шаг вперед. Повторением полного шага осуществляется непрерывное движение вперед.
Данный алгоритм реализует прямую задачу кинематики, получение положения ног по заданным углам. Потому для использования в программе, алгоритм был адаптирован под особенности программирования.
В программе движение 1 реализовано MOVE 1, MOVE 2, MOVE 3 и MOVE 4. MOVE 1 и MOVE 2 выполняется единожды при запуске движения.
В самой программе я разбил движение 2 и 3 на три части: подъем ног, перемещение ног, опускание ног. Они реализованы MOVE 3 – MOVE 8.
Данный алгоритм очень простой и надежный, так как в любой момент времени робот имеет три точки опоры, которые обеспечивают его устойчивость.
Программа движения вперед
Здесь представлен полный текст программы движения вперед, основанный на программе начального положения. Пояснения будут приводится к новым элементам программы.
Начальное значение углов были подкорректированы в ходе испытаний данного алгоритма движения.
Ниже приведены величины значений углов, на которые происходит смешения сервоприводов с учётом направления изначального движения, заданного положительной или отрицательной величиной угла. Такой способ задачи смешения углов позволяет менять направление положительного вращения сервоприводов, не изменяя сам алгоритм движения.
DLLV – присваивание значение величины задержки, выделенного времени за которое должно осуществится движение. Задается в миллисекундах.
SPEED – присваивание величины скорости движение сервоприводов. Чем выше величина, тем больше скорость вращения. Стандартная скорость 30.
Можно заметить ниже, что при использовании функции write задается не только величина угла, но и скорость поворота.
Движение вперед будет осуществлятся бесконечно, так как основная часть движения заданна в бесконечном цикле функции loop.
4.2 Алгоритм движения назад
Алгоритм движения назад осуществляется подобно алгоритму движения вперед перемещая те же две группы ног, но с обратным направлением смещения: первая группа (левая передняя, правая средняя, левая задняя), вторая группа (правая передняя, левая средняя, правая задняя).
Передвижение осуществляется таким образом:
- Ноги первой группы поднимаются вверх и смещаются на 13° назад в то время как ноги второй группы смещаются на 13° вперед, перемещая корпус робота в обратном направлении.
- Ноги второй группы поднимаются вверх и смещаются на 26° назад, ноги первой группы смещаются на 26° вперед, перемещая корпус робота назад.
- Ноги первой группы поднимаются вверх и смещаются на 26° назад, ноги второй группы смещаются на 26° в перед, перемещая корпус робота назад.
По принципу движения вперед, последовательное чередование пункта 2 и 3 осуществляется полный шаг назад. Повторением полного шага осуществляется непрерывное движение назад.
4.3 Алгоритмы вращение по и против направления часовой стрелки
Для реализации такого алгоритма условно нужно обозначить две группы ног: левая (левая передняя, левая задняя), правая (правая передняя, правая задняя). Правая средняя и левая средняя ноги остаются независимыми.
Алгоритм движения примет такой вид:
- Ноги левой группы поднимаются вверх и смещаются на 13° вперед, правая средняя нога поднимаются и смещается на 13° назад, ноги правой группы смещаются на 13° в перед, левая средняя нога поднимаются и смещается на 13° назад.
- Ноги правой группы поднимаются вверх и смещаются на 26° вперед, левая средняя нога поднимаются и смещается на 26° назад, ноги левой группы смещаются на 26° вперед, правая средняя нога поднимаются и смещается на 26° назад.
- Ноги левой группы поднимаются вверх и смещаются на 26° вперед, правая средняя нога поднимаются и смещается на 26° назад, ноги правой группы смещаются на 26° вперед, левая средняя нога поднимаются и смещается на 26° назад.
Последовательное использование пункта 2 и 3 реализует полный поворот робота по часовой, что программно реализуется прохождением одного цикла – 52°. Повторением полного поворота осуществляется непрерывное вращение по часовой.
Алгоритм движения против часовой реализуется по такому же принципу.
Данные алгоритмы хоть и можно назвать простыми и в какой-то мере примитивными, но надежность и четкость их отработки безусловна. К тому же, данные алгоритмы – это лишь первый этап в реализации управления нашим шагоходом. Они послужат отличным базисом для создания серьезных алгоритмов, которые станут доступны с приобретением более функциональной платы Arduino MEGA2560 Pro Mini.
Выводы
Наш робот гексапод пока еще на начальном этапе разработки. Хотя выбранная нами плата Arduino Nano v3.0 отвечает поставленным задачам, мы считаем что для исключения операции спаривания ног будет установлена плата Arduino MEGA2560 Pro Mini , из-за наличия 54 дискретных входов/выводов.
Робот может быть использован, в настоящее время, как учебное пособие для студентов, занимавшихся робототехникой.
Планы на будущее
В наших планах реализация удаленного управления через Bluetooth со смартфона, что подразумевает не только написания программы алгоритмов движений и связи со смартфоном написанную на Arduino, но и написание программы на Android. Так же в наши планы входит установка видео камеры на робота, которая будет транслировать изображение местности перед роботом, передавая сигнал по WI-FI. Потоковое видео транслируется на смартфон, отображаясь в отдельной части экрана программы управления.
На момент написания данного реферата магистерская работа еще не завершена. Ориентировочная дата завершения магистерской работы: июнь 2017 года. Полный текст работы и материалы по теме могут быть получены у автора или его руководителя после указанной даты.
Список источников
- Гаревская Н.В., Полянский В.В., Сабадырь А.М., Семцов А.С. Электронный журнал «Труды МАИ ». / Разработка конструкции и алгоритмов управления движением шагающего аппарата для технического обслуживания авиационных комплексов. Выпуск № 62, 2012. – 12с. http://trudymai.ru/....
- Илья Чех // Роботы-пауки: кинематика. http://weas-robotics.ru/robotyi-pauki...
- Джереми Блум // Изучаем Arduino: инструменты и методы технического волшебства. Пер. с англ. — СПб.: БХВ-Петербург, 2015. – 336 с. 5-33.
- Петин В.А. / Проекты с использованием контроллера Arduino. – 2-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2015. – 448 с.
- Омельченко Е.Я., Танич В.О., Маклаков А.С., Карякина Е.А. Электротехнические системы и комплексы // Краткий обзор и перспективы применения микропроцессорной платформы Arduino. Магнитогорский государственный технический университет им. Г.И. Носова (Магнитогорск), 2013 г. – 366 с. 28-33.
- C. Menon, Y. Li, D. Sameoto, C. Martens. Robotics and Autonomous Systems // "Biologically based distributed control and local reflexes improve rough terrain locomotion in a hexapod robot". Volume 18, Issues 1-2, July 1996, Pages 59-64.
- Пономаренко В.И., Караваев А.С. Современные проблемы науки и образования // Использование платформы Arduino в измерениях и физическом эксперименте. – 2014. – № 3, – с. 77-90.