Базовый набор MINDSTORMS EV3

Беспилотный автомобиль

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

Более 120 мин.
Средний уровень
Классы 9–11
roaming-vehicles-gps

План урока

Подготовка
— Ознакомьтесь с материалами для учителя.
— Если необходимо, разработайте план урока, используя материалы для начала работы в программе «Лаборатория EV3» или приложении для программирования EV3. Это поможет познакомить учащихся с решениями LEGO® MINDSTORMS® Education EV3.

Обсуждение (30 мин.)
— Используйте идеи, приведённые в разделе «Начало обсуждения», чтобы вовлечь учащихся в дискуссию по теме проекта.
— Объясните, в чём заключается цель данного проекта.
— Разделите класс на пары.
— Дайте учащимся немного времени, чтобы придумать несколько идей.

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

Объяснение (60 мин.)
— Попросите учащихся протестировать свои решения и выбрать лучшее из них.
— Убедитесь, что они могут подготовить свои таблицы результатов испытаний.
— Дайте каждой команде немного времени, чтобы завершить свой проект; затем соберите материалы, в которых они зафиксировали результаты своей работы.

Дополнение (60 мин.)
— Дайте учащимся немного времени, чтобы подготовить итоговые отчёты.
— Проведите обсуждение, в ходе которого каждая группа расскажет о результатах своей работы.

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

Начало обсуждения

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

roaming-vehicles-gps

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

  • Что представляют собой беспилотные автомобили и как они работают?
  • Откуда беспилотные автомобили получают информацию о месте назначения?
  • Какие манёвры должны выполнять беспилотные автомобили, чтобы безопасно передвигаться по городским улицам в северном, южном, восточном и западном направлениях?

Дайте учащимся немного времени для поиска ответов на следующие вопросы.

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

Псевдокод — великолепный инструмент, который поможет учащимся привести в порядок свои мысли перед началом программирования.

Советы по сборке

Начните со сборки транспортного средства. Учащиеся могут использовать любую предлагаемую Приводную платформу LEGO® MINDSTORMS® EV3 или собрать свою собственную. Необходимо обеспечить свободный доступ ко всем кнопкам, расположенным в верхней части EV3. Они потребуются для выбора направления в процессе выполнения данного задания.

ev3-robot-driving-base

Советы по программированию

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

  • Нажата кнопка «Вверх» — робот перемещается на 30 см вперёд.
  • Нажата кнопка «Вниз» — робот перемещается на 30 см назад.
  • Нажата кнопка «Влево» — робот поворачивает на 90 градусов влево.
  • Нажата кнопка «Вправо» — робот поворачивает на 90 градусов вправо.

Запись одного движения робота

coding-08-01

Описание программы

 1. Создать новую программу.
 2. Создать блок переменных «Вождение».
 3. Подождать, пока одна из кнопок на EV3 не будет нажата.
 4. Воспроизвести звук Click 2.
 5. Записать числовое значение нажатой кнопки в переменную «Вождение».
 6. Ожидать в течение 2 секунд.
 7. Воспроизвести звук G02.
 8. Прочитать значение, сохранённое в переменной «Вождение», и отправить его на Switch (Переключатель).
 9. Числовой switch (переключатель):

 a. Если переменная «Вождение» = 0 (по умолчанию), не предпринимать никаких действий.
b. Если переменная «Вождение» = 1, выполнить разворот влево.
c. Если переменная «Вождение» = 3, выполнить разворот вправо.
 d. Если переменная «Вождение» = 4, переместить робота вперёд на 2 оборота колёс.
 e. Если переменная «Вождение» = 5, переместить робота назад на 2 оборота колёс.
 10. Воспроизвести звук «Game Over 2».

Запись нескольких движений робота

Для хранения последовательности данных используется блок «Операции над массивом». Этот блок в большинстве случаев описывают как таблицу с одной строкой и несколькими столбцами.

coding-08-02

Описание программы

 1. Создать новую программу.
 2. Создать блок переменных «Вождение». Выбрать функцию «Запись  в числовой массив».
 3. Создать цикл. В данном примере программы цикл выполняется 5 раз.
 4. Подождать, пока одна из кнопок на EV3 не будет нажата.
 5. Воспроизвести звук Click.
 6. Считать значения блока переменных «Вождение». Выбрать функцию «Чтение числового массива».
 7. Использовать блок «Операции над массивом». Выбрать «Записывать по индексу — числовое значение».

 a. Использовать шину данных для блока переменных «Вождение».
b. Связать шиной данных Параметр цикла в начале цикла и соответствующую ячейку блока «Операции над массивом».
c. Связать шиной данных значение времени ожидания для Модуля EV3 и соответствующую ячейку блока «Операции над массивом».

 8. Записать выходное значение блока «Операции над массивом» в блок переменных «Вождение».
 9. Ожидать в течение 2 секунд.
 10. Воспроизвести звук Go.
 11. Создать второй цикл. В данном примере программы цикл выполняется 5 раз, то есть столько же, сколько и первый цикл.
 12. Считать значения блока переменных «Вождение». Выбрать функцию «Чтение числового массива».
 13. Использовать блок «Операции над массивом». Выбрать функцию «Читать по индексу — числовое значение».
 14. Числовой switch (переключатель):

 a. Если переменная «Вождение» = 0 (по умолчанию), не предпринимать никаких действий.
b. Если переменная «Вождение» = 1, выполнить разворот влево.
c. Если переменная «Вождение» = 3, выполнить разворот вправо.
 d. Если переменная «Вождение» = 4, переместить робота вперёд на 2 оборота колёс.
 e. Если переменная «Вождение» = 5, переместить робота назад на 2 оборота колёс.

 15. Воспроизвести звук «Game Over 2».

Загрузить примеры программ 32 Кбайт, требуется программное обеспечение «Лаборатория EV3»

Вкладки «1» и «2»

Программные решения EV3 MicroPython

Запись одного движения робота

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor
from pybricks.parameters import Port, Stop, Button, SoundFile
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# The Left, Right, Up, and Down Buttons are used to command the robot.
COMMAND_BUTTONS = (Button.LEFT, Button.RIGHT, Button.UP, Button.DOWN)

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Wait until one of the command buttons is pressed.
while not any(b in brick.buttons() for b in COMMAND_BUTTONS):
    wait(10)

# Store the pressed button as the drive command.
drive_command = brick.buttons()[0]
brick.sound.file(SoundFile.CLICK)

# Wait 2 seconds and then play a sound to indicate that the robot is
# about to drive.
wait(2000)
brick.sound.file(SoundFile.GO)
wait(1000)

# Now drive the robot using the drive command.  Depending on which
# button was pressed, drive in a different way.

# The robot turns 90 degrees to the left.
if drive_command == Button.LEFT:
    robot.drive_time(100, -90, 1000) 

# The robot turns 90 degrees to the right.
elif drive_command == Button.RIGHT:
    robot.drive_time(100, 90, 1000)

# The robot drives straight forward 30 cm.
elif drive_command == Button.UP:
    robot.drive_time(100, 0, 3000) 

# The robot drives straight backward 30 cm.
elif drive_command == Button.DOWN:
    robot.drive_time(-100, 0, 3000)

# Play a sound to indicate that it is finished.
brick.sound.file(SoundFile.GAME_OVER)
wait(2000)

Запись нескольких движений робота

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor
from pybricks.parameters import Port, Stop, Button, SoundFile
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# The Left, Right, Up, and Down Buttons are used to command the robot.
COMMAND_BUTTONS = (Button.LEFT, Button.RIGHT, Button.UP, Button.DOWN)

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Pressing a button stores the command in a list.  The list is empty to
# start.  It will grow as commands are added to it.
drive_command_list = []

# This loop records the commands in the list.  It repeats until 5
# buttons have been pressed.  This is done by repeating the loop while
# the list contains less than 5 commands. 
while len(drive_command_list) < 5:
    # Wait until one of the command buttons is pressed.
    while not any(b in brick.buttons() for b in COMMAND_BUTTONS):
        wait(10)

    # Add the pressed button to the command list.
    drive_command_list.append(brick.buttons()[0])
    brick.sound.file(SoundFile.CLICK)

    # To avoid registering the same command again, wait until the Brick
    # Button is released before continuing.
    while any(brick.buttons()):
        wait(10)

# Wait 2 seconds and then play a sound to indicate that the robot is
# about to drive.
wait(2000)
brick.sound.file(SoundFile.GO)
wait(1000)

# Now drive the robot using the list of stored commands.  This is done
# by going over each command in the list in a loop.
for drive_command in drive_command_list:
    # The robot turns 90 degrees to the left.
    if drive_command == Button.LEFT:
        robot.drive_time(100, -90, 1000) 

    # The robot turns 90 degrees to the right.
    elif drive_command == Button.RIGHT:
        robot.drive_time(100, 90, 1000)

    # The robot drives straight forward 30 cm.
    elif drive_command == Button.UP:
        robot.drive_time(100, 0, 3000) 

    # The robot drives straight backward 30 cm.
    elif drive_command == Button.DOWN:
        robot.drive_time(-100, 0, 3000)

# Play a sound to indicate that it is finished.
brick.sound.file(SoundFile.GAME_OVER)
wait(2000)

Дополнительно

Развитие языковых навыков

Вариант 1
Использование текстового программирования:

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

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

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

Развитие математических навыков

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

  • создать шаблон, представляющий собой сеть городских улиц (например, пять улиц, идущих с востока на запад, и пять улиц, идущих с севера на юг);
  • выбрать пункт отправления и пункт назначения и, помня о том, что путь с наименьшим количеством поворотов является самым лучшим, проанализировать три пересечения улиц на пути от пункта отправления до пункта назначения;
  • определить вероятность прибытия робота в пункт назначения без превышения выданного «лимита поворотов» при условии его движения в произвольном направлении.

Возможности для оценки

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

 1. Задание выполнено не полностью.
 2. Задание выполнено полностью.
 3. Результаты превзошли ожидания.

Используйте следующие критерии для оценки успехов детей в обучении.

  • Учащиеся могут определить ключевые элементы задачи.
  • Учащиеся самостоятельно разрабатывают работающие и креативные решения.
  • Учащиеся могут понятно рассказать о своих идеях.

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

  • Ваше решение соответствует критериям технического задания?
  • Можно ли сделать движения вашего робота более точными?
  • Какие способы решения этой задачи нашли другие команды?

Попросите учащихся придумать и задокументировать два варианта усовершенствования их решений.

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

Перспективы профессионального развития

Учащиеся, которым было интересно данное задание, могут попробовать себя в следующих сферах деятельности:

  • бизнес и финансы (предпринимательство);
  • производство и инженерное дело(проектирование).

В помощь преподавателю

Учащиеся смогут:
использовать процесс разработки для решения задач из реальной жизни.

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

Информатика:
• владение навыками алгоритмического мышления и понимание необходимости формального описания алгоритмов
• владение умением понимать программы, знанием основных конструкций программирования; умением анализировать алгоритмы

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

Учебные материалы

Рабочий лист ученика

Download to view and share the student worksheet.

Загрузите и просмотрите рабочий лист или разошлите его в формате HTML-страницы или PDF.

Поделиться через:

Класс GoogleКласс Google