Как сделать программу для робота

Обновлено: 05.07.2024

Знакомство с программой Кумир осваение азов программирования.

В ней учащиеся могут получить практические навыки при создании и отладке алгоритма, работая с такими исполнителями, как Робот, Чертёжник, Водолей, Кузнечик,Черепашка.

Цель разработки: изучить возможности программирования на примере конкретного исполнителя Робот с использованием среды КУМИР; дать практические навыки работы с исполнителем.

ВложениеРазмер
metod_razrabotka_robot1.doc 642.5 КБ
Презентация с заданиями и решениями 2.09 МБ

Предварительный просмотр:

Методическая разработка по информатике.

Автор: Григорьева Ю.А.,

Цель разработки : изучить возможности программирования на примере конкретного исполнителя Робот с использованием среды КУМИР; дать практические навыки работы с исполнителем.

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

Учащиеся должны знать:

  • что такое исполнитель; СКИ Робота, среду исполнителя Робот;
  • что такое алгоритм ; в чем состоят основные свойства алгоритма;
  • способы записи алгоритмов: блок-схемы, учебный алгоритмический язык; основные алгоритмические конструкции: следование, ветвление, цикл; структуры
  • алгоритмов; ⇒ назначение вспомогательных алгоритмов; технологии построения сложных алгоритмов:

Учащиеся должны уметь:

  • понимать описания алгоритмов на учебном алгоритмическом языке;
  • выполнить трассировку алгоритма для известного исполнителя;
  • составлять линейные, ветвящиеся и циклические алгоритмы управления исполнителя Робот; выделять подзадачи; определять и использовать вспомогательные алгоритмы.

Занятие 1 (2 часа) Урок 1.

Исполнитель Робот. Система команд исполнителя.

2.Разбор типичных алгоритмов Робота.

Рассмотрим описание исполнителя.

Среда исполнителя : Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки.

СКИ Робота : простые команды: вверх, вниз, влево, вправо, закрасить.

Команды логические: (проверки условия)

сверху свободно снизу свободно

слева свободно справа свободно.

Логические связки: И,НЕ, ИЛИ:

Пример:(Не слева свободно) или (не справа свободно)

Команда ветвления : команда цикла:

если условие то нц пока условие

серия команд серия команд

(В КИМах 2009 года команды Робота отличались от привычных детям, что приводило к путанице : )

Команда ветвления : команда цикла:

если условие то нц пока условие делать

серия команд серия команд

Общий вид окна программы Кумир. Графическая среда Робота:

В КИМах демонстрационного варианта 2010 года формат команд изменен на привычный

Порядок создания алгоритма:

1.Командами Инструменты -Редактировать стартовую обстановку нарисовать на поле Робота стены и установить Робота в начальное положение.

2.Командами Робот- Сменить стартовую обстановку сохранить новую обстановку.

3.Командами Вставка- Использовать Робот указать исполнителя.

4.В окне документа записать алгоритм, используя меню Вставка.

5.Командами Выполнение –выполнить непрерывно (или по шагам) запустить алгоритм.

6.Рассмотреть результат выполнения алгоритма и при необходимости произвести его отладку.

Занятие 1 (2 часа) Урок 2.

Задания: 1.Робот в произвольной точке поля. Закрасить клетку сверху, снизу и справа от исходного положения.

  1. Робот в произвольной точке поля. Передвинуть Робот на 4 клетки вправо, закрасив их.
  2. Создайте новую стартовую обстановку, нарисовав на поле квадрат со стороной 4 клетки. Сохраните обстановку как стартовую.
  3. Создайте новую стартовую обстановку, нарисовав на поле коридор с проходами в стенах. Сохраните обстановку как obst2.fil. Смените стартовую обстановку на вновь созданную.

Занятие 2 (2 часа) Урок 1.

Тема : Ветвление и последовательная детализация алгоритма.

Разбор задач КИМов с использованием исполнителя Робот.

если не снизу свободно

если не снизу свободно

если не снизу свободно

если не снизу свободно

если не снизу свободно

если не снизу свободно

Пр. раб. №14. Составление и отладка алгоритмов ветвления

Задания. См. Приложение.

Занятие 3. Циклические алгоритмы. Урок 1-2

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

Пр. раб. №15. Составление и отладка циклических алгоритмов

1.Составьте алгоритм, закрашивающий все внутренние клетки, прилегающие к стене.

нц пока справа свободно

нц пока снизу свободно

нц пока не снизу свободно

2.Составить алгоритм, закрашивающий все клетки между Роботом и стеной. Расстояние до стены неизвестно.

нц пока справа свободно

3.Составить алгоритм, закрашивающий все клетки, находящиеся между двумя стенами.

нц пока (не сверху свободно) или (не снизу свободно)

если (не сверху свободно) и (не снизу свободно)

4.Составить алгоритм, закрашивающий все клетки вокруг прямоугольной стены.

нц пока не справа свободно

нц пока не снизу свободно

нц пока не слева свободно

нц пока не сверху свободно

нц пока не снизу свободно

нц пока слева свободно

нц пока не слева свободно

нц пока сверху свободно

нц пока не сверху свободно

Занятие 4 Урок 1

Цель: ввести понятие основного и вспомогательного алгоритма; объяснить правила использования вспомогательного алгоритма; разобрать примеры алгоритмов с использованием вспомогательного.

1.Ввод новых терминов (основного и вспомогательного алгоритма, вызова) и объяснение новых понятий.

2.Разбор примеров решения задач с применением вспомогательного алгоритма.

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

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

Команда выполнения вспомогательного алгоритма называется вызовом и записывается в теле основного алгоритма.

Один и тот же алгоритм может рассматриваться как основной и вспомогательный по отношению к другим алгоритмам. В алгоритмическом языке сначала записывается основной алгоритм, ниже подряд записываются вспомогательные.

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

Разбор на доске:

Задача2. Робот находится в верхнем левом углу поля. Стен и закрашенных клеток нет. Составьте алгоритм, который закрашивает в шахматном порядке квадрат 8 х 8. Конечное положение Робота может быть произвольным.

Занятие 4 Урок 2

Цель : привить практические навыки построения алгоритмов методом последовательного уточнения.

1.Задание полностью проходит за ПК. Учащиеся получают задания и выполняют их в программной среде Кумир. Результаты Работы сохраняются в виде файлов для последующей проверки.

Задача1 . Робот находится в нижнем левом углу поля. Стен и закрашенных клеток нет. Составьте алгоритм, который закрашивает 6 вертикальных полос одинаковой длины в 6 клеток. Конечное положение Робота может быть произвольным.

Задача2 .Используя вспомогательные, составьте алгоритм для закрашивания клеток, образующих число 1212.

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

Занятие 5 Урок 1-2

Цель: проверить полученные знания по созданию и умению анализировать алгоритмы в программной среде Кумир.

Задания для контрольной работы делятся по уровням сложности и включает в себя 3 задачи с исполнителем Робот (1 и 2 задача –на ветвление и циклы, 3 задача с- на использование вспомогательного алгоритма.) Тексты заданий приводятся в приложении.

Исходные и конечные обстановки и созданные алгоритмы записываются в виде файла.

Оценка выставляется соответственно уровню сложности задания. Ученик вправе сам выбрать тип задания.

КАК СДЕЛАТЬ РОБОТА:
СХЕМЫ, МИКРОКОНТРОЛЛЕРЫ,
ПРОГРАММИРОВАНИЕ РОБОТОВ

Робототехника для начинающих. Как сделать робота в домашних условиях своими руками.
Как сделать простого робота и мини робота с программным управлением.
Программирование микроконтроллеров AVR. Схемы роботов. Описания. Примеры программ.

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

6 лучших языков программирования для изучения робототехники

Изучение

В самом деле, для достижения таких сложных и зависящих от времени целей роботов необходимо обучать, чтобы они могли понимать, как реагировать на изменение окружающей среды, которое возможно с помощью программирования роботов. Любопытно узнать, как это сделает робота действительно самообучающимся? Эти самообучающиеся роботы могут удивительным образом делать все, от планирования мероприятия до посещения пациентов в больнице, после того, как их возможности будут расширены или в их конструкции будут внесены подробные изменения. И чтобы увидеть эту магию в реальном времени, необходимо изучить языки программирования для робототехники. Давайте познакомимся с 6 основными языками программирования, которые могут решить общие проблемы, возникающие у вашего робота, и заменить их решениями, которые ожидает большинство компаний и клиентов:

Изучение базового синтаксиса и функций C / C ++ полезно, если вы серьезно относитесь к созданию собственного программируемого робота и увеличению его производительности, чтобы он мог проактивно и точно реагировать в средах высокой сложности. Хотя для написания программы на C или C ++ требуется много времени, вы можете получить доступ:

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

Следовательно, чем больше вы научитесь разрабатывать и писать программы на C / C ++, тем лучше для вас будет анализировать, понимать и улучшать динамическое поведение робота, привязанного к положению, скорости и ускорению.

2. LISP

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

  • как в реальном времени можно разработать множество функций управления роботоми безошибочно реализовать их?
  • и не нужно беспокоиться о разрешениях на доступ, поскольку LISP со своими пакетами и библиотеками может их хорошо обрабатывать.

Хотите запрограммировать своего робота через LISP, архитектура которого не зависит от языка, как C ++ и Java? Все, что вам нужно сделать, это познакомиться с манипуляциями с функциями, используемыми в кодах LISP, которые могут управлять всеми типами движений, такими как движение рук, ног или головы.

3. Java

Java действительно является одним из самых востребованных языков программирования после Python. В настоящее время люди, занимающиеся наукой о данных и робототехникой, принимают Java для реализации решений машинного обучения. Это поможет роботам проактивно понимать шаблоны данных без каких-либо препятствий. С Java:

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

Позже вы можете запустить его на Raspberry Pi с подключенной камерой.

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

Но чтобы создавать сервис-ориентированные и легкие приложения для вашего робота, вы должны хорошо знать Microsoft robotics studio. С помощью этой структуры у вас есть возможность тестировать моделирование ваших роботов во время выполнения, решения которых привлекательны с точки зрения визуализации и обучения с меньшими инвестициями или без них.

5. Python

Как и Java, Python — это интерпретируемый язык программирования, который потенциально может создавать, вычислять или активировать программы роботов постобработки быстрее с помощью своих простых в использовании библиотек. Подумал, в чем польза этих программ !! Благодаря им становится проще:

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

В этом случае автономное программирование роботов с его интуитивно понятными и удобными для пользователя действиями будет более разумным выбором для тестирования различных критически важных частей вашего робота, а затем гибкой интеграции их с программным обеспечением CAM / CAD. Короче говоря, Python отлично работает, когда вам нужно быстро протестировать роботизированные приложения с базовыми функциями с меньшей вычислительной мощностью и минимальными временными ограничениями.

6. MATLAB

MATLAB — ваш мастер робототехники. Это связано с тем, что благодаря безупречной среде программирования с открытым исходным кодом различные исследователи, инженеры, разработчики и программисты робототехники могут:

  • проектировать, тестировать и моделировать приложения, необходимые, чтобы сделать вашего робота (гуманоида или автономного) более гибким и продуктивным.
  • для мобильных роботов MATLAB предлагает комплексный инструментарий для прямой и обратной кинематики гуманоидных или мобильных роботов, управления движением и различных алгоритмов для генерации траектории и отслеживания столкновений.

Планируете разработать удобный прототип робота? Все, что вам нужно сделать, это применить основы робототехники в MATLAB и подключиться к его библиотекам, анализируя скважинные данные в режиме реального времени.

Бонус — Arduino

Arduino — это недорогой, кроссплатформенный и понятный способ запрограммировать робота, чтобы он мог танцевать так, как вам нравится. И чтобы продолжать играть в эту танцевальную игру и дальше, можно использовать программные коды Arduino, методы и специальные функции которых, такие как sketch (), setup () и loop (), могут гибко управлять роботом даже в самых экстремальных условиях. Кроме того, Arduino предлагает:

Набор инструментов для роботов Arduino,соединяющий датчики скважин, исполнительные механизмы и системы управления вашего робота для улучшения его функциональных возможностей.
Встроенные библиотеки C ++ для упрощения повседневных задач любого из ваших роботизированных проектов.

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

А давайте поговорим сегодня о программировании роботов. Да роботов, но не игрушек роботов, а промышленных роботов. Роботов, которые каждый день всё больше и больше завоёвывают своё место в промышленности.

Оставим в стороне программирование САПР (SPS Step S7 н/р) и робота в одну систему, предположим, у нас уже есть настроенная установка с роботом, которая соответствует нашим требованиям и она работает без ошибок. Осталось дело за малым: закинуть на робота нужную программку и нажать СТАРТ.

И вот тут и возникает первые вопросы. Если настройка установки с роботом более менее соответствуют общим требованиям промышленности и тех. безопастности, то программа робота - это ваша личная идея, ну и реализация соответсвенно тоже.

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

Тут и возникает идея - самому писать программы для робота. Производитель роботов обычно и предлагает курсы по программированию. Тут есть обычно два варианта: Teach-in и Off-Line программирование.

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

Система простая, но удовольствие конечно мало, если точек очень много и доступ к точкам ограничен самой деталью (её геометрией). Нужно добавить сюда ещё тот факт, что каждый производитель роботов по своему решает систему управления роботом. Н/р, у одних движение робота по осям x, y, z, идёт через нажатие/вращение джостика в нужном направлении. И наклон робота по углам A, B, C, то же этим же джостиком, но сперва вам необходимо перейти в другое меню управления движением. Такие прыжки туда сюда отнимают очень много времени и нервов. У других, на все движения есть свои отдельные кнопки, две для каждого направления.

Если учесть ещё тот факт, что для каждой точки необходимо выставить определённое растояние и угол, и при этом держать на пульте управления нажатой клавишу включения робота (тех.безопастности), и двигать робот, то обычно не хватает 3-й, а то и 4-й руки.

Написать программку на 5000 точек, в зависимости от необходимой точности и геометрии детали, таким методом затянется на пару месяцев. При этом вам будет необходимо занять установку с роботом, т.е. установка будет стоять, так же как и продукция. Конечно, если у вас есть ещё один робот, на котором вы будете писать программу не останавливая робот на установке. Это позволит не останавливать работу установки, но не сократит время программирования. И тут еше добавится тот факт, что при переносе программы с программного робота, на робот в установке, прийдётся программу "немного" подгонять.

Но есть и позитивная сторона у этого метода: объезжая все эти точки в реальности, можно уверено сказать, что робот при объезде не врежется в деталь или в какой-либо другой объект установки, т.к. это было бы заметно уже на стадии "запоминания" этих точек. Но это не совсем верно, так как в режиме автоматики на 100%, робот может ехать не совсем так, как на этапе программирования в ручном режиме.

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

И в зависимости от эдитора нам открываются по истине великолепные возможности программирования.

Самыми важными пунктами является возможность работы с поверхностью и гранями CAD детали. Кстати CAD формат должен поддерживаться эдитором (н/р .igs или .stp) иначе программирование значительно затрудняется и приходится импровизировать, что сказывается на времени, точности ну и качестве программы.

Предположим, нам необходимо сделать программу для обработки всей поверхности простой детали, как на фото.

Програмирование промышленных роботов Робот, Программирование, Длиннопост

И обработка подразумевает под собой объезд всей верхней поверхности "змейкой" с определённым растоянием между дорожками (растер) и с углами 90°. Такое применяется н/р для пескоструя или покраски поверхности.

При использовании первого метода, необходимо иметь саму деталь, расчертить на ней дорожки, закрепить на рабочем столе и задавать все эти точки (обычно это те места, где меняется направление движения) роботу в необходимой последовательности с необходимыми условиями (растояние и угол инструмента к каждой точке). Задавать такие данные, как тип движения (линейное, свободное или по окружности), точность движения (насколько точно робот должен подъехать к этой точке, н/р 1мм или 5мм), скорость движения к этой точке и каким инструментом робот должен подъехатъ к ней. Одни из этих параметров перенимаются автоматически от предыдущей точки, другие надо задавать каждый раз заново.

Задав таким образом все точки, вы создаёте часть программы, которая отвечает за движение робота. (Другая часть - контакт с внешним миром через САПР или подача/считывание сигнала на выход/вход, делается обычно один раз и перенимается от программы к программе и здесь не будет расматриваться.) После этого программа контролируется в ручном, в тестовом и автоматическом режимах. Если всё ОК - работа сделана. Можно пойти за кофеёчком.

А что, если завтра или через месяц прийдёт другая пластина для обработки, которая чуток длиннее или шире? Можно конечно измерить изменения и в текстовом эдиторе изменять координаты X, Y, Z точкам в старой программе не останавливая робот и надеятся, что всё получится ОК. Ну или же менять старую программу непосредственно на роботе перезабивая старые точки на новые. При этом сперва накидав новые дорожки на новой детали.

Более продвинутые программисты, н/р от производителя робота, для таких задач/деталей могут написать программку, которая сама генерирует программу для движения. Для неё будет только необходимо объехать три точки детали и запомнить их. Из этих точек программа считает координаты X, Y, Z, определит размер поверхности, расчитает сдвиг от дорожки к дорожке и сгенерирует движение на всю поверхность детали. Контроллер робота - это же компьютер и позволяет производить логические, арифметические операции. Главное тут правильно разработать алгоритм.

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

Вот тут и приходит на помощь Off-Line программирование.

Для простых задач этот вариант в принципе не нужен, но для более серьёзных ему нет замены.

Давайте разберём сперва тот же первый пример с фото выше.

(Настройку эдитора мы не будем тут расматривать)

Помещаем в эдитор CAD детали и распологаем её по возможности точно так же по отношению к роботу, как в установке. Желательно на этом этапе произвести калибровку детали, т.е. промерить её положение в установке и перенести это положение в эдитор. Этим достигается то, что робот действительно достанет все точки детали, плюс, можно увидеть уже в эдиторе как поведёт себя робот при обработке детали, н/р перекрутятся у него оси или нет.

Создаём дорожку на парралельных рёбрах детали методом их захвата.

Програмирование промышленных роботов Робот, Программирование, Длиннопост

Полученные дорожки сегментируем (делим точками) под длину будущего растера.

Програмирование промышленных роботов Робот, Программирование, Длиннопост

Создаём змеевидную дорожку методом захвата раннее созданных точек в необходимой последовательности.

Програмирование промышленных роботов Робот, Программирование, Длиннопост

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

Програмирование промышленных роботов Робот, Программирование, Длиннопост

(убрал инструмент из фото, т.к. всё под авторскими правами, синяя полоска - симулирует н/р струю пескоструя)

и если всё прошло без "танцев с бубнами в исполнении робота", то генерируем программный код/файл, который переписываем на контролер робота. Контролируем программу в установке, жмём на СТАРТ, идём за кофе.

Давайте расмотрим другой пример задачи.

На эту деталь необходимо нанести клей на верхнюю плоскость, от края рёбр 15мм по периметру и от края круглых, больших отверстий 5мм то же по периметру.

Програмирование промышленных роботов Робот, Программирование, Длиннопост

Так же как и в впредыдущем примере, захватываем рёбра поверхности. (серая линия - предложения эдитора для захвата ребра, белая - будущая дорожка, если мы подтвердим её)

Програмирование промышленных роботов Робот, Программирование, Длиннопост

Програмирование промышленных роботов Робот, Программирование, Длиннопост

Создаём паралельную дорожку со сдвигом 15 мм внутрь предыдущей. (Кстати, цвертные стрелки показывают направление инструмента, во всех точках, оно при создании разное и его надо будет потом исправлять)

Програмирование промышленных роботов Робот, Программирование, Длиннопост

Добавляем точки въезда и выезда. Повторяем то же самое с круглыми отверстиями.

Програмирование промышленных роботов Робот, Программирование, Длиннопост

Програмирование промышленных роботов Робот, Программирование, Длиннопост

Заносим нужные параметры точкам как и в предыдущем примере, исправляем ориентирование инструмента, включаем симуляцию.

Програмирование промышленных роботов Робот, Программирование, Длиннопост

При необходимости заносим команды вкл./выкл. контроль, входов/выходов, генерируем программу, заносим на робот, тестируем, запускаем в автоматике, хлопаем себя по плечу и со словами: "ай какой молодца" - идём за кофем.

Теперь немного про $$$.

За работу продвинутого программиста из примера выше (создание программы для генерирования программы движения исходя из трех точек) производитель роботов возмёт ~200€/час, солидно да?

Ну, вот такой краткий обзор по программированию роботов.

Не пинайте сильно, да и вообще не пинайте :-), первая попытка в таком роде.

Читайте также: