{
  "format": "rubrick-lesson",
  "formatVersion": 1,
  "exportedAt": "2026-11-06T20:21:15.124Z",
  "source": {
    "lessonId": "00000000-0000-4000-8001-aa887be01706",
    "courseId": "00000000-0000-4000-8000-b95677216e43",
    "courseTitle": "Робот слышит и говорит",
    "ordering": 5,
    "updatedAt": "2026-09-27T10:47:17.862162+00:00"
  },
  "lessonTask": null,
  "lessonTaskSchemaVersion": null,
  "lesson": {
    "schemaVersion": 3,
    "id": "voice-05-remote",
    "courseId": "voice",
    "order": 5,
    "title": "Голосовой пульт",
    "summary": "Проект: провести робота по маршруту одним голосом",
    "duration": 40,
    "mode": "blocks",
    "attachments": [],
    "sections": [
      {
        "kind": "intro",
        "body": "Проект: провести робота по маршруту одним голосом\n\n### Чему научишься\n- Выбрать набор команд\n- Добавить подтверждение понятого\n- Пройти маршрут голосом\n\n### Новое\n- Набор команд — это интерфейс: чем он понятнее, тем меньше ошибок\n- Робот должен подтверждать, что понял, иначе непонятно, кто виноват\n- Голос ошибается чаще кнопки — с этим надо считаться",
        "attachments": [],
        "steps": []
      },
      {
        "kind": "task",
        "body": "Собери голосовой пульт и проведи робота по маршруту, который задаст учитель, не касаясь ноутбука.\n\n### Результат\n- Робот выполняет все выбранные команды\n- На каждую понятую команду есть подтверждение\n- Маршрут пройден без помощи рук",
        "attachments": [],
        "steps": [
          {
            "id": "s1",
            "title": "Выбери команды",
            "body": "Пять-шесть слов, не похожих на слух.",
            "attachments": []
          },
          {
            "id": "s2",
            "title": "Подтверждай",
            "body": "На каждую понятую команду — звук или короткая фраза.",
            "attachments": []
          },
          {
            "id": "s3",
            "title": "Отладь",
            "body": "Прогони каждую команду отдельно, прежде чем идти на маршрут.",
            "attachments": []
          },
          {
            "id": "s4",
            "title": "Маршрут",
            "body": "Проведи робота от старта до финиша только голосом.",
            "attachments": []
          }
        ],
        "hints": [
          "Робот путает команды? Выбери слова, непохожие друг на друга: «вперёд» и «вправо» звучат похоже, «вперёд» и «стоп» — нет."
        ]
      },
      {
        "kind": "assembly",
        "body": "### Понадобится\n- Настоящий робот\n- Размеченный маршрут на полу\n\nБазовая платформа. Проверь, что робот уверенно едет и поворачивает — на маршруте это уже не отладить.",
        "attachments": [],
        "steps": []
      },
      {
        "kind": "connection",
        "body": "",
        "attachments": [],
        "steps": []
      },
      {
        "kind": "example",
        "body": "### Что должно получиться\n- Нужен настоящий телефон и настоящий робот",
        "attachments": [],
        "steps": [],
        "program": {
          "mode": "blocks",
          "python": "robot.configure_drive(wheel_diameter_mm=43.2, track_width_mm=120, left_motor=1, right_motor=2)\n\nrobot.say(\"Пульт готов\")\n\nfor шаг in range(400):\n    if robot.heard_command(\"вперёд\"):\n        robot.sound(\"beep\")\n        robot.forward_cm(20)\n    elif robot.heard_command(\"назад\"):\n        robot.sound(\"beep\")\n        robot.back_cm(20)\n    elif robot.heard_command(\"налево\"):\n        robot.sound(\"beep\")\n        robot.turn_left(90)\n    elif robot.heard_command(\"направо\"):\n        robot.sound(\"beep\")\n        robot.turn_right(90)\n    elif robot.heard_command(\"стоп\"):\n        robot.stop()\n        robot.say(\"Финиш\")\n        break\n    robot.wait(0.2)\n"
        }
      },
      {
        "kind": "next",
        "body": "",
        "attachments": [],
        "steps": []
      }
    ],
    "category": "Проект",
    "colour": "#FFF200"
  }
}