{
  "format": "rubrick-lesson",
  "formatVersion": 1,
  "exportedAt": "2026-11-06T20:21:09.282Z",
  "source": {
    "lessonId": "00000000-0000-4000-8001-9a97dcd3d06c",
    "courseId": "00000000-0000-4000-8000-b95677216e43",
    "courseTitle": "Робот слышит и говорит",
    "ordering": 2,
    "updatedAt": "2026-09-27T10:47:17.862162+00:00"
  },
  "lessonTask": null,
  "lessonTaskSchemaVersion": null,
  "lesson": {
    "schemaVersion": 3,
    "id": "voice-02-commands",
    "courseId": "voice",
    "order": 2,
    "title": "Команды голосом",
    "summary": "Робот выполняет «вперёд», «назад», «стоп»",
    "duration": 30,
    "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Базовая платформа: левое колесо в разъём D, правое в C.",
        "attachments": [],
        "steps": []
      },
      {
        "kind": "connection",
        "body": "",
        "attachments": [],
        "steps": []
      },
      {
        "kind": "example",
        "body": "### Что должно получиться\n- Нужен настоящий телефон: распознавание речи живёт на нём",
        "attachments": [],
        "steps": [],
        "program": {
          "mode": "blocks",
          "python": "# Левое колесо — разъём D (1), правое — C (2).\nrobot.configure_drive(wheel_diameter_mm=43.2, track_width_mm=120, left_motor=1, right_motor=2)\n\nrobot.say(\"Говори: вперёд, назад или стоп.\")\n\nfor шаг in range(200):\n    if robot.heard_command(\"вперёд\"):\n        robot.forward_cm(15)\n    elif robot.heard_command(\"назад\"):\n        robot.back_cm(15)\n    elif robot.heard_command(\"стоп\"):\n        robot.stop()\n        robot.say(\"Стою\")\n    robot.wait(0.2)\n"
        }
      },
      {
        "kind": "next",
        "body": "",
        "attachments": [],
        "steps": []
      }
    ],
    "category": "Голос",
    "colour": "#FFF200"
  }
}