Arduino Neural Network Robot
Introduction: Arduino Neural Network Robot
This instructable is based on a 3 Part series I made for the Make YouTube Channel which shows you exactly how to prototype, design, assemble, and program, your own Arduino neural network robot. After watching the full series, you should have a better grasp on neural networks, PCB Design, and Arduinos in general. You don’t have to make this exact robot(of course you can if you want) but I want to help people understand the process and what it takes to make a robot from start to finish. All of the files are open source and are available for you to download and modify. Follow these steps to make your own Arduino Neural Network Robot.
Be sure to also Subscribe to my personal YouTube Channel, where I release all sorts of cool open source projects that you can make yourself, for free!
Step 1: Watch Part 1: Design and Prototype
If you’re going to be designing your own robot, you need to prototype and test some components before you begin to design a custom circuit board.This video will do just that. We will finish off with a completed custom PCB to send away to be ordered!
Step 2: Get the Parts and Tools.
Parts used for the prototyping:
Parts used for the Robot:
Step 3: Prototype and Develop.
If you’re making your own design, now is the time to make a simple prototype that will allow you to test the components you will be using later on. This will help you sort out any problems you may encounter in the future. Make a breadboard version of the robot, and add some firmware to test out the components.
Step 4: Create the Schematic.
With the prototype completed, you can use the exact same wiring to create your own schematic. This will be the map for when you start to work on your custom PCB. I personally use KiCad for my projects.
Step 5: Design the PCB Outline.
I like to design the PCB in cad software before I start working on it in KiCad. This way you can export the design as a DXF Files and import it into your KiCad project. Makes it way easier to create cool looking circuit boards.
Step 6: Start Placing Your Components and Routing Traces.
This is probably the most difficult part of the whole build, especially if you haven’t done it before. Place the components into small sub groups. This helps organize things prior to placing them on the board. Then take the sub groups and start placing in locations on the board. Its easiest to centralize the microcontroller, then look at where the lines have to go and place the components accordingly. Start routing traces. Take your time and just work away at it, moving things as necessary.
Step 7: Send Your Board Off to Be Manufactured.
Pick a PCB manufacturer to create the real custom PCB you just made! I use OSHPark and PCBWay depending on my needs.
If you want to just directly order the board I made you can purchase it here from OSHPark or here from PCBWay.
Step 8: Watch Part 2: Assembly and Programming
Now that you have ordered your PCB, check out part 2 of the video series. This part I will show you how to assemble the board, and give you some tips and tricks along the way. Check it out!
Step 9: Organize Your Components.
I like to separate the components into different types, surface mount discreet(resistors, capacitors), surface mount chips(integrated circuits), then lastly through hole components(this will be installed last). The resistors and caps will be installed first, then the ICs. Also its nice to start with the smallest(shortest) components first, so you don’t end up hitting things with the tweezers.
Step 10: Add Your Solder Paste.
You need to apply solder paste to each one of the pads on the board where a component is being installed.
Step 11: Start Adding Components!
Like I mentioned start with the shortest components and work up, starting with the resistors, caps, any discreet components. Then move onto the integrated circuits. We will install the through hole components later.
Step 12: Stick It in the Oven.
Time to cook it! In my case(with my cheap toaster over) I set the oven to the max setting 230C, turn it on, and wait for the solder to «reflow». After that happens, I wait a few seconds, then take it out of the oven and let it cool off. Its a very simple process.
Step 13: Fix the Components.
Some components may have shifted or not soldered properly. Slowly go over the board and visually inspect it for problems. Fixing them with your soldering iron. Fix any bridged pins on the IC components as well. The video covers various techniques.
Step 14: Solder the Through Hole Components.
Time to soldering on the remaining through-hole components. No particular order, but again doing the shortest components first is ideal.
Step 15: Add a Bootloader
At this point, since everything is on, its time to power up the device and add a bootloader. Use the Atmel ICE on the programming header. You will need to power the device separately, either with another USB connected, or the batter. Open Atmel Studio 7 and Follow the instructions in the video.
Step 16: Run Your Test Program.
We developed the program earlier to test the robots features. If your schematic has not changed at all you should be able to use the same test program. Try it out! It works!
Step 17: Watch Part 3: Neural Networks and Arduinos
In the third and final part of the series we talk about Neural Network and running them on an Arduino. I show you how the robot can be controlled with and without one. Its an interesting experiment. This video will cover some basics to Neural Networks and should hopefully help you understand a little bit more of what is happening.
Step 18: Program the Robot With the Neural Network Program.
Head to the GitHub to download the firmware for the robot. If you follow along in the video it should help you understand what the different sections of the code are doing. Program it, and train your neural network!
Step 19: Run Some Tests!
Now that you have gained a little more knowledge in neural networks, play with the program, setting, input, etc. and see how it affects it. Also see if you can come up with even better ways to train or control the robot. This definitely isn’t perfect, or the best way by a long shot.
Step 20: Have Fun With Your Little Neural Network Bot!
Step 21: Support These Projects!
If you think I have earned it, please consider subscribing to my YouTube Channel. I will be doing a lot more cool open source projects like this one in the future, and I would love for you to join along.
If you want to support me on the next level, and have some cash to spare. Please check out my Patreon. The more patrons I receive, the more complicated and intricate projects I can develop and share to the world. I want to make cool stuff, and make that cool stuff free and public for everyone else to make as well.
Be the First to Share
Did you make this project? Share it with us!
Recommendations
Metal Contest
Crayons Challenge
Teach With Tinkercad Contest
21 Comments
It reminds me Braitenberg Vehicles. Modern and upgraded version.
Reply 4 years ago
This looks like an excellent implementation! Regarding the neural network, however, it is not being trained what to do at non-extreme input levels, so the neural network will only try to converge at extreme levels. At subsequently exposed intermediate levels it will respond in a way depending on the initial, random weights setting, but more on the number of training iterations. As it is minimizing RMSE, it will sharpen decision levels depending on the number of iterations. So I think it would be interesting to train on a set including (sensible!) intermediate levels. But you could also add other inputs, like sound level, distance sensors, or whatever you can think of. Of course that will take a lot more training time, but it will make the robot look more intelligent. Like that it stops moving when being shouted at in the light, but not in the dark. Also, to make it more insect-like, it should move away from a (changing) shadow, like a hand trying to smash a fly, instead of being attracted by it. In fact, you could record these situations and define the desired output, to make it more realistic. Anyway, great work and good fun!
Even though I haven’t made the project yet, I am very impressed with how carefully you prepared this tutorial. The GIFs are helpful — you are illustrating non-static things. Keep up the great work!
i see myself in you dude, even OUR looks. -)
send me one and i will make it in YOUR HONOR, I LOVED IT TOTALY from A to Z
Искусственный интеллект на базе Arduino
В настоящее время в Российском сегменте интернета недостаточно освещено современное состояние дел с применением искусственного интеллекта (ИИ) в робототехнике. Желание исправить эту ситуацию побудило опубликовать материал связанный с технологиями разработки интеллектуальных систем управления. В работе рассматривается историческое развитие средств искусственного интеллекта (нечеткая логика (НЛ), генетические алгоритмы (ГА), нечеткие нейронные сети (ННС)) для проектирования системы автоматического управления (САУ). Сравнение методологий проектирования проводится на примере робота, основанного на платформе Arduino.
Введение
В настоящий момент разработка, развитие и реализация эффективных высоких наукоемких информационных технологий (ИТ) (создаваемых в различных областях науки и техники) неразрывно связаны с необходимостью разработки и повышения уровня интеллектуальности используемых процессов и систем управления, объективно учитывающие в законах управления контекстуально-зависимые физические эффекты, ограничения и информационные границы, реально существующие в конкретных моделях объекта управления (ОУ).
В теории и проектировании систем управления в настоящее время большое внимание уделяется выявлению роли и эффективному применению робастных интеллектуальных систем управления (ИСУ) в интенсивном развитии и качественном совершенствовании современных высоких ИТ интеллектуального управления сложными физическими ОУ.
Сложность описания физических систем, в свою очередь, приводит к необходимости аппроксимации моделей ОУ и применению приближенных решений, которые не гарантируют необходимые и достаточные условия достижения цели управления в непредвиденных ситуациях и информационного риска. Поэтому в теории и систем управления одним из эффективных подходов снижения риска принятия решения (от неполноты описания модели ОУ) является разработка структур робастных ИСУ [1].
Эволюция интеллектуальный систем управления
Задачи управления существенно нелинейными и глобально неустойчивыми ОУ исследовались при наличии различных типов стохастического возмущения на ОУ. С помощью разработанной системы стохастического моделирования, определялись предельные возможности классических САУ основанных на использовании исполнительного устройства САУ в виде традиционного ПИД-регулятора (см. Таблицу 1, позиция 1). В результате проведенного исследования был установлен следующий факт: классические САУ, основанные на ПИД-регуляторе с постоянными коэффициентами усиления, часто не справляются с задачей управления в случае глобально неустойчивых и существенно нелинейных ОУ, находящихся под воздействием негауссовского (например, Рэлеевского) стохастического шума, а также в условиях временных задержек в каналах измерения.
Этот факт объясняется следующими обстоятельствами. Классические САУ основаны на принципе глобальной отрицательной обратной связи и методе компенсации ошибки управления. Однако, в сложных ОУ (пример с Arduino-роботом ниже) недостаточно иметь результат оптимизации только по одному критерию качества управления, типа минимума ошибки управления. Поэтому на практике при проектировании ИСУ сложными ОУ возникает следующая проблема: как ввести в систему управления другие, дополнительные критерии качества управления?
Таблица 1. Эволюция ИСУ
К таким критериям относятся, например минимум производства энтропии в ОУ, и/или минимум производства энтропии в самой системе управления (учитывающие тепловые потери, потери полезной работы в объекте и системе управления), или другие более сложные, векторные критерии качества управления.
Примечание. Подобные и смежные вопросы построения физической теории управления рассматривались в работах А.А. Красовского, С.В. Емельянова, Ю.И. Самойленко, А.Г. Бутковского, Л.И. Розоноэра, Р. Поплавского, А.М. Цирлина А.П. Фрадкова и мн. др.
Разрешить этот вопрос с помощью процесса проектирования стандартного ПИД-регулятора с постоянными коэффициентами усиления практически невозможно. Ограниченные возможности по реализации сложных критериев качества управления в классических САУ, особенно в указанных выше случаях управления, послужили отправной точкой к развитию ИСУ, основанных на идеях близких к использованию стратегий управления, используемых человеком-экспертом в сложных ситуациях.
Для моделирования «человеко-машинных» стратегий управления на первом этапе стали использоваться так называемые «мягкие вычисления», в основе которых лежит теория нечетких множеств и нечеткого вывода. Так, например, представленная в таблице 1-1 структура преобразуется в экспертную систему управления Таблица 1-2 последовательным наращиванием составляющих блоков в классической структуре САУ (в данном случае введением блока нечеткого вывода) и является примером первого поколения ИСУ (рис.1).
Рис. 1. Система управления с нечетким регулятором
Таким образом, первое поколение ИСУ представляло собой нечеткие экспертные системы (ЭС). Основную роль в этих ЭС играло качество базы знаний (БЗ), которое определялось опытом и субъективными знаниями человека-эксперта. Однако, в случае управления глобально неустойчивыми и существенно нелинейными ОУ, находящимися под воздействием сложных стохастических шумов, даже опытному человеку-эксперту трудно подобрать оптимальную (с точки зрения качества управления) БЗ НР. Эта проблема — узкое место всех первых (и их последующих модификаций) ИСУ. Поэтому, использование ЭС в качестве инструментария извлечения знаний и формирования БЗ (как основы технологии проектирования ИСУ) не привело к ожидаемому существенному успеху (хотя существует много примеров промышленного внедрения) в силу сложности ОУ и субъективности информации, вносимой экспертом.
С точки зрения технологии проектирования основной проблемой внедрения ИСУ первого поколения являлась их слабая адаптивность к изменениям параметров ОУ (вызванных, например, старением структуры ОУ или резким изменением внешней среды), а также низкая робастность полученных законов управления. Для решения подобных проблем были разработаны ИСУ второго поколения, используя технологии мягких вычислений, объединяющие в единую цепочку ГА, ННС и нечеткий регулятор (НР). Это позволило исключить субъективное мнение эксперта на этапе формирования структуры и параметров БЗ НР. В свою очередь развитие ИСУ, основанных на мягких вычислениях, породило несколько подходов к формированию структур БЗ. Первоначально планировалось формировать некоторый достаточно огрубленный обучающий сигнал (ОС) от ГА, и извлекать БЗ путем аппроксимации полученного ОС на ННС. Структура ИСУ второго поколения представлена путем введения в структуру ИСУ первого поколения блока, включающего в себя ГА и ННС (см., Таблицу 1 — 3).
В дальнейшем второе поколение ИСУ стало использовать новый вид обратной связи, называемой интеллектуальной глобальной обратной связью (ИГОС), представленной в Таблице 1, (позиция 4). Её использование дает возможность извлекать объективные знания непосредственно из самого динамического поведения ОУ и исполнительного устройства САУ. Контур ИГОС включает ГА для получения информации об оптимальном сигнале управления (исходя из динамического и термодинамического поведения самого ОУ и ПИД-регулятора) и ННС, аппроксимирующей данный оптимальный сигнал управления с помощью заданной структуры нейронной сети. Основным блоком в структуре ИСУ этого поколения является система моделирования оптимального сигнала управления (СМОСУ) с помощью ГА и критерия качества управления, заданного в виде одной из составляющих вектор-функции пригодности ГА (рис.2).
Рис. 2. Интеллектуальная система управления второго поколения
Основной проблемой, решаемой ИСУ пятого поколения с ИГОС, является наличие возможности достижения требуемого уровня робастности на заданном классе как параметрических, так и внешних случайных возмущений различной вероятностной природы (с различными функциями плотности распределения вероятностей). Другой важной проблемой является определение требуемого соотношения между точностью описания (аппроксимации) ОС и необходимым уровнем робастности всей структуры ННС. Обе указанные проблемы решаются на втором этапе технологии построения БЗ ИСУ с помощью программных средств инструментария, названного «Оптимизатор Баз Знаний» (ОБЗ) (рис.3).
Рис. 3. Интеллектуальная система управления пятого поколения. С программным инструментарием ОБЗ
Рассмотрим пример применения ИСАУ.
Математическая модель и Робот
Управление объектом типа «Каретка — перевернутый маятник» (рис.4) является одной из типовых задач в теории управления, т.к. решение этой задачи наглядно демонстрирует качество САУ. Рассмотрим динамику модели в виде одноосевой каретки с перевёрнутым маятником, закреплённым на оси:
Рис.4 Модель системы «Каретка- перевернутый маятник»
Динамика этого ОУ описывается системой дифференциальных уравнений второго порядка, выводимых, с учетом сил трения и упругости каретки, из баланса моментов и проекций сил на горизонтальную ось Z:
Уравнения для скорости производства энтропии следующие:
В уравнениях z и «тета» — обобщенные координаты; g — ускорение свободного падения, мс — масса тележки, m — перевернутого маятника (называемого «шест»), l — половина длины маятник, k и а1 коэффициенты трения в z и «тета» соответственно, а2 — сила упругости тележки, «кси» внешний стохастический шум, а u — сила управления.
Динамическая система обладает глобальной динамической неустойчивостью, при отсутствии управляющей силы происходит неограниченный рост угла отклонения, т.е. маятник падает. Задача управления системой состоит в том, чтобы воздействуя с помощью силы управления на тележку, удерживать (стабилизировать) маятник в вертикальном положении (угол отклонения оси маятника от вертикали к 0) в условиях изменения среды функционирования.
Рис.5. Математическая модель реализованная в среде Matlab Simulink
Модель (рис.5) включает в себя ПИД — регулятор, шумы в системе управления и измерения, а также блок, формирующий сигнал для регулятора.
Данная компьютерная модели используется для получения обучающего сигнала и настройки БЗ с использованием ОБЗ. Основные этапы построения БЗ с использованием ОБЗ рассмотрены в [1,9].
Данный тип ОУ является типовым (benchmark) для тестирования программного инструментария робастного интеллектуального управления. Примеры подобных систем рассмотрены в работах [2 – 8] и представлены на рис. 6.
Рис. 6. Аналогичные ОУ
Рассмотрим устройство подобного макета ОУ. На рис. 7 представлен макет используемый для тестирования технологий проектирования ИСАУ с использованием ОБЗ. Подробно данный тип роботов рассмотрен тут.
Рис. 7. Макет системы
В качестве измерительной системы (рис. 7, Sensor) в макете используется плата с комбинацией датчиков — гироскопа и акселерометра — 5 DoF (пять степеней свободы) IDG500/ADXL335. Ядром и центральным элементам системы является микроконтроллер компании Arduino основанный на процессоре ATmega328. Плата оборудована USB разъемом, для передачи данных с процессора на компьютер. Интерфейс USB используется при проведении экспериментов для передачи и приема данных (угла отклонения и величины управляющего воздействия), а также для удаленной настройки, речь о которой пойдет ниже. Подключение датчиков осуществляется с использованием аналоговых входов микроконтроллера.
Базовые функции программ макета представлены на рис. 8., обобщённо их можно записать в псевдокод:
• Измерение
• Фильтрация
• Управление
• Подсчет времени (задержка).
Рис. 8. Псевдокод алгоритма работы робота
Отметим, что алгоритм работы макета системы, представленный на рис. 8, является частным примером САУ с обратной связью, рассмотренной ранее (таблица 1-1).
Эксперимент
Для проверки робастности контроллеров мы используем две ситуации управления:
1) Типовую ситуацию — для которой разрабатывать регуляторы (ситуация описанная в ОС и мат. модели)
2) Непредвиденную ситуацию 1 — дополнительный шум в системе (в эксперименте использовалась крупа)
3) Непредвиденную ситуацию 2 — задержка управляющего воздействия увеличена в три раза.
В видео демонстрируются три типа регуляторов:
1) Классический ПИД — регулятор
2) Нечеткий регулятор на основе ОБЗ
3) Квантовый регулятор, основанный на новых типах вычислений с использованием скрытой квантовой информацией (описание квантового регулятора и технологии проектирования подобной ИСУ здесь и здесь).
Выводы
Структура данной технологии проектирования нечетких регуляторов и ИСУ должна включать в себя:
o многокритериальный ГА для поиска оптимального управления и верификации математических моделей,
o нечеткую нейронную сеть для аппроксимации найденного с помощью ГА оптимального сигнала управления и извлечение на его основе «оптимальной» БЗ,
o «тонкую» настройку БЗ на основе ГА с использованием информационно-энтропийных критериев.
ОБЗ позволяет осуществить принцип проектирования оптимальной ИСУ с максимальным уровнем надежности и управляемости сложным ОУ в условиях неопределенности исходной информации.
Применение БЗ, спроектированных с помощью ОБЗ, в структуре ИСУ расширяет область промышленных приложений САУ к сложным динамическим ОУ.
Ссылки
2. Grasser, F., D’Arrigo, A., Colombi, S. and Rufer, A. Joe: A mobile inverted pendulum. // IEEE Transaction Electronics. – 2002. – Vol. 49. – No 1. – pp. 107 – 114.
3. Choi D., Oh J.-H. Human-friendly motion control of a wheeled inverted pendulum by reduced-order disturbance observer // IEEE International Conference on Robotics and Automation Pasadena, CA, USA, May 19-23, 2008. – pp. 2521 – 2526.
4. Nawawi S. W., Ahmad M. N. and Osman J. H. S., Real-time control system for a two-wheeled inverted pendulum mobile — robot, // Advanced Knowledge Application in Practice / I. Fuerstner (Ed). — InTech. – 2010. – pp. 299 – 312.
5. Gocmen A. Design of two wheeled electric vehicle. – Master Sci. Thesis. – Atilim University, Temmuz. – 2011.
6. Takeneka T., Hirano M., Izumi H., Kuwabara K., Koyama K., Kobashi Sh. Inverted pendulum mobile vehicle. – Patent US 8,224,891 B2. – Date of Patent. – Jul. 24, 2012.
7. Castro A. Modeling and dynamic analysis of a two-wheeled inverted pendulum. – Master Science Thesis. – Georgia Institute of Technology, Atlanta, USA. – 2012.
8. Nasir A., Ahmad N., Ghazali R., Pakheri N. Performance comparison between fuzzy logic controller (FLC) and PID controller for a highly nonlinear two-wheels balancing robot // 1st International Conference on Informatics and Computational Intelligence. – IEEE Computer Society. – 2011. – pp. 176 – 181.
9. Решетников А.Г., Ульянов С. В., Метод извлечения знаний из физически измеряемого сигнала обучения: проектирование баз знаний нечеткого регулятора, «Системный анализ в науки и образовании» Эл № ФС77-51141 от 14.09.2012г. Выпуск №1, 2013