- Создаем робота андроида своими руками
- Джон Ловин Создаем робота-андроида своими руками
- Введение
- Благодарности
- Глава 1 Начало
- Зачем создавать роботов?
- Применение роботов
- РОБОТ на базе: android, arduino, bluetooth. Рефлексный. Часть 2
- Оглавление
- Постановка задачи
- Немного теории
- Краткая информация по используемым деталям и модулям
- Сборка робота и подключение всех модулей
- Скетч для Arduino ШАГ 1 – Удаленное управление роботом
- Android приложение ШАГ 1 – Удаленное управление роботом
- Скетч для Arduino ШАГ 2 – Режим автономного управления роботом
- Android приложение ШАГ 2 – Режим автономного управления роботом
Создаем робота андроида своими руками
Эта книга – отличный подарок для тех, кто собирается строить робота в первый раз, а также будет полезна и более опытным «роботостроителям», которые хотят отточить свое мастерство. Базовых знаний в области радиоэлектроники окажется вполне достаточно, чтобы книга помогла вам осуществить 12 отличных робототехнических проектов с использованием как промышленных частей и деталей (полные списки прилагаются), так и различного домашнего хлама, вытащенного с антресолей.
Издание окажется крайне полезным для всех любителей электроники и телемеханики как классическое руководство по функционально-блочному построению робототехнических устройств.
Глава 1 — Начало 1
Глава 2 — Искусственная жизнь и искусственный интеллект 4
Глава 3 — Системы питания 6
Глава 4 — Системы движения и привода 10
Глава 5 — Сенсорика 13
Глава 6 — Интеллект 19
Глава 7 — Передвижной робот с голосовым управлением 26
Глава 8 — Поведенчески ориентированные схемы роботов, нейронные сети, организация нервной системы и предикативная архитектура 29
Глава 9 — Робот – система телеслежения 36
Глава 10 — Передвижные платформы 38
Глава 11 — Шагающие роботы 42
Глава 12 — Робот – солнечный шар 44
Глава 13 — Подводные роботы 46
Глава 14 — Аэророботы 48
Глава 15 — Роботизованная рука-манипулятор, интерфейс IBM PC и система голосового управления 50
Глава 16 — Кисть руки – андроида 53
Джон Ловин
Создаем робота-андроида своими руками
Введение
Создание электронных устройств является интересным и увлекательным занятием, а конструирование роботов может принести наибольшее удовлетворение. В этом случае вам придется создавать не только электронные схемы и узлы, но воспользоваться некоторыми другими технологиями. Создание робота включает решение следующих технологических проблем:
• система питания устройства
• моторы и сервомеханизмы для обеспечения движения и перемещения устройства
• системы чувствительных датчиков (сенсоров)
• элементы искусственного интеллекта
По каждой из этих проблем существует многочисленная специальная литература, и очевидно, что объем одной книги не позволит охватить все многообразие применяемых технологий. Тем не менее мы коснемся большинства из них, что позволит вам получить начальные представления о задаче и может послужить основой для дальнейшего самостоятельного экспериментирования.
Робототехника является развивающейся дисциплиной. Многие подходы известны уже сегодня, но вряд ли кто-нибудь сможет сказать, какие методы и технологии конструирования будут использоваться через сто лет. Как и биологические системы, робототехника развивается в соответствии с Дарвиновской моделью «естественного отбора».
Занявшись созданием роботов, вы не останетесь в одиночестве. Я был очень удивлен, когда узнал, что многие энтузиасты, государственные организации, частные фирмы, спортивные и технические клубы занимаются вопросами любительского конструирования роботов. Наиболее «продвинутой» программой по робототехнике из тех, которые я когда-либо видел, обладает американское космическое агентство НАСА. Большинство разработок можно найти в открытом доступе. Если у вас есть Интернет – воспользуйтесь любой поисковой системой (Yahoo, Exite и т. д.) по ключевому слову robotics. Вы найдете массу информации, посвященной робототехнике, на сайтах различных компаний, университетов, клубов, форумов и просто энтузиастов.
Благодарности
Я хотел бы выразить благодарность некоторым коллегам, оказавшим неоценимую помощь при создании этой книги: Мэтту Вагнеру, моему агенту в Waterside Productions, Скотту Грилло, помогавшему выдержать график работы, и Стефану Смиту за большую помощь в редактировании текста.
Глава 1
Начало
Некоторые историки считают, что началом робототехники можно считать времена античной Греции. Примерно в 270 году до н. э. греческий инженер Ктесибус создавал музыкальные органы и клепсидры (водяные часы), в которых имелись движущиеся фигуры.
Другие историки полагают, что робототехника началась с появлением механических кукол. Примерно в 1770 году Пьер Жаке-Дрю – швейцарский часовой мастер и изобретатель наручных часов изготовил три замечательные куклы. Одна из созданных им кукол «умела» писать, другая – играть на органе, а третья – рисовать картины. Эти удивительные механические куклы, предназначенные для развлечения королевской семьи, проявляли свое «искусство» при помощи рычажков, шестеренок и пружин.
Позднее, в 1898 году, Никола Тесла построил дистанционно управляемую «ныряющую» лодку. Для 1898 года это было немалым достижением, и лодка демонстрировалась в Мэдисон Сквер Гарден. Тесла планировал создать лодку, способную к автономному плаванию, но за недостатком финансирования исследования пришлось прекратить.
Слово «робот» впервые появилось в 1921 году в пьесе «Р.У.Р.» (Россумские Универсальные Роботы), написанной знаменитым чешским драматургом Карелом Чапеком. Робот по-чешски означает «рабочий». В пьесе описывались механические слуги – «роботы». Когда этих роботов наделили человеческими эмоциями, они восстали против своих хозяев и уничтожили их.
Исторически можно найти немало примеров роботов – предметов неживой природы, копирующих человеческую внешность и некоторые человеческие «функции». Таких «человекоподобных» роботов принято называть андроидами.
С легкой руки Карела Чапека роботы стали главными героями многих научно-фантастических книг и фильмов. Развитие темы «роботов» привело к появлению их многочисленных разновидностей. Наряду со старомодными «железными» людьми, появились киборги – существа частично «человеческого», а частично – «машинного» происхождения, и андроиды — роботы, имеющие человеческий облик.
Многие впервые увидели «настоящего» робота на всемирной ярмарке 1939 года. Фирма Westinghouse Electric создала робота Electro – движущегося человека. У робота Electro имелись моторчики и система приводов, позволявшие ему «двигать» ногами, руками и ртом. Робот не «умел» делать никакой полезной работы – его просто демонстрировали на сцене в компании «механической» собаки Спарко.
Зачем создавать роботов?
Применение роботов оказалось совершенно необходимым для многих производств, прежде всего потому, что стоимость «труда» робота оказалось значительно ниже стоимости такой же операции, производимой работником – человеком. Более того, робота достаточно запрограммировать один раз, и он будет совершать требуемое действие с точностью, превосходящей точность работы любого квалифицированного рабочего. С другой стороны, человек способен выполнять различные задания и с этой точки зрения является значительно более гибким. Роботы, как правило, предназначены для выполнения какой-то одной операции. Например, робота, предназначенного для сварки, вряд ли удастся «научить» считать детали в бункере.
Существующие наиболее совершенные промышленные роботы очень скоро превратятся в «динозавров». Сегодняшняя «младенческая» стадия эволюции роботов заканчивается, появляются новые, гораздо более универсальные роботы, вбирающие в себя все новые качества человеческого интеллекта.
Персональный компьютер уже произвел переворот в обществе, но «персональный» робот еще не появился. Причина очевидна – создание такого робота намного сложнее. Помимо развитого интеллекта он должен хорошо «уметь» ориентироваться и перемещаться в пространстве и осуществлять необходимые манипуляции для достижения поставленной цели.
Применение роботов
Понятно, что гораздо проще создать «домашнего» робота, выполняющего какую-то одну работу. Например, уже сегодня существуют небольшие мобильные роботы, которые могут «самостоятельно» постричь траву на газоне. Эти роботы работают от солнечных батарей и не требуют программирования. По периметру газона закапывается провод; робот чувствует этот провод и остается внутри периметра, не выходя за его пределы.
Создание полезного персонального робота очень сложно. Вообще говоря, эта проблема выходит за рамки данной книги, да, пожалуй, и любой современной книги по робототехнике. Резонно спросить – а какова вообще тогда цель этой книги? Я надеюсь, что, прочитав эту книгу и построив несколько моделей роботов, вы приобретете необходимый опыт и сможете внести свой вклад в развитие робототехники.
Источник
РОБОТ на базе: android, arduino, bluetooth. Рефлексный. Часть 2
Оглавление
Статья 1. РОБОТ на базе: android, arduino, bluetooth. Начало
Статья 2. РОБОТ на базе: android, arduino, bluetooth. Рефлексный. Часть 2.
Предполагается, что человек читающий статью уже имеет представление о:
-Базовых понятиях электроники
-Предыдущей статье
Постановка задачи
Создать робота который выполняет следующий функционал:
-Имеет удаленное управление при помощи смартфона (передвижение вперед, назад, налево, направо)
-Передает на смартфон данные о расстоянии до объекта находящегося перед ним(на базе ультра звукового датчика)
-Имеет режим автономного управления: непрерывно перемещается по помещению, при встрече препятствий меняет направление своего движения, тем самым объезжая препятствие.
Немного теории
Наш мир является сложнейшей системой, в которой взаимодействуют между собой огромное количество объектов, подчиненных определенным законам физики, поэтому создание робота функционирующего в рамках этой системы, является очень трудоемкой задачей. Для упрощения процесса создания первого робота воспользуемся понятием абстрагирования среды(в которую помещен робот) и действий робота. В дальнейших статьях будем усложнять среду и соответственно действия робота.
Абстрагирование среды
Среда где будет обитать наш первый робот будет представлять собой двухмерный мир и обладать следующими характеристиками:
1) Полностью наблюдаемая, т.е. датчики робота предоставляют доступ к полной информации о состоянии среды в каждый момент времени. Полностью наблюдаемые варианты среды являются удобными, поскольку роботу не требуется поддерживать какое-либо внутреннее состояние для того, чтобы быть в курсе всего происходящего в этом мире.
2) Детерминированная. Если следующее состояние среды полностью определяется текущим состоянием и действием, выполненным роботом, то такая среда называется детерминированной; в противном случае она является стохастической.
3) Эпизодическая. В эпизодической проблемной среде опыт робота состоит из неразрывных эпизодов. Каждый эпизод включает в себя восприятие среды роботом, а затем выполнение одного действия. При этом крайне важно то, что следующий эпизод не зависит от действий, предпринятых в предыдущих эпизодах. В эпизодических вариантах среды выбор действия в каждом эпизоде зависит только от самого эпизода.
4) Статическая. Если среда может измениться в ходе того, как робот выбирает очередное действие, то такая среда называется динамической для данного робота; в противном случае она является статической.
5) Непрерывная — Различие между дискретными и непрерывными вариантами среды может относиться к состоянию среды, способу учета времени, а также восприятием и действиям агента. В нашем случае считается что состояние среды меняется непрерывно. К примеру игра в шахматы является дискретной, так как имеет конечное количество различных состояний.
6) Одноагентная это среда в которой находится один объект(робот), и другие объекты на него не влияют и не конкурируют с ним.
Абстрагирование действий робота
1) Движение – робот может передвигаться в двух направлениях(взад, вперед) и разворачиваться на месте(налево, направо)
2) Датчики робота (ультразвуковой сенсор), позволяет определить расстояние до объекта. Расстояние может быть определено от 0,02 метра до 4 метров.
Таким образом, определим, что создаваемый в этой статье робот является простым рефлексным роботом. Подобные роботы выбирают действия на основе текущего акта восприятия, игнорируя всю остальную историю актов восприятия.
Краткая информация по используемым деталям и модулям
Драйвер двигателей HG7881. Для управления двигателями робота необходимо устройство, которое бы преобразовывало управляющие сигналы малой мощности в токи, достаточные для управления моторами. Такое устройство называют драйвером двигателей.
HG7881 – это двухканальный драйвер двигателей, питание возможно от источника 2,5 – 12 В. Описание выходов драйвера:
Таблица 1
Вывод | Описание |
B-IA | Двигатель B Вход A (IA) |
B-IB | Двигатель B Вход B (IB) |
GND | Земля (Минус) |
VCC | Рабочее напряжение 2.5-12V (Плюс) |
A-IA | Двигатель A Вход A (IA) |
A-IB | Двигатель A Вход B (IB) |
Для того чтобы заставить двигатели работать нужным нам образом на выводы (B-IA, B-IB, A-IA, A-IB) необходимо подавать логические сигналы (HIGH,LOW). Таблица истинности двигателей:
Таблица 2
IA | IB | Состояние двигателя |
L | L | Off |
H | L | Forward |
L | H | Reverse |
H | H | Off |
Ультразвуковой сенсор измерения расстояния HC-SR04. Определяет расстояние до объекта, измеряя время отражения звуковой волны от объекта.
Сенсор излучает короткий ультразвуковой импульс (в момент времени 0), который отражается от объекта и принимается сенсором. Расстояние рассчитывается исходя из времени до получения эха и скорости звука в воздухе.
На вывод (Trig) подаётся импульс длительностью 10 мкс, ультразвуковой модуль излучает 8 пачек ультразвукового сигнала с частотой 40кГц и обнаруживает их эхо. Измеренное расстояние до объекта пропорционально ширине эха (Echo) и может быть рассчитано по формуле:
Ширина импульса/58 = расстояние в см.
Сборка робота и подключение всех модулей
Собираем платформу (рис.2).
Рисунок 2
Подключаем двигатели к драйверу (рис. 3). По два двигателя на один разъем драйвера, т.е. двигатели левой стороны платформы к разъему “Motor B”, двигатели правой стороны — “Motor A”. Управление платформой будет произведено аналогично гусеничной. При движении вперед и назад все двигатели работают синхронно в одном направлении, при повороте направо двигатели правой стороны платформы останавливаются, а левой двигаются синхронно, при повороте налево двигатели левой стороны останавливаются, а правой двигаются синхронно.
Рисунок 3
Прикручиваем верхнюю часть платформы. Соединяем драйвер двигателей, ардуино, аккумуляторы, БТ модуль и ультразвуковой сенсор к макетной плате (рис.4)
Рисунок 4
Схема подключения представлена на (рис.5). Питание ардуино, ультразвукового сенсора и драйвера двигателей (следовательно и самих двигателей) обеспечивают 4 подключенных последовательно аккумулятора (1,2 В., 2700 мА/ч), на БТ модуль питание подается от выхода ардуино 3,3 В.
Рисунок 5
Робот собран, необходимо его заставить выполнять команды, отправленные с андроида.
Скетч для Arduino ШАГ 1 – Удаленное управление роботом
Объявляем переменные: R_A_IA, R_A_IB – определяют номера выводов управляющих двигателем А (двигатели правой стороны), L_B_IA, L_B_IB — выводы управляющие двигателем B(двигатели левой стороны. Инициируем последовательное соединение и задаем скорость передачи данных в бит/c (бод) – 38400. Устанавливаем режим работы выводов управляющих двигателями – OUTPUT (выходы). Подаем на все выходы значение HIGH, что означает — двигатели отключены(таблица 2).
Определяем функции: go_forward(), go_back(), go_right(), go_left(), stop_robot(), которые запускают двигатели в прямом или обратном направлении вращения, тем самым приводя робота в движение – вперед, назад, направо, налево, стоп, соответственно.
В основном цикле программы происходит считывание и обработка данных полученных в последовательный порт от БТ модуля. В зависимости от полученной команды выполняется та или иная функция и по последовательному порту передается текст об ее выполнении.
Android приложение ШАГ 1 – Удаленное управление роботом
Вот так будет выглядеть основное activity:
Текстовое поле «txtrobot», будет отображать всю необходимую нам информацию. Кнопки b0, b1, b2, b3, b4 будут отправлять команды в arduino (0, 1, 2, 3, 4)
Переходим в src/../MainActivity.java здесь и будет располагаться наш основной код.
В предыдущей статье на шаге 4, был представлен код позволяющий передавать и принимать данные по БТ. За основу возьмем этот код.
В состояния активити onPause() и onResume() добавим условие проверки существования БТ у андроида и определения включен ли он. В предыдущей статье это условие отсутствовало в связи, с чем при запуске приложения, если был отключен БТ, оно завершалось с ошибкой и только после этого предлагало включить БТ.
Объявим переменные для хранения кнопок:
Находим их по ID:
Напишем обработчики нажатия этих кнопок, для отправки команд:
Полный код приложения:
Данное приложение, позволяет управлять роботом при помощи андроида, отправляя команды по БТ на ардуино, и принимая текстовые ответы от него. Первая часть поставленной задачи выполнена.
Скетч для Arduino ШАГ 2 – Режим автономного управления роботом
Для работы с ультразвуковым сенсором, воспользуемся готовой библиотекой
ultrasonic-HC-SR04.zip
Распаковываем файлы и помещаем в каталог где расположен скетч
Подключаем библиотеку
Конструктор Ultrasonic принимает два параметра — номера выводов к которым подключены Trig и Echo, соответственно:
Получаем данные о расстоянии до объекта в сантиметрах:
Передаем данные на последовательный порт, для последующей передачи их через БТ модуль.
Символы «*» и «#» означают начало и конец передаваемого блока информации о расстоянии до объекта. Это необходимо для того чтобы четко отделять необходимые данные друг от друга, так как при их передачи часть теряется либо приходит с запозданием.
Полный скетч для загрузки в ардуино:
Android приложение ШАГ 2 – Режим автономного управления роботом
Таким образом, основное activity примет вид:
Объявим переменную b5:
И флаг позволяющий определить включен режим автоуправления или нет:
Находим ее по ID:
Создадим обработчик ее нажатия:
А также внесем изменения в обработчик кнопки «b0»(Стоп)
Осталось создать алгоритм позволяющий роботу самостоятельно перемещаться по помещению и объезжать препятствия.
Обработаем полученные данные о расстоянии до объекта отправленные ардуино. Если расстояние до объекта менее 50 см. то поворачиваем направо в противном случае едим прямо:
Ниже приведен полный код Activity:
Созданное приложение для андроида в связке с представленным скетчем ардуино, позволяет, как удаленно самостоятельно управлять роботом, так и включать режим автономного управление, при котором робот передвигается в прямом направлении и если требуется, объезжает препятствия.
Результатом проделанной работы является простейший рефлексный робот. Дальнейшее применение более сложных алгоритмов на базе приведенных шаблонных приложений и скетчей позволит создавать роботов основанных на модели, на цели, на полезности, обучающихся роботов и др.
К следующей статье я сделал заказ всего одного модуля:
Наименование | Ссылка | Цена y.e | Цена руб | Кол-во | Сумма |
Wifi модуль | dx.com/p/hi-link-hlk-rm04-serial-port-ethernet-wi-fi-adapter-module-blue-black-214540#.UutHKD1_sd0 | 14,99 | 524,65 | 1 | 524,65 |
ИТОГ: 524,65
В комментариях к предыдущей статье, хабра пользователь commanderxo порекомендовал не изобретать велосипед, а воспользоваться стандартным протоколом Firmata (протокол для обмена данными между ардуино и сервером). К сожалению работоспособной библиотеки, для андроида в связке с БТ, я не нашел. Написать свою библиотеку у меня не хватает времени и сил, поэтому в данной статье я продолжаю изобретать велосипед. Если кто из Хабра пользователей обладает информацией о такой библиотеке просьба поделиться.
Источник