Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Робоплатформа - движение и сенсоры.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
192 Кб
Скачать
☆

Управляемость (точность отработки алгоритма)

Наш робот уже может управляться с клавиатуры и вы можете "гонять" его по экрану. Если вы выполнили предыдущие задания, то знаете как сделать робота более управляемым - то есть заставить его поворачиваться на больший или меньший угол, изменять скорость его движения а также задавать начальную ориентацию.

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

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

Даже установив так называемую "обратную связь" - то есть специальные устройства, которые смогут сказать, что робот сделал действие с какой то точностью - мы все равно будем иметь какую то погрешность, а также стоимость самого робота начнет расти.

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

Блоки поворота на случайную величину при движении вперед и назад нужны, потому что реальный робот при движении вперед обычно откланяется в ту или иную сторону из-за погрешности работы двигателей.

Вы можете отследить текущее перемещение робота с помощью "пера" в Scratch. Для этого добавьте следующий блок:

Теперь по нажатию клавиши "Пробел" робот будет оставлять за собой "след".

Важные вещи: В код начальной инициализации после задания направления не забудьте добавить "кирпичик" Шаблон:Меню. Также вы можете установить начальные координаты робота, отличные от (0,0).

Задание: Нарисуйте роботу дорогу, похожую на изображенной на рисунке, и загрузите ее в качестве фона Сцены. Попросите ваших друзей или одноклассников проехать по данной дороге, а также потренируйтесь сами управлять "почти" реальным роботом.

600px

Задание: Поэкспериментируйте c величинами случайных чисел. Чем больше данное число, тем хуже работает робот. Что произойдет, если величина случайного числа будет больше самой величины действия?

А теперь сделаем так, чтобы при нажатии стрелки "вверх" робот начинал двигаться вперед, а при нажатии "вниз" останавливался. Для этого нужно заметь код алгоритмя по нажатию этих стрелок на такой единый блок:

Что он делает? При нажатии на флажок запуска начинается работа бесконечного цикла и идет проверка условия Если нажата стрелка вверх. Как только оно выполнено, начинает выполняться условие Повторять до, которое будет выполняться в цикле, пока не будет нажата стрелка "вниз". Внутри цикла условия помещен код движения вперед с погрешностью.

Вопрос: Когда управляемость роботом лучше - при использовании прерывистого или непрерывного движения? Что менее утомительно для управляющего роботом? Какой способ управления вы бы предпочли?

Если робот едет слишком быстро, уменьшите значение шага и случайной величины к примеру до 5 (а случайную величину от 1 до 2) или добавить в цикл после "кирпичика" Идти задержку ("кирпичик" ) в 0.2-0.5 секунд.

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

Важные вещи:

Галерея с примерами расположена по адресу: http://scratch.mit.edu/galleries/view/157855