Как создают программы для роботов

Содержание

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

Немного истории

Scratch была разработана в MIT Media Lab, исследовательской группе Массачусетского технологического института. Первая версия была придумана программистом Митчеллом Резником и выпущена в 2007 году. Scratch 1.0 была написана на языке Squeak и ориентирована на конструктор LEGO. В 2008 году Scratch была модифицирована для микроконтроллерного модуля Arduino. Версия Scratch 2.0 вышла в мае 2013 года.

13 мая 2014 года исходный код Scratch 2.0 был открыт под лицензией GPLv2.

Основные характеристики

Как мы уже упоминали, с помощью Scratch можно создавать игры, анимационные истории, также управлять роботами. Среда программирования Scratch состоит из объектов, которые называются спрайты. Каждый спрайт состоит из графического набора кадров и сценария-скрипта. Действие программы происходит в окне размером 480×360 пикселей с центром координат в середине сцены.

Как создать РОБОТА

Для программирования сценариев используется метод «потянуть и отпустить» (drag-and-drop). Это означает, что перетаскивая блоки в область скриптов, вы задаете определенные команды для исполнения каких-то процессов.

По функциональным возможностям блоки делятся на 8 групп, и их принадлежность к этим группам обозначается цветом. Синий цвет блоков отвечает за движение, сиреневый за внешность спрайта, розовый за звук, зеленый – это перо, он отвечает за «черепашью графику», желтый отвечает за управление конструкциями, голубой соответствует сенсорам, светло-зеленый отвечает за арифметико-логические операции и, наконец, оранжевый отвечает за какие-то другие задачи для конкретного объекта.

Блоки бывают трёх видов: блоки стека, блоки заголовков и блоки ссылок. Первые можно копировать и перемещать как один общий блок. Блоки заголовков отвечают за связь между сообщениями от клавиатуры и мыши, а также за передачу спрайтов и объектно-ориентированное программирование. Блоки ссылок отвечают за заполнение внутренних полей других блоков. Конечно, у Scratch отсутствует масса функций реального языка программирования, но те, что имеются, достаточны для создания довольно сложных роботов и игр.

Программирование робота в Scratch

Рассмотрим принцип программирования и работы со средой Scratch на примере простого самодельного робота-машинки.

В основе робота находится плата Марсоход или ScratchBoard. Она должна посылать на компьютер значения некоторых датчиков (четыре аналоговых датчика A,B,C,D, датчик света, датчик звука). Из компьютера на плату могут подаваться команды одному двигателю: «вкл»/«выкл», направление и мощность от 0 до 100.

Исходный код для программирования скачивается с официального сайта среды: https://scratch.mit.edu. Программа управления мотором в среде Scratch может выглядеть примерно так:

Скрипты языка Scratch могут задавать подключенному через ScratchBoard мотору мощность. К примеру, если мощность равна нулю, то первый мотор может работать, а второй нет. Если мощность 50, то могут работать оба мотора. Если мощность установлена 100, то может работать второй мотор, но не первый. Включаются они по команде «мотор вкл», а выключаются по команде «мотор откл».

Вся машинка в сборе выглядит следующим образом: два мотора на платформе на гусенечном ходу, плата «Марсоход», оптические датчики-глаза, модуль Bluetooth (в данном примере используется версия LMX9838). Чтобы она ездила и следовала по линии, можно своими руками сделать карту.

Видео машинки, программируемой в Scratch:

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

Источник: www.nanojam.ru

Образовательная робототехника: основы программирования конструкторов VEX IQ на языке RobotC

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

Ключевые слова

ПРОГРАММИРОВАНИЕ, РОБОТОТЕХНИКА, ОБРАЗОВАНИЕ, КОНСТРУИРОВАНИЕ

Читайте также:
Ableton live описание программы

Текст научной работы

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[] представляет собой массив управляющий элементами моторами. Действие «полный вперед» задается числом 127, «полный назад» — числом –127, остановка — числом 0. Действие этой команды можно считать мгновенным. После ее выполнения мотор включается и продолжает работать до тех пор, пока не будет остановлен другой аналогичной командой. Команда wait1Msec() задает время ожидания в миллисекундах (1 мс = 1/1000 с). Таким образом, wait1Msec(3000) означает «ждать 3 секунды».

Читайте также:
Гимп как пользоваться этой программой

Изменим нашу программу:

Нам требуется ехать вперед на полной скорости 1 секунду. Постоять 2 секунды и поехать назад на полной скорости 1 секунду.

Получим следующую программу:

task main()

Упростим запись программы используя вызов функции управляющей движением.

void move (int nspeed, int ntime) < motor[motor1] = nspeed; motor[motor6] = nspeed; wait1Msec(ntime); >task main()

Команда 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) else if(getColorName(port3) == colorBlue) displayTextLine(2, «%s», colorOfObject); > >

Рассмотрим решение поставленной выше задачи.

void move (int nspeed, int ntime) < motor[motor1] = nspeed; motor[motor6] = nspeed; wait1Msec(ntime); >task main()

В обоих программах использовались циклы repeat(forever) и waitUntil. Учащиеся при обучении программированию в образовательной робототехнике наглядно видят использование таких конструкций как ветвления и циклы, применение логических и арифметических операций. Программирование разнообразных задач по передвижению робота и взаимодействию его с окружающей средой позволяют поднять мотивацию и интерес учащегося к изучению программирования.

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

Компьютерное моделирование на уроках информатики в среде Maxima

  1. Векслер В.А.

Изучение «дискриминационных объединенных» типов F#, как аналога «наследственной иерархии», в школьном курсе информатики

  1. Векслер В.А.

Тенденции развития дополнительных образовательных программ для взрослых в сфере информационных технологий

  1. Векслер В.А.

Адаптивное тестирование, как вид объективного контроля знаний, умений и навыков обучаемых и одного из способов повышения качества образования

  1. Отроков Д.А.
  2. Векслер В.А.

Изучение объектно-ориентированного программирования в школьном курсе информатики на базе языка программирования F#

  1. Векслер В.А.

Список литературы

  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)

Цитировать

Векслер, В.А. Образовательная робототехника: основы программирования конструкторов VEX IQ на языке RobotC / В.А. Векслер. — Текст : электронный // NovaInfo, 2017. — № 75. — С. 158-165. — URL: https://novainfo.ru/article/14340 (дата обращения: 26.06.2023).

Поделиться

Настоящий ресурс содержит материалы 16+

Источник: novainfo.ru

Программируем в Microsoft Robotics Developer Studio 4, реальные и виртуальные роботы, часть 1

Программируем в Microsoft Robotics Developer Studio 4, реальные и виртуальные роботы, часть 1

2013-01-21 в 9:28, admin , рубрики: микроконтроллеры, Программинг микроконтроллеров, Программирование, робототехника, метки: микроконтроллеры, Программирование, робототехника

Введение

Здравствуйте, глубокоуважаемые хабрачане! В своих постах я хочу вас познакомить с продуктом корпорации Microsoft — Robotics Developer Studio 4 (далее MRDS 4), расскажу как запрограммировать робота реального и виртуального. Двигаться мы будем от простого к сложному. В качестве испытуемых роботов будем использовать набор LEGO Mindstorms NXT 2.0 (наиболее удачный, на мой взгляд, вариант) и микроконтроллер Basic Stamp (наименее удачный вариант). И так, приступим!

Читайте также:
Программа инженерно экологических изысканий пример

Краткий обзор платформы Microsoft Robotics Developer Studio 4

В 2006 году Microsoft объявила о создании платформы Microsoft Robotics Developer Studio (MRDS). MRDS – это Windows – ориентированная среда разработки приложений для робототехники и симуляции. В настоящее время актуальной является версия Microsoft Robotics Developer Studio 4.
Среди особенностей: язык визуального программирования VPL, Web – и Windows – ориентированные интерфейсы, среда симуляции VSE, упрощенный доступ к датчикам, микроконтроллеру и исполнительным механизмам робота, поддержка языка программирования C#, библиотеки для многопоточного программирования и распределенного выполнения приложений CCR и DSS, поддержка многих робототехнических платформ (Eddie, Boe — Bot, CoroBot, iRobot, LEGO NXT и т.д.).

Краткий обзор набора NXT

  • 32-битный микроконтроллер ARM7 с 256 КБайт FLASH памяти и 64 КБайт RAM памяти
  • 8-битный микроконтроллер ARM c 4 Кбайт FLASH памяти и 512 Байт RAM памяти
  • Радиомодуль Bluetooth V 2.0
  • USB-порт
  • 3 разъема для подключения сервоприводов
  • 4 разъема для подключения датчиков
  • LCD дисплей разрешением 100×64 пикселей
  • Динамик
  • Разъем для 6 батареек типа AA
  • Ультразвуковой сенсор
  • Два тактильных датчика (Датчики касания)
  • Датчик опредения цвета

image

Микрокомпьютер NXT с подключенными датчиками и приводами

И конечно же в наборе находятся разнообразные детали (блоки, кубики) из которых будут собраны исполнительные механизмы и несущая конструкция. В наших начинаниях мы будем использовать модель робота TriBot, т.к. его виртуальная копия имеется в симуляторе MRDS. Инструкцию по сборке данного робота можно найти на сайте фирмы Lego mindstorms.lego.com. Так же нам понадобиться Bluetooth-модуль на компьютере для подключения NXT.

image

Модель TriBot

Пишем приложение для робота

Напишем простое приложение для движения по прямой определенной длинны, проверим работоспособность приложения на виртуальной модели робота, а затем на реальной. Запускаем визуальный язык программирования VPL. Слева из окна Basic Activities добавим три блока Data и блок Join.

Ниже Basic Activities находится окно Services из него добавим сервисы Simple Dialog (сервис который выводит окно с кнопками) и Generic Differential Drive (сервис привода). Далее необходимо соединить блоки в диаграмму.

В одном блоке данных Data введем Start и выберем тип данных (стрелочка на иконке блока) string, соединим блок данных с сервисом Simple Dialog (мышью протягиваем от стрелки Outgoing Response блока данных к стрелке Incoming Request сервиса). После соединения появиться окно в котором надо указать какой тип окна нам нужен, а нужен нам Alert Dialog (небольшое окно с одной кнопкой) жмем OK, в следующем окне необходимо определить специфику данных которые будут передаваться в сервис, выбираем из выпадающего списка Value.

У нас осталось еще два блока данных, в одном пишем 0.7 (разделитель именно точка, а не запятая), этот блок будет отвечать за мощность приводов (можно указать число от 0 до 1.0, эти значения будут указывать мощность привода в процентах т.е. 0% и 100% соответственно), выберем тип данных Double.

В другом блоке указываем любое положительное число (этот блок отвечает за пройденную дистанцию), это длина прямой в метрах (не забываем про типы данных). Соединим сервис Simple Dialog с блоками Data, блоки Data в свою очередь с блоком Join.

Блок Join (объединить) объединяет блоки Data и именует их, для этого впишем в поля блока Join, те названия которые хотим дать блокам данных (например DriveDistance и DrivePower ). Далее нужно задать манифест для сервиса Generic Differential Drive, в нашем случае манифест будет определять какую виртуальную модель робота мы хотим использовать. Выделяем сервис, в левом окне Configuration выбираем Use a manifest, жмем кнопку Import и выбираем LEGO.NXT.Tribot.Simulation.Manifest.

Соединим блок Join с сервисом привода, в появившемся окне выбираем DriveDistance, в следующем окне для Power выбираем DrivePower, для Distance соответственно DriveDistance, для поля DriveDistanceStage можно выбрать null. Жмем ОК, программа для виртуального робота готова, запустим и посмотрим, что получилось. Нажимаем F5 или зеленую стрелку вверху на панели, ждем пока запуститься симулятор и появиться окно с кнопкой. Жмем кнопку ОК и лицезреем.

image

Готовая диаграмма для виртуального робота

image

Виртуальный симулятор и диалоговое окно

Проверим как наше приложение будет управлять реальным роботом. Предварительно выполним соединение модуля NXT с компьютером через Bluetooth, как это сделать вы найдете в руководстве пользователя. Внесем в диаграмму изменения.
Добавим сервис LegoNXTBrick, выделим его и в правом окне выберем Set initial configuration, в списке Settings указываем следующие параметры:

  • SerialPort — указываем номер порта который определил компьютер при соединение, это можно проверить в панели управления в настройках Bluetooth
  • BaudeRate — частота передачи данных, можно ввести 9600
  • ConnectionType — указываем Bluetooth
Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru