Образовательная робототехника: основы программирования конструкторов Vex IQ на языке RobotС
Структура Vex IQ как уникальной линейки конструкторов. Особенности изучения программирования на языке RobotC в сфере образовательной робототехники. Исследование примеров простейших синтаксических конструкций, позволяющих программировать движения роботов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 21.02.2018 |
Размер файла | 19,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Образовательная робототехника: основы программирования конструкторов Vex IQ на языке RobotC
VEX IQ - это уникальная линейка конструкторов, сочетающая в себе разнообразие металлических конструкторов VEX и простоту использования пластиковых конструкторов. В комплекты VEX IQ входит большое количество пластиковых деталей, сенсоров, контроллеров. Огромное количество шестеренок, колес и других соединительных механизмов позволяет конструировать разнообразных мобильных роботов. Школьники в возрасте от 8 лет могут легко собирать роботов с помощью этой легкой интуитивно понятной платформой.
Структурные части VEX IQ соединяются и разъединяются без использования инструментов, что дает возможность учащимся быстро собирать и модифицировать робота. При помощи различных шестеренок, колес, соединительных элементов и т.д. можно выполнить окончательную доработку проекта и мобильного робота.
Мозговой центр робота использует технологии с большими функциональными возможностями и упрощает их до уровня пользователя, сохраняя высокий уровень. Можно подключить любую комбинацию датчиков и сервомотров (до 12 штук) к контроллеру робота, все они будут управляться встроенными программами или запрограммированным компьютером и совместимым программным обеспечением. Датчики VEX IQ, которые включают в себя датчики света, гироскоп, датчик расстояния, помогут учащимся создать уже более продвинутых роботов и дают больше возможностей для обучения.
Учителям предоставляется совершенно бесплатная образовательная программа VEX IQ, позволяющая дать ученикам ценные знания и навыки, необходимые в современном быстроразвивающемся мире. Бесплатное графическое программное обеспечение (похожее на Scretch), созданное компанией Modkit, дает пользователю возможность создавать программы для роботов, датчики восприятия этих команд и многое другое. Программа Robotc 4.0, разработанная для VEX IQ компанией Robomatter Inc. и одобренная Академией Робототехники Карнеги-Меллона, позволяет писать полноценные программы для робота на языке С.
Рассмотрим использование основ программирования на примере стандартной конструкции VEX IQ Clawbot при обучении в кружке по образовательной робототехнике.
После установки среды RobotC и сборки стандартной модели, необходимо произвести настройки среды. Зайдите в контекстное меню «File» и выберите пункт New… -> New file.
Подключим робота к компьютеру через USB порт, включим его и в программной среде установим:
1. Конфигурацию для работы с роботами данной серии. Для этого выберем Robot - Platform Type - Vex Robotics - Vex IQ. Так как наш робот является физическим устройством определим в меню Robot-Compiler Target - Physical Robot.
2. Дополнительную прошивку нажав кнопку «Firmware download». В результате в программном меню мозгового центра робота мы увидим две новые папки. В папку «Auto Pgms» будут устанавливаться по умолчанию программы, созданные пользователем.
Для программирования действий робота, необходимо изначально определить в какие порты мозгового центра подключены датчики и сервоматоры. Для этого нажмем кнопку «Motor and Sensor Setup». Так как наш робот является стандартной моделью, мы можем не прописывать все настройки на вкладыше «Standart Model» выбрать конфигурацию «Clawbot IQ With Sensor».
В результате мы получим:
Motor Ports (порты к которым подключены моторы):
VEX IQ Port 1: leftMotor (имена моторов)
VEX IQ Port 6: rightMotor
VEX IQ Port 10: armMotor
VEX IQ Port 11: clawMotor
Sensor Ports (порты к которым подсоединены датчики):
VEX IQ Port 2: touchLED (Touch LED)
VEX IQ Port 3: colorDetector
(Color Sensor/Hue Mode)
VEX IQ Port 4: gyroSensor (Gyro)
VEX IQ Port 7: distanceMM (Distance)
VEX IQ Port 8: bumpSwitch (Bumper Switch)
робот программирование язык
Редактировать настройку портов мы можем на вкладыше «Motors» (настройка подключения моторов) и «Devices» (настройка подключения датчиков). Обратите внимание, что на вкладке «Motors» для мотора управляющего правыми колесами включен вариант реверса. В данном окне вы увидите 12 строк, каждая из которых обозначает порты контроллера. В каждой строке доступны такие параметры, как: Port - номер порта, к которому подключается привод; Name - имя порта (присваивается для удобства работы с программой); Type - тип привода (обычный или шаговый); Reversed - выбор: обычное движение привода или инвертированное (при установленном флаге.
После сохранение настроек, среда сформирует первую часть кода, отвечающую за настройку портов.
#pragma config (StandardModel, «Clawbot IQ With Sensors»)
// *!! Code automatically generated by 'ROBOTC' configuration wizard!!* //
Теперь обратим внимание на структуру исходного кода. Главная задача, с которой начинается выполнение программы в RobotC, называется task main(). Тело задачи располагается между двумя фигурными скобками: открывающей и закрывающей. Все команды должны быть размещены между ними.
Первая функция, с которой нам стоит ознакомится displayTextLine. Данная функция форматирует текстовую строку и отображает ее на одной из 5 возможных текстовых строк: 0 - верхняя строка, 5 - нижняя строка. Остальная часть линии дополняется пробелами Эта команда перезапишет всю строку ЖК-экрана. Среди подаваемых параметров на первом месте указывают номер строки экрана для вывода, после этого форматируемую строку.
task main()
{
string s1 = «Hello, World!»; // определяем строку для вывода
displayTextLine (3, «%s», s1); // выводим строку на третьей линии
}
Реализуем задачу: Ехать вперед 3 секунды.
task main()
{
motor[motor1] = 127;
motor[motor6] = 127;
wait1Msec(3000);
}
Команда motor[] представляет собой массив управляющий элементами моторами. Действие «полный вперед» задается числом 127, «полный назад» - числом -127, остановка - числом 0. Действие этой команды можно считать мгновенным. После ее выполнения мотор включается и продолжает работать до тех пор, пока не будет остановлен другой аналогичной командой. Команда wait1Msec() задает время ожидания в миллисекундах (1 мс = 1/1000 с). Таким образом, wait1Msec(3000) означает «ждать 3 секунды».
Изменим нашу программу:
Нам требуется ехать вперед на полной скорости 1 секунду. Постоять 2 секунды и поехать назад на полной скорости 1 секунду.
Получим следующую программу:
task main()
{
motor[motor1] = 127;
motor[motor6] = 127;
wait1Msec(1000);
motor[motor1] = 0;
motor[motor6] = 0;
wait1Msec(2000);
motor[motor1] = -127;
motor[motor6] = -127;
wait1Msec(1000);
}
Упростим запись программы используя вызов функции управляющей движением.
void move (int nspeed, int ntime)
{
motor[motor1] = nspeed;
motor[motor6] = nspeed;
wait1Msec(ntime);
}
task main()
{
move (127, 1000);
move (0, 2000);
move (-127, 1000);
}
Команда nMotorEncoder[] - это обращение к датчику оборотов мотора, который возвращает значение в градусах. Каждый из трех элементов этого массива имеет 16-битное значение, что дает возможность хранить число в диапазоне -32768…32767, это соответствует 95 полным (360 градусов) оборотам моторов.
В длительно работающих программах следует время от времени обнулять значения массива во избежание переполнения.
nMotorEncoder[motorA] = 0;
Этим же действием датчик оборотов инициализируется для начала измерений.
Следующая программа обеспечит передвижение нашего робота на два полных оборота т.е. 720 градусов. Дополнительно применена конструкция цикла while, позволяющая зациклить проверку датчика оборотов мотора.
task main()
{
motor[motor1] = 127;
motor[motor6] = 127;
while (nMotorEncoder[motor1] < 720 && nMotorEncoder[motor6] < 720)
{}
}
Рассмотрим еще один вариант использования данной функции.
task main()
{
// Сброс
nMotorEncoder(port1) = 0;
nMotorEncoder(port6) = 0;
// Проверка датчиков
while (nMotorEncoder(port1) < 720 && nMotorEncoder(port6) < 720)
{
// Движение вперед
motor[port1] = 50;
motor[port6] = 50;
}
// Остановить моторы
motor[port1] = 0;
motor[port6] = 0;
}
Рассмотрим использование нескольких дополнительных функций:
Функция getMotorCurrent возвращает количество тока, потребляемого указанным двигателем в мА (миллиампер): Values range from 0 (0 amps) to +3723 (3.723 amps).
setMotorSpeed - эта команда так же задает скорость двигателя. Двигатель будет продолжать вращаться с заданной скоростью и направлением до тех пор, пока не будет присвоено новое значение скорости двигателю.
task main()
{
// Установить скорость motor1 до 50
setMotorSpeed (motor1, 50);
// Выводим количество тока, потребляемое данным двигателем
while(true)
{displayTextLine (2, «%d», getMotorCurrent(motor1));}
}
Рассмотрим работу с датчиком цвета (VEX IQ Port 3: colorDetector (Color Sensor/Hue Mode)). Робот должен двигаться вперед пока не увидит объект красного цвета. Для определения цвета используем функцию getColorName. При этом будет возвращено одно из двенадцати разных имен цветов в зависимости от цвета обнаруженного объекта. Если цвет не обнаружен, будет возвращен colorNone.
Цвета: colorNone, colorRedViolet, colorRed, colorDarkOrange, colorDarkYellow, colorYellow, colorLimeGreen, colorGreen, colorBlueGreen, colorBlue, colorDarkBlue, colorViolet.
Пример использование функции по различению цветов. На дисплее будет появляться один из определенных цветов.
task main()
{
string colorOfObject;
repeat(forever)
{
if (getColorName(port3) == colorRed)
{colorOfObject = «RED»;}
else if (getColorName(port3) == colorBlue)
{colorOfObject = «BLUE»;}
displayTextLine (2, «%s», colorOfObject);
}
}
Рассмотрим решение поставленной выше задачи.
void move (int nspeed, int ntime)
{
motor[motor1] = nspeed;
motor[motor6] = nspeed;
wait1Msec(ntime);
}
task main()
{
move (127, 1000);
waitUntil (getColorName(port3) == colorRed);
move (0, 2000);
}
В обеих программах использовались циклы repeat(forever) и waitUntil. Учащиеся при обучении программированию в образовательной робототехнике наглядно видят использование таких конструкций как ветвления и циклы, применение логических и арифметических операций. Программирование разнообразных задач по передвижению робота и взаимодействию его с окружающей средой позволяют поднять мотивацию и интерес учащегося к изучению программирования.
Таким образом, образовательная робототехника позволяет поднять процесс обучения программированию на качественно новый уровень, ставить перед обучающимся новые задачи соответствующие современным требованиям информационного общества.
Список литературы
робот программирование язык
1. Филиппов С.А. Робототехника для детей и родителей. - СПб.: Наука, 2013. 319 с.
2. Горнов О.А. Основы робототехники и программирования с Vex EDR. - М: Издательство «Экзамен», 2016. - 160 с.
3. VEX Robotics // URL: http://robotgeeks.ru/collection/vex-iq (дата доступа 01.12.2017)
4. Революция STEM-образования // Vex IQ. URL: http://vex.examen-technolab.ru/vexiq/ (дата обращения 10.11.2017)
Размещено на Allbest.ru
...Подобные документы
Класс как специальная структура для хранения разнотипной информации о физическом объекте. Порядок объявления класса, его специальные элементы-функции. Создание указателя на объект. Особенности конструкторов и деструкторов. Собственные операции класса.
курсовая работа [483,1 K], добавлен 07.04.2014Понятие и внутренняя структура показателей, имеющих отношений к основам программирования на алгоритмическом языке СИ: указатели и массивы, передача параметров по ссылке. Исследование примеров программ, иллюстрирующих работу с указателями и массивами.
лекция [134,4 K], добавлен 26.07.2013Основные этапы определения радиуса и центра окружности, проходящей через три различные точки заданного множества точек. Особенности построения алгоритма на языке программирования. Составление тестовых примеров для демонстрации возможностей программы.
контрольная работа [103,9 K], добавлен 21.08.2013Исследование общих принципов программирования на языке Assembler для 32-х разрядных и 64-х разрядных процессоров. Изучение основных отличий архитектур i686 и amd64. Работа со стеком. Передача параметров в функции. Смена способа адресации внутри программы.
контрольная работа [118,2 K], добавлен 10.02.2015Характерные черты программирования на алгоритмическом языке СИ (алфавит, операции, специфика операторов, комментарии и другие элементы). Аналитический обзор и рассмотрение примеров программ, иллюстрирующих особенности применения основных операторов СИ.
презентация [251,0 K], добавлен 26.07.2013Обзор образовательных ресурсов для реализации дистанционного обучения. Разработка рабочей программы курса видеолекций "Основы программирования на языке C+". Подбор контента, аппаратных средств. Проведение чат-занятий, использование сетевой технологии.
дипломная работа [155,0 K], добавлен 28.06.2014Язык программирования Турбо Паскаль. Запись алгоритма на языке программирования и отладка программы. Правила записи арифметических выражений. Стандартное расширение имени файла, созданного системным редактором. Составной оператор и вложенные условия.
курсовая работа [75,0 K], добавлен 21.03.2013Особенности разработки и реализации обучающей программы и схемы алгоритмов на языке программирования С++. Понятие равномерной и неравномерной дискретизации. Представление информации (составление кода) в виде таблицы перекодировки или многочлена.
курсовая работа [704,6 K], добавлен 06.03.2013Характеристика основных разделов программирования, изучаемых в курсе программирования на языке С++. Описание внутренних переменных, входных и выходных данных. Особенности использования компилятора Microsoft Visual Studio 2008. Руководство пользователя.
курсовая работа [18,8 K], добавлен 14.12.2010Сущность и функции языков программирования, их эволюция и оценка популярности различных видов. Особенности компьютерных программ, разработанных на компилируемом, интерпретируемом или смешанном языке. Основные классы и иерархия языков программирования.
презентация [873,4 K], добавлен 23.01.2013Основные понятия и структура обработчика на языке Pascal. Элективные курсы по информатике в системе профильного обучения. Элективный курс "Программирование в среде Delphi". Методические материалы по изучению программирования на языке Object Pascal.
методичка [55,4 K], добавлен 08.12.2010История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.
курсовая работа [795,9 K], добавлен 14.12.2012Аналоги текстовых редакторов с русскоязычным интерфейсом. Разработка и тестирование программного продукта, позволяющего работать с текстом и файлами в редакторе на языке программирования, основанным на русском языке. Алгоритм функционала программы.
дипломная работа [2,8 M], добавлен 21.07.2013История развития, характеристика, предназначение и особенности языка программирования Delphi. Разработка проекта создания кроссворда на объектно-ориентированном языке Delphi, который состоит из 19 вопросов по горизонтали и 16 вопросов по вертикали.
курсовая работа [970,5 K], добавлен 15.05.2014Создание web-сайта "Мастер по обработке цифровой информации" на языке программирования HTML. Структура и тэги тела документа. Исследование программ, с помощью которых можно написать web-страницы. Особенности работы с файлами разных форматов и расширений.
курсовая работа [144,2 K], добавлен 31.10.2013Исследование принципов объектно-ориентированного программирования на базе языка программирования С++. Разработка программного комплекса для ведения учёта памятников города. Описание процессов сортировки, поиска, формирования статистики по памятникам.
курсовая работа [782,4 K], добавлен 26.05.2014Теоретическая и практическая реализация комплексной арифметики на языке программирования Си. Разработка программы, производящей арифметические действия с комплексными числами. Автоматизации решения комплексных чисел. Матричная и стандартная модель.
курсовая работа [495,4 K], добавлен 21.01.2012Анализ затрат и прибыли. Создание программного проекта для решения задачи о прибыли и убытках на языке программирования C#. Использование функций и переменных, компиляция программы. Алгоритмы и структуры данных. Тестирование программного обеспечения.
курсовая работа [1,2 M], добавлен 03.01.2015Векторная компьютерная графика. Графические примитивы. Графические возможности языка программирования Pascal. Методические рекомендации к изучению графики в языке программирования Pascal. Построение графиков функций.
курсовая работа [28,3 K], добавлен 13.06.2007Исследование возможностей и областей использования языка программирования JavaScript. Сравнительный анализ языков программирования JavaScript и PHP. Разработка интерактивного Web-приложения на примере теста по теме "Программирование на языке Delphi".
практическая работа [26,0 K], добавлен 04.02.2015