Программирование моторов: команда Move
Задание 2.2. Сборка тестовой модели.
- Соберите робота "Пятиминутка" по инструкции:
- Обратите внимание на названия портов, к которым подключены моторы.
Задание 2.3. Программа движения робота.
- Создайте программу, показанную на рисунке.
- Внимательно рассмотрите настройки блока Move. Что, по-вашему, будет делать робот в соответствии с этой программой?
- Проверьте свои предположения, загрузив программу на робот и запустив её. Выполнил ли робот то, что вы ожидали?
- Не отключая USB-кабель вращайте один из моторов рукой и одновременно наблюдайте за показаниями в поле обратной связи. В каких единицах выдаётся информация в этом поле?
Задание 2.4. Движение одним мотором [1].
Измените предыдущую программу так, чтобы робот вращал только один из двух подключенных моторов. Установите длительность вращения в восемь оборотов. Понаблюдайте, как меняется характер движения робота в зависимости от направления движения.
Имейте в виду, что длины USB-кабеля может не хватить на восемь оборотов. Поэтому не забудьте отсоединить его перед запуском программы на выполнение!
Заполните таблицу:
Мотор | Направление | Характер движения |
---|---|---|
Левый | Вперёд | |
Левый | Назад | |
Правый | Вперёд | |
Правый | Назад |
При выполнении дальнейших заданий Вам понадобится тестовое поле, которое поставляется в комплекте с роботом.
- Изучите доступные параметры продолжительности движения, изменяя их в поле Duration.
- Установите Next Action в Brake и проведите замеры расстояний, которые проезжает робот при различных значениях параметраDuration и заполните таблицу:
Количество | Тип | Расстояние (см) |
---|---|---|
1 | Seconds | |
2,5 | Seconds | |
1 | Rotations | |
2 | Rotations | |
360 | Degrees | |
720 | Degrees | |
Unlimited |
Обратите внимание, что при установке длительности движения в Unlimited робот не движется до бесконечности, как мы могли бы ожидать. Напротив, едва начав движение он останавливается и программа завершается. Чтобы разобраться в этом поведении надо понять, как работает блок Move в режиме Unlimited. При запуске программы первым запускается блок Move (он у нас единственный). Если в этом блоке установлена длительность движения, отличная от Unlimited, то блок отрабатывает положенное время или количество оборотов и программа завершается. Если установлено движение Unlimited, то моторы запускаются в параллельном режиме. Это значит, что после включения моторов программа не ждёт, пока завершится выполнение блока Move, а переходит к следующему блоку программы; предполагается, что моторы позже будут остановлены "вручную". Итак, запустив моторы, программа переходит к следующему блоку. Но его в нашей программе нет, поэтому программа завершается: она достигла своего конца. Вместе с завершением программы автоматически останавливаются все моторы. Этим и объясняется такое необычное, на первый взгляд, поведение нашего робота.
Следует иметь в виду и то, что задание длительности движения в секундах не совсем корректно, т. к. при понижении заряда батареи за то же время мотор совершит меньшее число оборотов.
Задание 2.6. Повороты при помощи Steering.
Установите слайдер Steering в любое положение, отличное от центра, и загрузите программу на робот. Как ведёт себя робот? Изменяя положение слайдера и наблюдая за поведением робота, ответьте на следующие вопросы.
- В какую сторону поворачивает робот?
- От чего зависит крутизна поворота?
- При каком положении слайдера поворот наиболее крутой?
- В каком направлении вращаются ведущие колёса при поворотах разной крутизны?
- Где расположен центр поворота при поворотах разной крутизны?
Итак, вы должны были заметить, что самый быстрый поворот производится двумя моторами при перемещении слайдера Steering до упора. При этом колёса вращаются в противоположных направлениях, центр поворота находится в середине оси, соединяющей колёса.
Когда второй двигатель выключен (слайдер Steering в этот момент недоступен) робот осуществляет плавный медленный поворот одним мотором; центр поворота - неподвижное колесо. Движение робота похоже на работу циркуля.
Промежуточные положения слайдера Steering заставляют робот двигаться по дуге. При этом внутренне колесо, т. е. то, в направлении которого происходит поворот, описывает дугу меньшего радиуса, чем внешнее. Центр поворота совпадает с центром окружностей, которые описывают колёса.
Напишите программу для поворота робота (не мотора!) на месте на 90°; на 180°; на 270°; на 360°. Назовём способ поворота быстрым, если робот вращает два колеса в противоположные стороны (слайдер Steering передвинут до упора); назовём его плавным, если поворот осуществляется одним колесом (второе неподвижно).
Для замеров углов поворотов установите робот в центре тестового поля так, чтобы заднее колесо"смотрело" на 180°, а ось ведущих колёс совпадала с красной полосой.
Занесите в таблицу углы поворотов двигателей В и С.
Угол поворота робота | Способ поворота | Угол поворота моторов |
---|---|---|
90° | Быстрый | |
180° | Быстрый | |
270° | Быстрый | |
360° | Быстрый | |
90° | Плавный | |
180° | Плавный | |
270° | Плавный | |
360° | Плавный |
Попробуйте использовать полученные данные для поворота на заданное количество градусов в другую сторону. Получилось?
Задание 2.8. Гонки.
Напишите программу для движения робота вокруг коробки от набора Lego Mindstorms. Устройте соревнование в группе по скоростному объезду коробки: один заезд - три круга.