Как сделать так чтобы робот двигался

Обновлено: 07.07.2024


В гнезда блока управления R-5 устанавливается контроллер Arduino Nano. Поэтому и в настройках среды разработки Arduino IDE необходимо выбрать именно этот контроллер с процессором AT mega 328.

2

3

Теперь уже приступаем непосредственно к программированию.

Программа для контроллера Ардуино обычно состоит из трёх частей.

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

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

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

Рассмотрим простой пример кода для движения робота.

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

В блоке R-5 контакты Arduino жёстко подключены к входам драйвера.

Давайте посмотрим на рисунок ниже:

4

M_R_IN – вход драйвера, управляющий направлением вращения правого электромотора. Высокий уровень (HIGHT) – вращение вперед.

M_R_EN – вход драйвера, разрешающий вращение правого электромотора. Высокий уровень (HIGHT) разрешает вращение. При подаче на вход сигнала с широтно-импульсной модуляцией (ШИМ, PWM) вход управляет скоростью вращения.

M_L_IN – вход драйвера, управляющий направлением вращения левого электромотора. Высокий уровень (HIGHT) – вращение вперед.

M_L_IN – вход драйвера, разрешающий вращение левого электромотора. Высокий уровень (HIGHT) разрешает вращение. При подаче на вход сигнала с широтно-импульсной модуляцией (ШИМ, PWM) вход управляет скоростью вращения.

И у нас получается следующее:
Контакт Ардуино 2 – направление вращения правого мотора.
Контакт Арудино 3 – разрешение вращения правого мотора. При работе ШИМ – регулировка скорости вращения.
Контакт Ардуино 4 – направление вращения левого мотора.
Контакт Ардуино 5 – разрешение вращения левого мотора. При работе ШИМ – регулировка скорости вращения.

Скопируйте текст программы и вставьте его в Arduino IDE.

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

После проверки загрузите код в контроллер. Установите контроллер в блок R-5 и включите питание робота.


 IMG 0739

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


Представьте себе клетчатое поле (как лист из тетради в клеточку) на котором находится некий объект, который мы назовем Робот. Используя специальные команды, мы можем этим Роботом управлять — перемещать его по клеткам, закрашивать клетки. И в большинстве случаев наша задача будет заключаться в том, чтобы написать такую программу для Робота, выполняя которую он будет закрашивать определенные клетки.

Запущенная программа Кумир выглядит так.

Среда Кумир, исполнитель Робот

Первым делом мы должны раскомментировать первую строку нашей программы, убрав символ |

Раскомментируем первую строку

Таким образом, программа станет выглядеть так:

использовать Робот

алг

нач

кон

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

Стартовая обстановка Робота

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

Что такое стартовая обстановка?

Наш Робот находится в некой среде — это клетчатое поле, размер которого известен. Так же на этом поле могут находится стены и закрашенные клетки, а сам Робот может находится в любой клетке. Так вот — стартовая обстановка задает положение Робота на поле и расположение всех остальных элементов — стен, закрашенных клеток. И перед тем, как писать алгоритм для Робота необходимо задать стартовую обстановку. Насколько это важно давайте рассмотрим на примере. Пусть есть две стартовые обстановки:

Стартовая обстановка 1

Стартовая обстановка 2

Отличаются они только тем, что в стартовой обстановке 2 справа от Робота находится стена.

Если наша программа начнется с команды, которая переместит Робота на одну клетку вправо (о простых командах Робота), то в первом случае (стартовая обстановка 1) Робот выполнит эту команду, а во втором программа завершится аварийно, так как Робот не может ходить сквозь стены. Получается, что одна и та же программа в первом случае работает, а во втором приводит к ошибке. Именно поэтому так важно задавать стартовую обстановку для Робота.

Как задать стартовую обстановку?

Запустив среду Кумир в меню Инструменты выбираем пункт Редактировать стартовую обстановку Робота

Редактировать стартовую обстановку Робота

Откроется окно с синим фоном. Это и есть стартовая обстановка Робота. И мы ее можем изменить.

По-умолчанию, размер окна 10 на 15 клеток. Если нам необходимо изменить количество строк и столбцов, то щелкаем Обстановка -> Новая обстановка и задаем необходимые значения

Задаем размер поля

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

После того, как мы задали нужную стартовую обстановку, ее необходимо сохранить (Обстановка -> Сохранить или Обстановка -> Сохранить как). После этого закрываем окно Обстановка и в основном окне программы выбираем Робот -> Сменить стартовую обстановку

Сменить стартовую обстановку Робота

Находим сохраненную ранее обстановку и загружаем ее. После этого убедимся, что загрузили правильную стартовую обстановку, щелкнув по кнопке Показать окно Робота

Показать окно Робота

Если в окне с зеленым фоном (текущая обстановка Робота) вы увидите вашу обстановку, то можно переходить к написанию алгоритма, используя простые команды Робота.

Исполнитель Робот. Простые команды.

У нашего Робота тоже есть система команд. Сегодня мы рассмотрим простые команды Робота. Всего их 5:

вверх

влево

вправо

закрасить

Результат выполнения этих команд понятен из их названия:

вверх — переместить Робота на одну клетку вверх

вниз — переместить Робота на одну клетку вниз

влево — переместить Робота на одну клетку влево

вправо — переместить Робота на одну клетку вправо

закрасить — закрасить текущую клетку (клетку в которой находится Робот).

Эти команды можно писать с клавиатуры, а можно использовать горячие клавиши (нажав их команды будут вставляться автоматически):

вверх — Escape, Up (стрелка вверх)

вниз — Escape, Down (стрелка вниз)

влево — Escape, Left (стрелка влево)

вправо — Escape, Right (стрелка вправо)

закрасить — Escape, Space (пробел)

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

Теперь мы готовы написать первый алгоритм для Робота. Предлагаю начать с простого — нарисуем квадрат со стороной 3 клетки. Поехали!

Запускаем Кумир, настраиваем его. Можно начинать писать программу? Конечно нет! Мы же не задали стартовую обстановку! Делаем это. Предлагаю использовать вот такую:

Стартовая обстановка Робота

Вот теперь все готово. Начинаем писать программу. Пока она выглядит так

Первая программа для Робота

Алгоритм квадрат

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

Первые шаги

Попробуем запустить программу и посмотреть что же получилось. Для запуска нажимаем F9 или же кнопку на панели инструментов

выполнить программу

В результате мы должны увидеть вот такую картину

Первый результат

Теперь мы будем двигаться вниз и закрашивать правую сторону квадрата:

Потом пойдем влево, закрашивая нижнюю границу квадрата

У нас осталась одна незакрашенная клетка. Закрасим ее

Все готово! В итоге наша программа выглядит так:

использовать Робот

алг Квадрат

нач

закрасить

вправо

закрасить

вправо

закрасить

вниз

закрасить

вниз

закрасить

влево

закрасить

влево

закрасить

вверх

закрасить

кон

А результат ее работы вот так

Результат работы программы

Итак, сегодня мы с вами написали программу, используя простые команды Робота. Рекомендую попрактиковаться самостоятельно — придумать себе задание и написать программу. Это могут быть самые различные фигуры, узоры, буквы. К примеру, попробуйте написать программу, рисующую букву П, Р, Ш, Щ, М. А если получится и захотите поделиться — комментируйте и прикрепляйте результат к комментарию.

Исполнитель Робот. Циклы.

Итак, что такое цикл? Представьте, что мы находимся на уроке физической культуры и перед нами стоит задача сделать 7 приседаний. Это задание можно оформить в виде линейного алгоритма и тогда оно будет выглядеть примерно так:

Т. е мы повторили команду сделай приседание 7 раз. А есть ли смысл писать 7 одинаковых команд? Может проще дать команду сделай 7 приседаний? Конечно проще и правильнее. Это и есть цикл. Вы можете сами вспомнить примеры циклов из жизни — их довольно много.

Таким образом линейный алгоритм, где повторяются одни и те же команды мы можем оформить в виде циклического алгоритма — примерно так:

Вот так, на придуманном нами языке мы оформили цикл. У исполнителя Робот тоже есть возможность записывать циклы. Причем, циклы бывают разные. Тот вариант, который мы только что рассмотрели называется цикл со счетчиком или цикл с параметром.

Виды циклов.

Цикл со счетчиком.

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

Для того, чтобы написать цикл со счетчиком для исполнителя необходимо знать его синтаксис. А он такой:

нц количество повторений > раз

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

Давайте рассмотрим это на примере.

Закрасим 7 клеток, как на рисунке. Рекомендую почитать про стартовую обстановку Робота и про его простые команды.

Задание на цикл со счетчиком

Изначально Робот находился в левой верхней клетке.

Давайте для начала решим задачу линейно. В этом случае мы будет закрашивать текущую клетку и перемещаться на 1 клетку вправо и программа будет выглядеть так:
использовать Робот
алг
нач

Как видим, команды закрасить и вправо повторяются 7 раз. Давайте теперь перепишем программу с использованием цикла. Кстати, чтобы вставить цикл в свою программу можно в меню Вставка выбрать пункт нц-раз-кц или нажать одну из комбинаций клавиш Esc, Р (русская буква Р) или Esc, H (латинская буква H). Причем клавиши надо нажимать последовательно — сначала Esc, отпустить ее и только потом Р или H.

Так вот, наша программа с циклом будет выглядеть так:

использовать Робот

Если мы ее запустим, то увидим, что в результате получится тоже самое — 7 закрашенных клеток. Однако программа стала короче и значительно грамотней с алгоритмической точки зрения!

В качестве разминки и закрепления предлагаю самостоятельно написать программу для Робота, которая нарисует квадрат со стороной 7 клеток. Естественно, используя цикл. Жду решения в комментариях.

Цикл с условием.

Вернемся к физкультуре и изменим задачу. Ведь кто-то может и не сделать 7 приседаний, а другой способен сделать 27. Можно ли учесть это при создании цикла? Конечно. Только теперь мы будем использовать не счетчик (количество повторений), а условие. К примеру, пока не устал, делай приседания. В этом случае человек будет делать не конкретное число приседаний, а приседать до тех пор, пока не устанет. И наш цикл на абстрактном языке примет такой вид:

пока не устал

Слова не устал в нашем случае — это условие. Когда оно истинно, цикл выполняется. Если же оно ложно (устал) тело цикла не будет выполнено. У исполнителя Робот есть несколько условий

сверху свободно

снизу свободно

слева свободно

справа свободно

сверху стена

снизу стена

слева стена

справа стена

Теперь давайте решим следующую задачу для Робота — нарисовать вертикальную линию от левой до правой границы поля использую цикл с условием. Изначально Робот находится в левом верхнем углу.

Давайте сначала сформулируем словесный алгоритм — т. е. опишем словами что нужно делать Роботу. Этот алгоритм будет звучать примерно так:

В результате Робот пробежит по всем клеткам вправо и будет их закрашивать до тех пор, пока справа не окажется стена.

Исходный код нашей программы для Робота будет примерно такой:

использовать Робот

нц пока справа свободно

В результате выполнения этой программы мы увидим вот такую картину:

Задание для Робота цикл с условием

Как видим, не хватает только закрашенной первой клетки. Для этого перед циклом необходимо выполнить команду закрасить.

Решение задачи с циклом

Для закрепления прошу написать программу, которая будет делать рамку вокруг рабочего поля Робота независимо от его размера. Конечно же с использованием циклов с условием. В итоге должно получиться так:

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

make-it-move-up-an-incline

Установление взаимосвязей

( 30 мин. )

make-it-move

PLAY

Используйте этот видеоролик для того, чтобы:

  • Показать учащимся связь с реальными движущимися роботами.
  • Показать учащимся связь с естественнонаучными и математическими принципами: расстояние, скорость, энергия и энергетические системы; равновесие, устойчивость и центр масс; траектории движения и системы координат; передача энергии; уклон и другие задачи для движения робота.
  • Рассмотреть, как думают роботы: как они узнают, где они находятся и что им надо делать.
  • Вдохновить учащихся на создание собственных движущихся роботов.
  1. Рассмотрите способы движения машин и роботов без колес. Выберите один пример и проследите, как движение передается от одной детали к другой.

Этот вопрос ставит перед учащимися задачу понаблюдать и описать, как физически двигается робот и как использовать термины физики, такие как мощность, энергия, работа, центр масс и устойчивость.
2. Сравните, как движутся два шагающих робота. Что вы заметили в связи с тем, как они сохраняют равновесие и ходят?
Робот-насекомое ZI поднимает одну ногу с одной стороны, но не с другой. Робот-гуманоид удерживает равновесие несколькими способами (например, двигаясь медленно, корректируя положение стоп, вытягивая руки вниз по сторонам).

Задание на проектирование
Спроектируйте, постройте и запрограммируйте робота, который может двигаться вверх по как можно более крутому уклону.

Мозговой штурм
Стимулируйте активный мыслительный процесс, в ходе которого учащиеся смогут развивать концептуальное понимание. Например, предложите им:

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

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

Сборка

( 30 мин. )

Стройте и программируйте
Теперь вы готовы начать строить и программировать вашу модель!

Работая над моделью, используйте эту регистрационную страницу для того, чтобы:

  1. Описать какую-то одну часть своей модели, которая отработала особенно хорошо.
  2. Описать какое-либо изменение конструкции, которое вы должны были сделать.
  3. Что вы попробуете сделать дальше?

Тестируя свое решение, используйте таблицу на следующих двух страницах для сбора и записи результатов.

Совместное обсуждение

( 30 мин. )

Тестирование и оценка результата
Насколько ваше решение соответствует заданию на проектирование?
Используйте эту страницу для записи данных. Дайте названия столбцам и строкам, например: номер испытания, угол уклона, передаточное отношение, мощность мотора, время и наблюдения.

Пересмотр и изменение
Поразмышляйте о своем роботе.

  • Легко ли робот движется вверх по уклону или с трудом?
  • Испытывали ли вы диапазон параметров для оптимизации мощности мотора?
  • Какие способы решения проблемы нашли другие?

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

Общение
Вот некоторые идеи, которые можно предложить учащимся:

  • Сделайте видеозапись своего проекта, в особенности его окончательного варианта и показателей функционирования робота.
  • Объясните некоторые важные особенности вашей программы.
  • Составьте инструкцию по построению вашей модели, сделав серию фотографий при ее разборке.
  • Приложите изображение вашей программы с комментариями.
  • Добавьте групповое фото!

Evaluate Creativity and Collaboration
Students can review their creative and collaboration processes using the provided rubric.

You may also choose to use the rubric to rate each team or student yourself.

Совершенствование

( 30 мин. )

Общение
Вот некоторые идеи, которые можно предложить учащимся:

  • Сделайте видеозапись своего проекта, в особенности его окончательного варианта и показателей функционирования робота.
  • Объясните некоторые важные особенности вашей программы.
  • Составьте инструкцию по построению вашей модели, сделав серию фотографий при ее разборке.
  • Приложите изображение вашей программы с комментариями.
  • Добавьте групповое фото!

Evaluate Design and NGSS Goals
You can use the included rubrics to evaluate skills progression of Design Engineering Projects.

  • Students can review their design goals as well as their use of some NGSS practices using the provided rubric. Students can rate their level of work by adding a mark below the Bronze, Silver, Gold, or Platinum column.
  • You may also choose to use the rubric to rate each team or student yourself.

Evaluate Creativity and Collaboration
Students can review their creative and collaboration processes using the provided rubric.

You may also choose to use the rubric to rate each team or student yourself.

Обзор примеров решений

gear-bot-thumbnail

PLAY

Конструкторские идеи для построения примера решения
Этот робот с зубчатыми колесами сочетает в себе такие конструкторские идеи: шаровое колесо, рамки EV3 и понижающая передача.

gear-bot-cover

Программа для примера решения

  • Включает моторы B и C на полную мощность, вращая их вперед в течение 13 секунд.

Скорость вращения этого мотора понижается посредством зубчатой передачи с передаточным отношением 0,33:1. Это означает, что ведущее зубчатое колесо должно совершить три оборота, чтобы повернуть ведомое зубчатое колесо один раз. Эта конструкция с зубчатыми колесами повышает передаточное отношение мотора в 3 раза: с зубчатой передачей мотор имеет втрое больше силы, чем без зубчатой передачи.


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

Видео по проекту

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

Как всегда есть над чем поржать и поплакать)))

комплектация

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

схемы, печатные платы

Схема электрическая принципиальная


программирование

Для программирования модуля Arduino Nano я использую программную оболочку Arduino IDE.

настройка

Управлять роботом можно со смартфона, используя любое приложение типа Bluetooth Terminal.

Обзор команд, которых пока немного:

  • N — порядковый номер сервы (0 — ступня правой ноги, дальше не сложно разобраться)
  • XXX — угол, на который надо повернуться в градусах

Читайте также: