Введение

В этом курсе описано, как построить робота.

  • Возможно, Вы уже имеете опыт конструирования роботов и даже участвовали в соревнованиях. Может даже, и побеждали в них.
  • Возможно, Вы не имеете никакого опыта в робототехнике, но очень хотите его получить.
  • Возможно, Вы открыли этот курс случайно, заметив популярное слово “РОБОТ”.

В любом случае это руководство Вам поможет либо просто начать работать в увлекательном мире роботов, либо развить те умения, которые у Вас уже есть.

Сейчас в интернете и в литературе Вы можете найти множество описаний, где предлагаются готовые технические решения с использованием почти готовых роботов. Этот путь очень лёгкий и быстрый. Прикладывая минимальные усилия, Вы можете, повторяя простые пошаговые инструкции, построить очень сложные системы вплоть до искусственного интеллекта.

Но как устроены эти системы в подробностях Вы не узнаете. И Вам будет очень трудно изменить что-то в этих роботах, если захочется приспособить их к другим задачам.

Этот курс предлагает Вам другой вариант. Вы начнёте с относительно простых задач и, двигаясь от простого к сложному, сможете сделать примерно тоже самое. Не быстро, но самостоятельно. И когда Вам что-то захочется поменять, Вы сможете просто и быстро переделать и перенастроить Вашего робота для выполнения новых задач.

Робототехника – область довольно сложная, поэтому для успешной работы по этому руководству одного желания мало. Надо быть готовым, что некоторые вещи не будут получаться сразу и придётся делать всё новые и новые попытки. Надо быть готовым, что в какой-то момент Вы сильно устанете, и пропадёт всякое желание продолжать.

Правила простые:

  • Если устал – отдохни, займись чем-то другим. Просто побегай с друзьями, погоняй в футбол. Но постарайся вернуться, когда появятся силы.
  • Нет человека, который знает и умеет всё. Если что-то сложно или неясно, спроси у другого. Если другой не знает, поищи в книгах или в интернете. Ответ наверняка где-то есть. Если кто-то спрашивает тебя, постарайся ответить кратко, полно и точно.
  • Этот курс построен так, чтобы Вы смогли пройти тот же путь, что и Ваши ровесники. Путь непростой, но вполне доступный Вам.
  • Роботы подчиняются законам науки. Поэтому Вам потребуются хорошие знания школьных предметов. Так что давайте договоримся сразу: главное – это Ваши школьные уроки. Робот потом.
  • Когда мы говорим о тех предметах, которые надо знать, чтобы делать роботов, подразумеваются не только математика, физика, химия. А также:
    • Русский язык и литература, потому что хорошего робота в одиночку создать невозможно, а надо уметь рассказать своему коллеге о том, что ты задумал или сделал. Рассказать кратко, точно и однозначно. Этому учат на уроках русского языка и литературы;
    • История и обществознание, потому что роботы нужны не сами по себе, а для людей. А именно на уроках истории и обществознания можно узнать, как развивались человек и общество, и как они развиваются сейчас;
    • География, потому что роботы не обязательно работают в одном месте или даже в одном городе. Очень часто несколько роботов работают, находясь в различных точках Земли и космоса, но работают вместе над одной задачей. Поэтому географии будет недостаточно. Потребуется ещё и астрономия;
    • Ещё иностранные языки, потому что техника развивается очень быстро во всех уголках мира, а времени ждать пока переводчик переведёт интересную статью может и не быть. А как автоматические переводчики переводят техническую литературу – это отдельный и очень забавный разговор;
    • А также биология и анатомия, потому что робот должен помогать человеку, а на опасных работах заменять его. И здесь надо знать, как устроены живые организмы и человек.

Несколько слов для родителей:

  • Даже если Вы не специалист в технических дисциплинах и боитесь всяких технических вещей, постарайтесь помочь Вашему ребёнку в освоении тех упражнений, которые в этом курсе описаны;
  • Поверьте, Вашего желания и простого здравого смысла вполне достаточно, чтобы постепенно, двигаясь, шаг за шагом, освоить все эти премудрости;
  • Конечно, придётся потрудиться. Но ведь делать это Вы будете вместе с Вашим ребёнком. А значит тесное общение с лучшим в мире человеком Вам обеспечено. Заодно и робота сделаете;
  • Если по ходу чтения какие-то термины покажутся Вам непонятными – читайте дальше. Понимание приходит по мере продвижения.

Для наших работ мы выбрали платформу разработки электронных устройств Arduino и плату ARDUINO UNO в качестве основы. Так получилось достаточно случайно, – взяли то, что было под рукой. Потом оказалось, что открытость системы Arduino помогает сильно экономить время и деньги, так как для неё есть очень много бесплатных наборов программ. Правда, полной бесплатности не получится, – аппаратные устройства придётся покупать.

В этом курсе мы отказались от системы LEGO Mindstorms с графическим языком программирования RoboLab и ему подобным. Здесь мы используем текстовый язык основанный на C/C++. Графические языки программирования выглядят очень привлекательно и хороши для первоначального ознакомления с миром роботов. Но они не позволяют разобраться во всех тонкостях робототехники, чтобы можно было впоследствии сознательно выбрать эту область деятельности в качестве своей профессии.

Но, даже если Ваш ребёнок со временем выберет другую профессию, то умение работать с роботами и владение серьёзным языком программирования пригодится ему в будущем. Потому что конструирование роботов и их программирование учат человека точности и однозначности мышления, ясности выражения своих мыслей. А это нужно в любой профессии.

Надо отметить, что для системы Arduino в интернете есть бесплатная Интегрированная среда разработки (IDE) и очень большое количество бесплатных же разработок на языке C/C++.

Кроме того, на самом деле не так важно каким языком программирования Вы кодируете свои программы. Более важными вещами являются навыки анализировать общую цель создания робота, умение раскладывать её на составные задачи и функции, создавать алгоритмы их выполнения.

Знание какого-либо языка программирования – вещь важная, но если у Вас есть хороший работающий алгоритм и хорошо структурированная система программных функций, то Вы можете писать отличные программы на любом известном Вам языке.

Вариант языка C/C++ для Arduino позволяет как бы заглянуть внутрь системы управления роботом и понять, каким образом её части собирают данные, обрабатывают полученную информацию и вырабатывают управляющие воздействия. Человек, прошедший в своём развитии работу с языками подобными C/C++, гораздо быстрее сможет освоить языки типа Java или Python для выполнения своих профессиональных задач. Это потому, что он достаточно глубоко понимает принципы построения внутренней структуры аппаратной части систем автоматизированного управления и их связи с программным обеспечением.

Обучение программированию равномерно распределено по всему курсу, чтобы читатель постепенно от простого к сложному мог осваивать язык со средой программирования и в конце имел знания и практические навыки построения полноценной структурированной системы управления роботом.

Курс разбит на главы. Некоторые главы дополнены специальными файлами с уже написанными и отлаженными программами на языке C/C++ для системы Arduino. Поэтому, в принципе, можно программы не писать, а брать готовыми. Но лучше, если Вы будете писать программы самостоятельно, а готовые программы использовать для помощи и подсказки.

Предполагается, что изучение будет проходить у Вас последовательно от первой главы к последней. Все главы курса вместе составляют единую программу обучения, но в каждой из них осваивается какая-то отдельная самостоятельная часть.

Некоторые главы состоят из двух частей – обязательной и факультативной. Обязательная часть даёт возможность продвигаться по курсу и постепенно строить робота. Знаний и умений, которые Вы можете почерпнуть из обязательной части, достаточно для этого.

Факультативная часть позволяет получить более глубокие знания и даёт Вам возможность построить робота с улучшенными характеристиками.

Этот курс состоит из следующих глав:

  1. Построение аппаратной части робота (моторы, колёса, электронные блоки и прочее). В конце этой главы у Вас будет робот, готовый к загрузке программ и к добавлению новых датчиков.
  2. Начало работы с системой разработки программного обеспечения – компьютерным инструментом, который позволит Вам писать и отлаживать собственные программы и использовать готовые. Кроме того, в этой главе Вы узнаете об общих принципах построения роботов.
  3. Ваша первая программа – драйвер управления моторами. Ваш робот оживёт и начнёт относительно самостоятельно двигаться.
  4. Ваша вторая программа – драйвер связи с ультразвуковым дальномером. Ваш робот научится “видеть”, что происходит перед ним.
  5. Пожалуй, самая сложная глава. Здесь Ваш робот впервые начнёт двигаться осмысленно – следовать сначала за Вашей рукой, а затем за щёткой, повторяя её повороты и пятясь, если щётка начнёт приближаться.
  6. Глава рассказывает о так называемом “структурированном” подходе к проектированию. На самом деле все программы, которые рассматриваются в этой книге создавались на основе именно этого подхода. Он позволяет очень сильно упростить работу и дальнейшие усовершенствования робота. Так что после этой главы Вы уже сможете проводить улучшения Вашего робота самостоятельно.

Эти шесть глав представляют собой первый выпуск онлайн руководств по постройке и совершенствованию робота. В следующих выпусках будут рассмотрены ПИД регулятор, локатор переднего обзора, программы, позволяющие роботу исследовать окружающее пространство и обходить препятствия.

Мы так же рассмотрим методы фильтрации данных, позволяющие увеличивать точность измерения, и способы определения местоположения робота.

И ещё мы разработаем систему обмена информацией между роботами.

Материал, изложенный в главах этого курса, даст читателю возможность открыть дверь в мир взрослой робототехники. Мир, где роботы выполняют важные работы: собирают автомобили, управляют полётом самолётов, заменяют человека на опасном производстве, варят сталь, ищут разрывы трубопроводов и исследуют поверхности других планет.

В принципе, знания, полученные здесь, помогут Вам начать самим придумывать и реализовывать новые функции для построенного Вами робота.

В курсе широко используются английские термины. Поэтому при работе держите рядом с собой англо-русский словарь, чтобы можно было быстро найти перевод незнакомого слова.

Дело в том, что роботы без программирования не существуют. А основу всех основных языков программирования составляют термины английского языка.

Хотелось бы, чтобы Вы уже сейчас представляли себе, как могут выглядеть роботы, о которых идёт речь в этом руководстве. Поэтому ниже приложена фотография роботов, собранных в нашем Робоцентре “Полигон”. Это такие цилиндрики на колёсах. У каждого есть своё имя, написанное сверху, и свой набор датчиков.

У каждого из них свои возможности и даже свой характер.

Роботы на Arduino
Роботы Гоша, Миша, Кеша и Саша

Помимо функций, описанных в этом курсе, роботы на фотографии могут управляться человеком с помощью радиосвязи, контролировать пожарную обстановку на какой-то территории и сообщать пожарным, где они обнаружили возгорание; эти роботы имеют локаторы, которые позволяют им “видеть” окружающую обстановку в подробностях. У них есть магнитные компасы и система позиционирования, которые помогают не потеряться в мире. Сейчас авторы книги вместе с своими учениками работают над системой обмена информацией, подобной той, которая есть у людей.

В дальнейшем мы обязательно об этом расскажем. А теперь давайте начнём строить Вашего собственного робота!