Оснащенным датчиками касания

      Комментарии к записи Оснащенным датчиками касания отключены

Внешний видмобильного робота LEGO Mindstormsс датчикамикасания

Цель занятия: создать виртуальный прибор-программу в среде LabVIEW, использующую вложенные логические структуры Case и предназначенную для управления мобильным роботом LEGO Mindstorms, обходящим встречные препятствия при помощи двух датчиков касания (нажатия).

Идея и алгоритм программы. Для практического решения задачи используется трёхколёсный LEGO-робот с двумя ведущими задними колесами, сервоприводы которых (исполнительные органы объекта управления) подключены к портам микрокомпьютера NXT. Информацию о появлении препятствия робот получает от двух датчиков касания, расположенных в его передней части и тоже подключённых к портам микрокомпьютера.

В собранной для лабораторного занятия конструкции робота (см. рис.):

  • с левой стороны по ходу движения размещёны:
  • датчик касания № 1, подключённый к порту 3 микрокомпьютера;
  • колесос сервоприводом, подключённым к порту Амикрокомпьютера;
  • с правой стороны по ходу движения размещёны:
  • датчик касания № 2, подключёный к порту 4 микрокомпьютера;
  • колесос сервоприводом, подключённым к порту С микрокомпьютера.

<p>Требуется разработать в среде LabVIEW управляющую программу (виртуальный прибор), обеспечивающую объезд роботом встречных препятствий. Остановка робота должна произойти через заданное время.

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

  • ситуация 1 – контакта с препятствием нет – датчики не срабатывают;
  • ситуация2 – контакт с препятствием, расположенным перепендикулярно вектору скорости робота – оба датчика срабатывают одновременно;
  • ситуация 3 – контакт с препятствием слева по ходу движения робота – срабатывает левый датчик (№ 1);
  • ситуация 4 – контакт с препятствием справа по ходу движения робота – срабатывает правый датчик (№ 2).

Для обхода препятствия, встреченного роботом при движении в направлении I, он должен совершить соответствующий манёвр II – отъехать немного назад, а затем продолжить прямолинейное движение в направлении III (см.рис.).

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

Датчик № 1 нажат ? Датчик № 2 нажат ?
н е т д а
Н Е Т СИТУАЦИЯ 1 Препятствиявпереди нет – Манёвр не нужен! Моторыпродолжают работать синхронновперёд ( = ). СИТУАЦИЯ 4 Препятствие справа– ОТЪЕЗД НАЗАДВПРАВО: моторы работают синхронноназад, .
Д А СИТУАЦИЯ 3 Препятствие слева–ОТЪЕЗД НАЗАДВЛЕВО: моторы работают синхронноназад, . СИТУАЦИЯ 2 Препятствие – прямо по курсу – ОТЪЕЗД НАЗАД: моторы работают синхронно назад ( ) или ( ).

Программа управления движением таким роботом требует использования в среде LabVIEW вложенных логических структур Case (Выбор).

ИнструментCase (Выбор) среды LabVIEW доджен «научить» робота принимать решение и является аналогом условного оператора (оператора ветвления) If традиционных языков программирования высокого уровня (Паскаль и др.). В данной программе оператор выбора Case, в отличие от оператора If, оперирует не логическим выражением, а переменной-селектором. По ходу выполнения оператора Case, значение переменной-селектора (в данном случае оно зависит от того, нажат датчик или нет) сравнивается с метками-значениями (1и0). Как только совпадение будет найдено, выполняется набор команд для данной метки и происходит выход в основную ветку программы. Если совпадений не будет, то выполняется альтернативный блок.

Последовательность разработки в среде LabVIEW виртуального прибора:

1.Определим набор параметров задачи:

  • общее время Т движения робота до принудительной остановки (в миллисекундах);
  • мощность NБ «быстрого» мотора при отъезде робота от встретившегося препятствия (для манёвра IIна рис. 2 – это мощность мотора А);
  • мощность NМ «медленного» мотора при отъезде робота от встретившегося препятствия (для манёвра IIна рис. 2 – это мощность мотора С).

2. Разместим структуру «циклWhile» (см. ЛЗ-2) и оформим условие выхода из цикла после окончания заданного времени (для примера: 30 секунд = 30000 msec) движения робота. Кроме уже известных элементов блок-диаграммы, используем элементы Reset Timer и Read Timer .

Они размещены среде LabVIEW по адресу:

Function NXT Robotics NXT I/O

Complete Sensors.В результате циклWhileимеет следующий первоначальный вид.

3. Разместим на блок-диаграмме структуруCase датчика 1 (Port 1), которая состоит из двух поддиаграмм вариантов и отражает две ситуации по датчику 1:

нажат –Trueи ненажат –False.

СтруктураCase размещена по адресу:

Function NXT Robotics NXT Programming Structures.

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

Промежуточный вид программы со структурой Case 1-го датчика (ещё не заполненной командами моторам робота) выглядит следующим образом для обоих вариантов поддиаграммы.

4.Следующий шаг программирования: внутрь структуры выбораCase датчика1 (Port 1) вставляем аналогичную структуру выбораCase для датчика 2 (Port 2). При этом не принципиально, какая структра из двух (датчика 1 или датчика 2) будет внешней, а какая – внутренней, так как в данной задаче нет предпочтительного поведения робота на реакцию датчика.

В результате создания двух структур Case с двумя поддиаграммами вариантов обеспечена возможность реализовать алгоритм управления роботом для 4-х (2х2=4) ситуаций, приведённых в таблице.

5.Заполним каждую поддиаграмму тем набором команд управления моторами, который соответствует конкретной ситуации из таблицы, и обеспечим остановку обоих моторов после окончания выполнения программы.

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

  • общая продолжительность движения робота по программе Т = 30000 миллисекунд;
  • маршевая синхронная мощность моторов вне препятствий NМ = 75 ;
  • продолжительность манёвра (отъезда II) робота t = 1200 миллисекунд;
  • мощность «быстрого» мотора при объезде препятствияNБ = 90 ;
  • мощность «медленного» мотора при объезде препятствияNМ = 20;

имеет вид, представленный на последующих страницах.

Примечание:

В поддиаграмме False для датчика 1 и False для датчика 2 (ситуация 1 в таблице) следует применить вместо команды включения всех (All Ports) моторов вперёд другую функцию (см. рисунок справа). Эту функцию можно найти на пути Function NXT Robotics NXT I/O Complete Motors Steering On .

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

Параметр «подруливания» Steering (регулирование) задаётся в качестве константы в нижней части пиктограммы. Если, например, Steering = -100, то быстрее будет работать мотор порта, указанный слева (А на рисунке). Если задать Steering = 100, то быстрее будет работать мотор порта, расположенный справа (С на рисунке). Если задать Steering = 0 (как рисунке), то моторы будут работать синхронно, а траектория движения робота будет строго прямолинейной.

6.

Статьи к прочтению:

Датчик касания


Похожие статьи: