"Информатика", Поляков К.Ю., Еремин Е.А.
Робот — исполнитель, который действует по командам человека или программы. Чтобы он выполнил задание, нужно определить цель, учесть пространство вокруг него и составить алгоритм из понятных роботу команд. При движении важно следить за положением и направлением, а датчики помогают реагировать на изменения среды. Условия и повторения позволяют выбирать действия и описывать более сложные маршруты.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Робот как исполнитель — устройство, которое выполняет команды, заданные человеком или программой. Самостоятельно выбирать цель и придумывать действия он не может: его поведение определяется полученными командами и предусмотренными правилами. Это помогает понять, почему для управления роботом нужен заранее составленный алгоритм.
Система команд исполнителя — набор команд, которые робот умеет выполнять. Каждая команда должна быть ему понятна и соответствовать его возможностям: например, нельзя ожидать от робота действия, для которого у него нет нужной команды или устройства. Система команд задаёт границы того, что можно описать в алгоритме.
Среда робота — пространство и объекты, с которыми он взаимодействует во время выполнения задания. К среде могут относиться коридоры, стены, отметки и препятствия. Учитывать её нужно, чтобы выбрать подходящий маршрут и не дать роботу команду, которая приведёт к столкновению или не позволит достичь цели.
Алгоритм управления роботом — последовательность команд, которая приводит исполнителя к заданной цели. Команды записывают в том порядке, в котором робот должен их выполнить, а при необходимости добавляют проверки и повторения. Такой алгоритм позволяет заранее продумать действия робота и проверить, получится ли нужный результат.
Сначала формулируют цель: например, роботу нужно добраться от старта до отмеченной точки. Затем выясняют, где он находится, куда направлен и какие условия есть вокруг. Это необходимо, потому что одна и та же команда может привести к разным результатам в зависимости от начального положения и окружающего пространства.
Когда цель и условия известны, маршрут переводят в команды из системы команд робота. Человек может описать путь словами «объедь препятствие», но робот выполнит его только в том случае, если у него есть понятные команды для перемещения, поворота или других нужных действий. Поэтому план сначала разбивают на конкретные шаги и проверяют, что каждый из них доступен исполнителю.
После команды перемещения меняется положение робота, а после поворота — его направление. Чтобы следующие команды привели к нужной точке, состояние робота нужно отслеживать после каждого действия. Например, команда «вперёд» означает движение в текущем направлении, поэтому без учёта предыдущего поворота легко ошибиться в маршруте.
Если робот оснащён датчиками, он может получать сведения о среде: например, обнаруживать препятствие. Тогда в алгоритме проверяют показание датчика и выбирают дальнейшие действия в зависимости от результата. Это нужно потому, что заранее неизвестно, какая ситуация встретится на маршруте; ветвление позволяет предусмотреть разные варианты поведения.
Готовый алгоритм проверяют на примере маршрута, последовательно выполняя каждую команду мысленно или в среде моделирования. При этом записывают, где находится робот, куда он направлен и что показывают датчики. Такая проверка обнаруживает неверные команды, пропуски и случаи, когда алгоритм не достигает цели, например при появлении препятствия.
| Команда или элемент управления | Что делает робот | Когда используется | Что нужно проверить |
|---|---|---|---|
| Перемещение вперёд | Двигается в текущем направлении | Когда нужно пройти часть маршрута | Расстояние, свободен ли путь, куда направлен робот |
| Поворот | Меняет направление, не меняя положения | Перед движением в другую сторону | Сторону поворота и новое направление |
| Проверка условия с помощью датчика | Получает сведения о среде и выбирает вариант действий | Когда возможны разные ситуации, например препятствие или свободный путь | Что именно измеряет датчик и какие действия соответствуют каждому результату |
| Повторение действий | Выполняет набор команд несколько раз | Когда одинаковые действия нужны многократно | Число повторений или условие завершения цикла |
| Остановка | Прекращает движение | При достижении цели или возникновении опасности | В каком месте и при каком условии робот должен остановиться |
Таблица помогает сопоставить требуемый результат с подходящей командой и заранее определить, что нужно проверить. Сначала убедитесь, что выбранное действие входит в систему команд робота. Затем проверьте, учитывает ли алгоритм положение, направление и возможные показания датчиков.
Задача 1. Роботу нужно проехать по прямому коридору от старта до отмеченной точки. Запишите последовательность команд. Решение:
Ответ: если робот изначально направлен вдоль коридора, алгоритм такой: повторить перемещение вперёд столько раз, сколько отрезков до отметки, затем остановиться. Точное число команд зависит от длины пути и шага робота. При проверке важно убедиться, что число перемещений совпадает с числом отрезков.
Задача 2. Робот должен пройти по коридору с поворотом направо, не задев стену. Составьте алгоритм движения. Решение:
Ответ: переместиться до поворота, повернуть направо, проехать по следующему участку и остановиться у отметки. Расстояния нельзя назначить без длины коридоров, поэтому их определяют по маршруту. Проверка после поворота помогает убедиться, что робот поедет вдоль коридора, а не в стену.
Задача 3. На маршруте может встретиться препятствие. Опишите алгоритм, который выбирает действие по показанию датчика. Решение:
Ответ: алгоритм содержит проверку условия и отдельные действия для разных результатов: при свободном пути двигаться, при препятствии остановиться или изменить маршрут. Конкретный поворот можно задать только тогда, когда известно, куда безопасно ехать. Повторная проверка нужна, если препятствия могут встретиться дальше.
Команда вне системы команд. Иногда записывают действие, которое понятно человеку, но робот не умеет его выполнять. Так происходит, если забыть о возможностях конкретного исполнителя и описать желаемый результат вместо команды. Проверьте каждое слово в алгоритме: для него должна существовать команда в системе робота.
Поворот принимают за движение в сторону. Поворот меняет направление, но не перемещает робота, и потому после него он остаётся в той же точке. Ошибку допускают, когда мысленно соединяют поворот с продвижением. Чтобы проверить себя, отмечайте отдельно положение и направление после каждой команды.
Не учитывают начальное положение и направление. Даже подходящие команды могут привести не туда, если робот начинает маршрут из другой точки или смотрит в другую сторону. Часто алгоритм составляют, представляя робота уже правильно ориентированным. Запишите начальные координаты или место и направление, затем пройдите команды по шагам.
Не предусматривают препятствие или другое показание датчика. Алгоритм для одного заранее известного маршрута может не сработать, если условия изменились. Это происходит, когда датчик есть, но его результат не включён в выбор действий. Проверьте алгоритм для обоих вариантов: путь свободен и препятствие обнаружено; для каждого должен быть задан понятный шаг.
Для управления роботами нужны понятия алгоритма, исполнителя и системы команд исполнителя: без них нельзя описать действия устройства. Ветвление и циклы помогают выбирать команды по условию и повторять их, поэтому они делают алгоритм гибче. Эта тема служит основой для программирования устройств, работы с датчиками и изучения автоматизированных систем. Во всех этих случаях программа задаёт действия, а устройство выполняет их и может реагировать на сведения о среде.
Почему нельзя дать роботу команду, которой нет в его системе команд?
Робот умеет выполнять только команды, предусмотренные его системой команд. Неизвестная команда для него не задаёт понятного действия, поэтому алгоритм не будет выполнен как задумано.
Чем поворот робота отличается от перемещения?
При повороте робот меняет направление, но остаётся на том же месте. При перемещении меняется его положение в пространстве.
Зачем учитывать направление робота при составлении маршрута?
Команды движения вперёд выполняются относительно текущего направления. Если не следить за ним после поворота, робот может поехать не к той точке.
Как робот может реагировать на препятствие?
Датчик может определить, что впереди есть препятствие. Алгоритм проверяет показание и выбирает действие: например, остановиться или повернуть.
Как проверить, что алгоритм управления приводит к цели?
Нужно пройти алгоритм по шагам, учитывая исходное положение робота и результат каждой команды. Проверка на разных возможных ситуациях помогает найти пропущенные действия и неверные условия.
§ 2. Управление роботами