Робот жук на ардуино своими руками
Arduino Wink Robot – это инновационный робот-жук, который обучает детей азам программирования в процессе игры. Робот не имеет ограничений в функциях и правилах использования. Каждое его движение напрямую зависит от кодов, созданных ребенком!
Arduino Ringo Robot – это инновационный робот для обучения азам языка программирования в процессе игры. Он не только молниеносно реагирует на команды, но и взаимодействует с другими устройствами такого типа.
Любители роботизированной техники по достоинству оценят новый конструктор СКАРТ-ЛАБ, который является уникальным в своем роде. Если привычные роботы чаще всего имитируют собой автомобили, а также другие подвижные конструкции, то этот конструктор абсолютно уникален. С его помощью вы сможете почувствовать себя настоящим капитаном подводного судна, ведь он имитирует множество штатных ситуаций, которые по-настоящему могут произойти на борту.
Конструктор СКАРТ-3 можно по праву назвать самым полным в линейке от отечественного производителя РоботоЛАБ. Модель выгодно отличается от западных аналогов широкой комплектацией различных элементов, которые могут без особого труда дать вам почву для совершенствования собственных технических навыков, а также для проявления творческих амбиций. Потрясающая модель по доступной цене точно придется по вкусу каждого любителя роботизированной техники.
Конструктор СКАРТ-2 является новым дополнением к предшествующей части игрового набора от компании РоботоЛАБ. Компания отличилась оригинальностью, заметно расширив функционал предыдущей части посредством данного набора, который включает в себя несколько новых электронных компонентов. Хотите совершенствовать собственные навыки в робототехнике? Тогда данный конструктор точно придется вам по вкусу, надолго увлекая своей функциональностью и возможностью проявлять творческие навыки вкупе с инженерными способностями!
Компания РоботоЛАБ представила миру собственный конструктор образовательного назначения под названием СКАРТ-1, который уже успел заработать огромное количество положительных отзывов, а также популярность среди людей, заинтересованных в сфере создания подобных устройств. Набор не поставляется в готовом виде, поэтому пользователям придется проявить не только свои инженерные, но и творческие способности для того, чтобы изготовить своего первого и функционального робота, наделенного некоторым перечнем интерактивных характеристик.
Makeblock STARTER ROBOT KIT IR является лучшим выбором для пользователей, которые заинтересованы в сфере создания механических конструкций, а также для тех, кто желает применить технические знания на практике. Именно поэтому набор зачастую используется в качестве обучающего материала на базе школ и университетов.
Makeblock Ultimate 2.0 является уникальным в своем роде конструктором, отзывы на который впечатляют, набор обладает массой преимуществ перед другими типами аналогов развлекательно-обучающего характера. Это настоящий прорыв в сфере роботостроения, ведь именно он может погрузить ребенка в сферу изучения столь сложных технологий, а также дать почву для размышлений более опытным в данной сфере людям. Полная свобода действий без ограничений для любого уровня подготовки!
Футбол – это самая популярная спортивная дисциплина в мире, которая десятками лет завоевывала сердца всех неравнодушных людей! Прогресс не стоит на месте, поэтому теперь в футбол могут играть даже обычные роботы!
Все мы, так или иначе, имели дело с разведением разнообразных растений. Кто-то самостоятельно работает в городе, другие попросту выращивают домашние цветы в горшках. Но что, если вы получите возможность заниматься садоводством дома? Электронный конструктор СКАРТ УМНЫЙ ДОМ МИНИ-ТЕПЛИЦА – это набор, который предлагает пользователю принять участие в создании домашней мини-теплицы, обладающей огромным набором современных функций.
Жизнь занятых людей напрямую зависит от времени, и без часов нам было бы очень трудно планировать и распределять собственный рабочий день, назначать встречи и успевать сделать различного рода дела. Но конструктор под названием СКАРТ ЧАСЫ CLOCK MAKER 2 совершенно переворачивает представление о том, каким должен быть данный инструмент, предлагая огромные просторы для проявления собственных творческих способностей!
Сфера конструкторов развивается с каждым днем, поэтому на современном рынке можно встретить массу уникальных моделей, которые поражают своей продуманностью и изобилием функциональных характеристик. Пробный УМК СКАРТ ПРОЕКТНЫЙ – это одна из самых заметных на сегодняшних день моделей, которая придется по вкусу не только детям, но и взрослым людям, решившим попробовать собственные силы в сфере инженерной проектировки.
Конструктор СКАРТ АРМЕЙСКИЙ является специальным предложением от компании РоботоЛАБ ко дню защитника отечества. Набор является уникальным в своем роде, предлагая юному технику проявить собственную фантазию в сборке военных машин, а также освоить искусство управлять ими после окончания работ.
Робот ардуино – это не простая игрушка, а настоящий образовательный материал, который способен превратить процесс обучения в увлекательную игру. Данные устройства подходят людям всех возрастов, поскольку играть с такой моделью очень интересно и весело! Их широкий выбор предлагает огромный спектр возможностей, ведь каждый робот наделен уникальными техническими характеристиками и интерактивными навыками взаимодействия с окружающим миром.
Отзывы об использовании устройств
Робот ардуино – это наглядный пример того, как процесс обучения может превратиться в захватывающую игру. Моментальное применение теоретических знаний на практике обеспечивает качественное усвоение материала ребенком, а также пробуждает жажду к более глубокому изучению сфер программирования, физики и математики. Готовый экземпляр никогда не надоест, поскольку его можно по-разному настраивать, переделывать и дополнять деталями из альтернативных наборов!
Arduino робот не зависит от инструкций и предустановленных схем, поскольку вы в любой момент сможете приступить к разработке уникального дрона, который не имеет аналогов во всем мире! Проявите свое воображение в полной мере! Данная характеристика говорит о том, что такая игрушка не только развивает мышление ребенка, но также помогает ему улучшить свои творческие способности, не ограничивая воображение при создании разнообразных схем. А поделиться своими разработками можно на специальных форумах в Интернете!
Технические характеристики роботов на ардуино
Управление конструкциями осуществляется со смартфона, либо со специального пульта ДУ. Достаточно синхронизировать устройства между собой посредством Bluetooth или Wi-Fi, после чего можно незамедлительно приступить к игре. Питание же осуществляется от классических батареек или аккумуляторов. Последние нередко входят в комплект с основным набором. Экономный расход заряда батареи обеспечивает возможность проведения длительных игровых сессий, что по достоинству оценит каждый ребенок!
Arduino робот обладает массой функциональных особенностей, которые выгодно выделяют конструкторы среди аналогов:
- Доступная каждому среда программирования, которая позволяет максимально быстро разобраться в азах написания кодов. Получив необходимый уровень подготовки, пользователь сможет самостоятельно заняться изучением более сложных компьютерных языков!
- Высокое качество контроллеров – это гарантия длительного срока службы каждой модели роботов, которые вы покупаете. Изобилие плат предусмотрено для удовлетворения любых технических решений, вне зависимости от потенциальной сложности технической идеи. Купить ардуино робота – значит обеспечить себя качественным материалом для любых работ!
- Наличие дополнительных электронных механизмов заметно расширяет функционал каждого робота, благодаря чему они выполняют большее количество задач, и игра с ними становится гораздо интереснее. Дополнительные элементы так же изготовлены в соответствии с современными стандартами, отвечая всем параметрам качества.
Кому можно купить такую модель?
Купить ардуино роботов можно не только в подарок маленькому ребенку, но и взрослому человеку, который увлечен сферой современной робототехники. Несколько уровней сложности, уникальная архитектура, изобилие интерактивных возможностей с окружающей средой и пользователей – это все лишь малая часть преимуществ этого конструктора, который стал популярен по всему миру. Каждого покупателя порадует доступная цена, полностью оправдывающая себя.
Эти компоненты вы можете приобрести либо все вместе Двуногий робот Gekko "Ходок" (конструктор без электроники), либо по отдельности в этом разделе сайта. При покупке всего механического комплекта робота вы так же получите:
Электронная часть робота, реализованная из следующих компонентов:
· Аккумулятор AA емкость 2500mA/H(китайские взяты в ларьке) - 4 шт
Как видите, все кроме аккумуляторов (которые вполне можно заменить любыми батарейками типа АА), можно приобрести в разделах сайта РОБОТОТЕХНИКА на страницах, которого, вы читаете данную статью, и который, непосредственно обладает правом на её размещение. Так же вы можете использовать любые другие компоненты, которые на ваш взгляд, лучше подходят для целей реализации данного проекта, но в этом случае возможные некоторые расхождения между моим описанием и реальной картиной вашего творческого процесса;)
В рамках этой статьи вы научитесь собирать и приводить данного робота в движение. При этом в него будет заложен следующий функционал:
1) Автоматический режим – при этом робот будет самостоятельно передвигаться, шагая прямо и при появлении перед собой препятствия (в виде любого непрозрачного для инфракрасного излучения предмета) будет разворачиваться вправо или влево с целью обойти препятствие. В случае если препятствие не удается обойти (например, робот застрял в углу) будет включаться режим передвижения задом до момента выхода за границу зоны взаимодействия с препятствием.
2) Функционально-исполнительный режим – при этом робот будет устанавливать положение сервоприводов в соответствии с положением управляющих элементов на форме приложения для Windows. В этом режиме будет осуществляться создание всех моделей поведения, которые будут доступны в роботе.
так как этой функции просто нет, и вряд ли будет. Так же вам вряд ли удастся создать сколько-нибудь жизнеспособный линейный алгоритм для управления роботом, что-то вроде повернуть сервопривод 1 на косинус угла сервопривода 2 и тому подобных решений. И этому виной ряд причин:
1) Все сервоприводы даже дорогие и весьма надежные имеют разброс рабочих характеристик. Т.е. один и тот же сигнал для каждого сервопривода установит вал привода не в строго одинаковое положение.
2) Все сервоприводы имеют нелинейности по всей шкале своего возможного запаса хода. Т.е. например изменение длительности импульса с 1800 до 1900 микросекунд может привести к перемещению вала на большей или меньший угол, чем например изменение длительности с 1900 до 2000 микросекунд, причем положение этих нелинейностей может существенно отличаться для любых двух сервоприводов, даже из одной партии.
3) Даже если не брать в расчет мелкие нелинейности по различным участкам шкалы имеются и существенные общие нелинейности характерные для всех сервоприводов одного типа. Может оказаться так, что во всех экземплярах шкала чуть более растянута в начале и чуть более сжата в конце с плавным переходом от начала до конца. С одной стороны может показаться, что это искажение не столь существенно т.к. оно характерно для всех сервоприводов в равной степени. Но если посмотреть на практическую сторону вопроса, то становится ясно, что сервоприводы на разных ногах стоят в обратной положении т.е, если робот например наклоняется вперед то один из сервоприводов делает положительное приращение, а второй отрицательное и в этом случае наличие даже обще характерного для всех приводов искажения очень сильно усложняет процесс создания линейного алгоритма управления.
4) Стандартный сервопривод не имеет полностью свободного хода на 360 градусов, а он способен вращаться в определенном секторе, обычно общая его протяженность составляет от 200-270 градусов. При сборке робота вы установите все сервоприводы в совершенно случайные положения, т.к. вам будет необходимо в первую очередь обеспечить наличие возможного хода в конструктивных пределах. Т.е вы поставите сервоприводы так что бы робот имел как можно более широкие пределы поворота частей при этом, постаравшись сделать эти пределы схожими на обеих конечностях. После того как вы это сделаете ваше и без того не простая линейная модель по мимо всех сотен поправочных коэффициентов на нелинейности сервоприводов обзаведется еще и массивом исходных положений сервоприводов и позициями максимальных возможных передвижений.
Этот не малый список проблем далеко не полный, из тех, что вам придется преодолеть в попытке написания своего линейного алгоритма управления роботом и при этом даже если у вас это получится (что у меня, например, очень плохо получилось), ваше устройство станет практически неповторяемым. Если вы захотите написать статью о робототехнике подобную этой или просто поделиться своими исходниками с другом, который решил собрать себе такое же устройство вы столкнетесь с тем, что вам опять придется собирать огромное количество уникальной информации для каждого сервопривода его проекта. А если же вы захотите выйти за рамки этого проекта и собрать, например робота не на 6 сервоприводах как этот, а например на 18 (например 6-ногий паук с ногами с 3 степенями свободы) или еще большим числом, то ваш проект может запросто разбиться о невероятные трудозатраты. Так же если вы захотите в какой-то день оптимизировать вашего робота или добавить новый функционал, либо просто немного изменить имеющийся, это станет очень непростой задачей. Таким образом, линейный алгоритм слабо применим для моделей с ходовой частью, реализованной на сервоприводах под управлением платформы Arduino и технически реализованный указанными выше средствами. Для того что бы реализовать линейный алгоритм управления роботом необходимы существенно более серьезные вычислительные мощности и более серьезные технические средства, а в конце этой статьи вы сможете найти их описание, но ведь мы хотели реализовать ходящего робота теми средствами, которые у нас есть… Как же быть? Тем более, я обещал, что будет и хорошая новость))
В этой статье я опишу, как управлять роботом использую дискретный алгоритм управления. В чем заключается суть этого алгоритма. Необходимо путем подачи на робота управляющих сигналов с компьютера установить его сервоприводы в положения соответствующие устойчивым промежуточным значениям планируемой модели поведения. Например, мы хотим, что бы робот сделал один шаг правой ногой, это действие можно совершить поочередно перейдя из одного дискретного состояния в другое при чем, для того что бы робот сохранял устойчивость во всех точках этого движения перемещения должны осуществляться между заведомо устойчивыми позициями. Далее я приведу примерный список позиций которые робот должен поочередно пройти что бы сделать один шаг правой ногой:
1) Наклонить опорные сервоприводы так, что бы робот перенес центр тяжести на левую ногу и правая нога немного оторвалась от земли
2) вернуть роботу относительно прямое положение при этом, не потеряв устойчивость левой ноги стопу правой ноги позиционировать параллельно земли
3) Поднять правую ногу вперед сложив её в колене, что бы сохранить положение стопы параллельным земли, левую ногу немного сложить в колене, при этом немного отклонив корпус назад для сохранения у корпуса положения параллельного земле
4) Наклонив опорные сервоприводы перенести центр тяжести равномерно на обе ноги.
В среде разработки Arduino имеется библиотека Servo созданная специально для управления сервоприводами. С помощью нее можно достаточно просто задать положение сервопривода. Причем положение можно задавать как в градусах, так и в микросекундах. С одной стороны может показаться, что управлять градусами проще, но это не совсем так по следующим причинам:
1) Управляя градусами мы можем задать положения сервоприводов только в пределах от 0 до 180 градусов, если мы передадим значение более 180 то будет отработано 180 и соответственно если передать меньше 0 то будет отработано 0. На практике же разница между положением которое серва отрабатывает при 0 и 180 далеко не всегда равна 180 градусам, а это может быть как 160 так и 200 градусов, т.е. точность совсем не какая. Так же стоит отметить что конструктивно сервопривод может довернуться дальше как в сторону 0 так и в сторону 180. Т.о. образом может возникнуть ситуация при которой вы установите сервопривод, механически проверите его возможность двигаться в пределах конструктивной свободы. Когда начнете на него подавать сигнал окажется, что при задании позиции с помощью с управления градусами вы не сможете переместить движок серво в крайнее конструктивное положение т.к. 0 или 180 будет находиться раньше чем, то положение, куда бы вы хотели переместить вал.
2) Для того что бы точно позиционировать вал привода в некоторых случаях разрешения в 1 градус может быть не достаточно, например если двигать системой с большой длиной рычага (как например бедренный сустав робота), в этих случаях перемещения в даже в 1 градус могут выглядеть достаточно резкими и рывковыми. При управлении длительностью импульса реальное разрешение более чем в 10 раз превосходит разрешения при управлении градусами.
3) Не каких тригонометрических расчетов в процедуре при движении робота осуществляться не будет и по этой причине какой-либо практической необходимости в применении градусов просто нет.
Из вышесказанного вы, наверно поняли уже поняли что в тех скетчах, которыми мы будем оперировать в рамках этой статьи управление сервоприводами будет осуществляться методом передачи длительности импульса в микросекундах. Теперь осталось только выяснить некоторые возможности конкретно тех сервоприводов, которыми вы располагаете, что бы система работала точно. Нам необходимо получить предельные значения длительностей импульса при которых конкретно ваши сервоприводы смогут перемещаться во всем возможном секторе и для этого необходимо выполнить следующую последовательность действий:
1) Нумеруем сервоприводы в нашем случае от 0 до 5 (т.е. их всего 6). До тех пор пока робот не будет запущен, и не будут получены все необходимые сведения, нанесенные на сервоприводы номера должны четко просматриваться. Нумеровать сервоприводы стоит карандашом или тонким маркером.
2) Необходимо залить на вашу отладочную плату исходник (их обычно в данной среде называют скетчами) в начале я указал DFRduino Nano, но может сгодиться любая плата, рассчитанная на программирование в среде разработки Arduino. В этой статье я не буду описывать, что такое Arduino и как с ней бороться т.к. я рассчитываю, что вы хоть немного уже в этом и сами разобрались. Скетч, который вы будете загружать на плату делает следующее действие: к плате необходимо подключить любой переменный резистор сопротивлением от 10 до 50 килоОм и один сервопривод, которым мы будем управлять с помощью резистора, при этом текущее значение длительности импульса будет возвращаться на монитор порта. В чем заключается смысл этого действия? Нам необходимо получить для каждого из ваших сервоприводов предельные величины длительностей импульса которые переводят сервопривод из одного крайнего положения в другое. Полученные величины для каждого сервопривода необходимо зафиксировать и выбрать максимальное и минимальное значение. Ниже приведу таблицу с примером:
В данной статье будет описан процесс создания робота, ездящего по линии. Эта задача является классической, идейно простая, она может решаться много раз, и каждый раз вы будете открывать для себя что-то новое. Решение этой задачи и реализация полученного решения позволяют приобрести необходимые начальные навыки для дальнейшего совершенствования в робототехнике.
Существует множество подходов для решения задачи следования по линии. Выбор одного из них зависит от конкретной конструкции робота, от количества сенсоров, их расположения относительно колёс и друг друга.
В нашем примере будет собран робот на лёгкой платформе с двумя колёсами и двумя датчиками линии, расположенными на днище робота перед колёсами.
В результате выглядеть он будет так:
Что понадобится
Для нашего примера понадобятся следующие детали:
Вообще говоря, лучше было бы использовать NiMH-аккумуляторы: они лучше отдают ток и значительно дольше держат напряжение, но для целей этого проекта одной батарейки на 9 В вполне хватило.
Собираем робота
Сначала соберём робота, установим всю механику и электронику.
Собираем платформу
Для начала прикрепим колёса к моторам.
Затем с помощью пластиковых П-образных креплений прикручиваем моторчики к платформе. Обратите внимание на взаимное расположение крепления и моторчики: в креплении есть небольшие углубления, так что если всё соединить правильно, то моторчики будут крепко держаться и никуда не выскочат.
Теперь крепим балансировочный шар.
Отлично! Платформа собрана. Если вам кажется, что колёсам отведено слишком мало места и они трутся о платформу, то скорее всего вам нужно посильнее надавить на колёса, чтобы они плотнее сели на вал мотора.
Крепим сенсоры
Закрепим их, как показано на фото:
Можно было бы выбрать и другое место. Это могло бы сделать контроль проще или сложнее, а самого робота более или менее эффективным. Оптимальное расположение — вопрос серии экспериментов. Для этого проекта просто был выбран такой способ крепления.
Крепим Arduino
Arduino закрепим с противоположной стороны двумя винтиками и гайками.
Опять же, можно выбрать и другое место. Например над колёсами, если приподнять Arduino на латунных стойках. Это изменило бы положение центра масс и повлияло бы на эффективность робота в лучшую или худшую сторону.
Крепим Motor Shield и соединительные провода
Установим Motor Shield на Arduino и подсоединим соединительные провода. Обратите внимание, чтобы соотвествовать программному коду из примера ниже, моторчики соединены с Motor Shield так: правый — к клеммам M1 с прямой полярностью (плюс к плюсу), а левый — к M2 с обратной (плюс к минусу).
Крепим Troyka Shield
Присоединяем сверху Troyka Shield и подключаем датчики к 8 и 9 цифровым контактам. В итоге получаем следующую конструкцию:
Программирование
Теперь напишем программу, которая заставит собранную конструкцию двигаться по нарисованной линии. В проекте мы будем использовать чёрную линию, напечатанную на белых листах бумаги.
Основная идея алгоритма
На прямой робот должен пропускать трек между сенсоров, то есть оба сенсора должны показывать единички.
При повороте траектории направо, правый сенсор наезжает на трек и начинает показывать логический ноль. При повороте налево, ноль показывает левый сенсор.
Таким образом получаем простую систему с тремя состояниями:
На вход системы поступает информация с сенсоров. Получаем следующую логику переходов:
Левый | Правый | Целевое состояние |
---|---|---|
0 | 0 | STATE_FORWARD |
0 | 1 | STATE_RIGHT |
1 | 0 | STATE_LEFT |
1 | 1 | STATE_FORWARD |
Реализация на Arduino
Проблема инертности и её решение
Однако если выставить скорость моторов побольше, мы столкнёмся со следующей проблемой: наш робот будет вылетать с трека, не успевая отреагировать на поворот. Это связано с тем, что наши моторчики не умеют тормозить мгновенно.
В этом легко убедиться поставив следующий эксперимент: с заданной скоростью робот будет двигаться по поверхности, и в некоторый момент будет установлена нулевая скорость и измерен тормозной путь робота. Пусть робот разгоняется по монотонной поверхности и тормозится при фиксировании импровизированной стоп-линии.
Эксперимент проведём для разных скоростей. Код программы для эксперимента таков:
На той поверхности, на которой проводился эксперимент, были получены следующие результаты:
Таким образом, начиная с некоторого момента у нашего робота нет никакой возможности успеть среагировать и остаться на треке.
Что можно сделать?! После того, как сенсоры улавливают поворот, можно остановиться и вернуться назад на некоторое расстояние, зависящее от скорости перед остановкой. Однако мы можем отдать команду роботу ехать с какой-то скоростью, но не можем приказать ему проехать какое-то расстояние.
Для того, чтобы понять зависимость расстояния при заднем ходе от времени, был проведён ещё один замер:
На скорости 50, например, робот проделывал путь, зависящий от времени следующим образом:
Полученные две зависимости были линейно аппроксимированы, затем была выведена формула зависимости времени, которое надо двигаться назад, от скорости перед остановкой.
Обратим внимание на то, что у вас значения могут оказаться другими: из-за особенностей сборки либо из-за поверхности, поэтому в общем случае лучше провести все измерения самостоятельно.
Адаптивное поведение
Перед финальным экспериментом произведём ещё несколько поправок.
Во-первых, нам необязательно давать команду ехать назад перед каждым поворотом, как мы помним, на маленькой скорости робот прекрасно справляется и без этого. К тому же лучше ему двигаться не прямо назад, а немного поворачивая, всё-таки робот находится перед поворотом.
Во-вторых, нам стоит различать состояния робота: когда он движется по прямой, и ничто ему не мешает ускоряться; и когда робот входит в поворот. В первом случае действительно будем увеличивать скорость робота для более динамичного прохождения трека, во втором случае будем сбрасывать скорость до значения, достаточного для успешного прохождения поворота, и будем держать эту скорость ещё какое-то время.
В итоге наш код будет выглядит следующим образом:
Результат
Что дальше?
Представленный алгоритм оставляет множество возможностей для улучшения и оптимизации. Скорость поворота можно так же менять адаптивно. Можно добавить контроль заноса. Можно поиграть с расположением сенсоров и центром масс. В конце концов можно получить непобедимого на треке робота.
Нет ничего лучше, чем обставить оппонента на секунду-другую.
Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Noncommercial-Share Alike 4.0 International
Рассказываем о том как можно использовать Ардуино для создания самобалансирующего робота, который балансирует как Сигвей.
Как работает балансировка?
Сигвей от англ. Segway – двухколесное средство передвижения стоя, оснащенное электроприводом. Еще их называют гироскутерами или электрическими самокатами.
Вы когда-нибудь задумывались, как работает Сигвей? В этом уроке мы постараемся показать вам, как сделать робота Ардуино, который уравновешивает себя точно так же, как Segway.
Чтобы сбалансировать робота, двигатели должны противодействовать падению робота. Это действие требует обратной связи и корректирующих элементов.
Элемент обратной связи - гироскоп-акселерометр MPU6050, который обеспечивает как ускорение, так и вращение во всех трех осях (основы MP26050 I2C). Ардуино использует это, чтобы знать текущую ориентацию робота. Корректирующим элементом является комбинация двигателя и колеса.
В итоге должен получиться примерно такой друг:
Схема робота
Сначала подключите MPU6050 к Ардуино и проверьте соединение, используя коды в этом учебном руководстве по интерфейсу IMU. Если данные теперь отображаются на последовательном мониторе, вы молодец!
Внимание! Если вы планируете использовать напряжение питания более 12 В для модуля L298N, вам необходимо удалить перемычку чуть выше входа +12 В.
Создание робота
Корпус робота изготовлен в основном из акрилового пластика с двумя редукторными двигателями постоянного тока:
Основная печатная плата, состоящая из Arduino Nano и MPU6050:
Модуль драйвера двигателя L298N:
Мотор редуктора постоянного тока с колесом:
Самобалансирующийся робот по существу является перевернутым маятником. Он может быть лучше сбалансирован, если центр массы выше относительно колесных осей. Высший центр масс означает более высокий момент инерции массы, что соответствует более низкому угловому ускорению (более медленное падение). Вот почему мы положили батарейный блок на верх. Однако высота робота была выбрана исходя из наличия материалов ?
Завершенный вариант самостоятельно балансирующего робота можно посмотреть на рисунке выше. В верхней части находятся шесть Ni-Cd-батарей для питания печатной платы. В промежутках между моторами используется 9-вольтовая батарея для драйвера двигателя.
Теория
ПИД-регулятор уменьшает погрешность до наименьшего возможного значения, постоянно регулируя выход. В нашем самобалансирующем роботе Arduino вход (который является желаемым наклоном в градусах) устанавливается программным обеспечением. MPU6050 считывает текущий наклон робота и подает его на алгоритм PID, который выполняет вычисления для управления двигателем и удерживает робота в вертикальном положении.
PID требует, чтобы значения Kp, Ki и Kd были настроены на оптимальные значения. Инженеры используют программное обеспечение, такое как MATLAB, для автоматического вычисления этих значений. К сожалению, мы не можем использовать MATLAB в нашем случае, потому что это еще больше усложнит проект. Вместо этого мы будем настраивать значения PID. Вот как это сделать:
- Сделайте Kp, Ki и Kd равными нулю.
- Отрегулируйте Kp. Слишком маленький Kp заставит робота упасть, потому что исправления недостаточно. Слишком много Kp заставляет робота идти дико вперед и назад. Хороший Kp сделает так, что робот будет совсем немного отклоняться назад и вперед (или немного осциллирует).
- Как только Kp установлен, отрегулируйте Kd. Хорошее значение Kd уменьшит колебания, пока робот не станет почти устойчивым. Кроме того, правильное Kd будет удерживать робота, даже если его толькать.
- Наконец, установите Ki. При включении робот будет колебаться, даже если Kp и Kd установлены, но будет стабилизироваться во времени. Правильное значение Ki сократит время, необходимое для стабилизации робота.
Поведение робота можно посмотреть ниже на видео:
Код Ардуино самобалансирующего робота
Нам понадобилось четыре внешних библиотеки, для создания нашего робота. Библиотека PID упрощает вычисление значений P, I и D. Библиотека LMotorController используется для управления двумя двигателями с модулем L298N. Библиотека I2Cdev и библиотека MPU6050_6_Axis_MotionApps20 предназначены для чтения данных с MPU6050. Вы можете загрузить код, включая библиотеки в этом репозитории.
Значения Kp, Ki, Kd могут работать или не работать. Если они этого не делают, выполните шаги, описанные выше. Обратите внимание, что наклона в коде установлен на 173 градуса.
Вы можете изменить это значение, если хотите, но обратите внимание, что это угол наклона, которым должен поддерживаться роботом. Кроме того, если ваши двигатели слишком быстры, вы можете отрегулировать значения:
- motorSpeedFactorLeft
- motorSpeedFactorRight
Читайте также: