(495) 240-82-80ПН-СБ с 10:00 до 18:00
We speak English

Урок 5.1. Знакомство с роботом Rover

На этом уроке вы научитесь измерять расстояние от передней части робота-вездехода TI-Innovator Rover до препятствия. После произведенных измерений программа может отображать полученные данные двумя разными способами. Также вы познакомитесь с еще одним датчиком робота, который считывает цвета, он находится на дне прибора.

Вы научитесь:

  • Считывать измерения, сделанные с помощью робота-вездехода Rover
  • Отображать полученные измерения на дисплее с помощью функции print()
  • Отображать полученные измерения на дисплее с помощью функции text_at()
  • Работать с разными единицами измерения

Два небольших цилиндра спереди робота-вездехода Rover - это не фары. Это ультразвуковые локаторы. Один из этих локаторов посылает неслышный для человеческого уха звук, а второй улавливает эхо, когда звук встречается с препятствием. Затем внутреннее программное обеспечение вычисляет расстояние до этого препятствия, используя скорость звука и время, за которое звук распространяется от препятствия до датчика. То есть, по следующей формуле: D = V * T

Все вышеперечисленные вычисления происходят моментально!

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

1. Начните свою работу с создания нового проекта Rover Coding. В этом уроке для завершения работы цикла вы будете использовать удобный способ - нажатие на кнопку esc:

while get_key() != "esc":
  block

Эту функцию можно найти в нескольких меню, но так как вы используете команды, связанные с управлением роботом-вездеходом Rover, лучше поискать ее в следующем меню: menu > TI Rover > Commands.

2. Добавьте три выражения в блок с оператором while для того, чтобы:

a) считывать расстояние от робота Rover до предмета:

dist = rv.ranger_measurement()

(его можно найти в меню: menu > TI Rover > Inputs.)

b) отображать полученные данные на экране:

print("Distance= ",dist)

c) немного приостанавливать обработку команд перед тем, как считывать следующие данные измерения расстояния:

sleep(.5)

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

Можете ли вы определить, какая единица измерения расстояния была использована (футы, метры и т.д.)?

Примечание для учителя: По умолчанию единицей измерения расстояния роботом является метр.

3. Если вы не хотите, чтобы отображаемые данные измерения опускались вниз по экрану по мере поступления новых данных, для большего удобства можно выбрать другой способ отображения значений с помощью выражения text_at(), которое можно найти в модуле ti_plotlib. Если вы знакомы с предыдущими уроками по работе с микроконтроллером TI-Innovator Hub (Уроки 1, 2 и 3), то вы уже должны были научиться использовать эту функцию. Но в данном случае вам необходимо указать (рабочее) название модуля, так как он импортируется в шаблон программы для работы с роботом Rover:

import ti_plotlib as plt

Данное выражение требует, чтобы перед любой функцией, находящейся в модуле ti_plotlib, использовалось "альтернативное" имя plt. Также в этом модуле вы будете использовать функцию cls(), которая очищает экран от данных.

Примечание для учителя: В языке Python модуль ti_pltlib используется для построения точек, линий или диаграмм рассеяния двух списков на специальном графическом "холсте". Но он не заменяет приложение Graphs (Графики) на калькуляторе TI-Nspire CX II-Т.

Если у вас нет опыта в работе с языком Python, ознакомьтесь с краткой информацией о функциях импорта:

  • from xxx import * использует функции из модуля xxx по имени
  • import xxx приписывает всем функциям в модуле хxx название xxx.
  • import xxx as yyy приписывает всем функциям в модуле хxx название yyy ("альтернативное")

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

4. Теперь добавьте следующие функции:

plt.cls()
plt.text_at(...)

Их можно найти в меню menu > TI PlotLib > Draw.

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

5. Преобразуйте выражение print() в #комментарий, нажав ctrl+T, когда курсор будет находиться на самом выражении print().

Добавьте две функции plt

plt.cls()
plt.text_at(7, str(dist), "left")

Их можно найти в меню menu > TI PlotLib > Draw.

Еще раз про выражение str(dist): Функция plt.text_at() может отображать только "текст", который является либо текстовой строкой в кавычках, либо переменной, содержащей строку. Элемент dist является переменной, содержащей число, поэтому его необходимо преобразовать в строку с помощью функции str(), которую можно найти в меню:

menu > Built Ins > Type

Ряд номер 7 является центральной вертикальной линией в 13-ти линейной схеме на экране.

Вы можете ускорить процесс измерения расстояния, используя меньшее значение выражения sleep().

Вы только что создали цифровую линейку!

В следующем уроке вы будете использовать полученные данные в командах, чтобы робот-вездеход Rover при движении не столкнулся с препятствием.

Примечание для учителя: Для уменьшения мерцания изображения можно не использовать функцию cls().
Учащиеся также могут выравнивать содержимое экрана либо "по центру", либо "справа". Но тогда будет необходимо использовать функцию cls(), так как старые данные могут быть не полностью стерты и заменены на новые.