Язык для программирования робототехники

Урок 3. Языки программирования, используемые в робототехнике

Продолжаем курс «Ардуино для начинающих». Мы уже поговорили о платах Ардуино, разобрали конкретную модель Arduino Uno во втором уроке и сегодня мы коснемся темы языков программирования для робототехники и электроники.

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

Тем не менее, в отношении плат Ардуино и ряда других аналогичных микроконтроллеров широкое применение получил язык C++.

Стоит отметить, что C++ используется для:

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

LISP является вторым старейшим языком программирования в мире (FORTRAN старше, но только на один год). Он не так широко используется, как многие другие языки программирования в этом списке; однако, это все еще весьма важно в программировании искусственного интеллекта. Части ROS написаны на LISP, хотя не нужно знать это, чтобы использовать ROS.

Hardware Discription Languages (HDLs)

Эти языки довольно знакомы некоторым робототехникам, потому что они используются для программирования полевых программируемых массивов шлюзов (FPGA).

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

Assembly

Assembly позволяет программировать на «уровне единиц и нулей». Это программирование на самом низком уровне (более или менее). В недавнем прошлом, большинству низкоуровневой электроники требовалось программирование на Assembly.

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

MATLAB

MATLAB и его родственники с открытым исходным кодом, такие как Octave, очень популярны среди инженеров-робототехников для анализа данных и разработки систем управления. Существует также очень популярный Robotics Toolbox для MATLAB. Существуют люди, которые разработали целые робототехнические системы, используя только MATLAB.

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

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

Java «скрывает» основные функции памяти от программиста, что облегчает программирование, чем, скажем, C, но это также означает, что программист меньше понимает, что на самом деле делает его код.

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

Python

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

Вероятно, одной из причин его популярности является то, что Python (и C++) являются двумя основными языками программирования, найденными в ROS. Как и Java, это интерпретирующий язык. В отличие от Java, основной целью языка является простота использования.

Python обходится без многих обычных вещей, которые отнимают время в программировании, таких как определение и приведение типов переменных. Кроме того, существует огромное количество бесплатных библиотек, что означает, что не нужно «изобретать велосипед», когда нужно реализовать некоторые базовые функции. А поскольку он допускает простые привязки с кодом C/C ++, это означает, что на этих языках могут быть реализованы части кода, требующие высокой производительности, чтобы избежать потери производительности.

В последние годы такие опции программирования, как ROS Industrial, стали предоставлять более стандартизированные опции для программистов. Однако, если программист является техническим специалистом, ему, скорее всего, придется использовать язык производителя.

В следующих уроках этого курса мы более детально коснемся основ программирования плат Ардуино.

Источник

Шаг 10. Программирование роботов.

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

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

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

Чтобы научить вас программировать роботов, потребуется не один урок. Поэтому этот урок поможет вам лучше понять, как начать и что нужно изучить именно вам.

Какой язык выбрать?

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

Ассемблер

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

Basic

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

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

Запатентованный язык Microsoft используется для разработки приложений в Visual Studio;

Программирование для контроллеров Arduino

Используется вариант C ++. Программирование роботов на нём включает некоторые упрощения для того, чтобы сделать программирование не таким сложным;

Python

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

На уроке 4 вы выбрали микроконтроллер на основе необходимых вам функций (количество операций ввода-вывода, специальные функции и т. д.). Часто микроконтроллер предназначен для программирования на определенном языке.

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

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

Программирование роботов – начало.

Первой программой, которую вы, вероятно, будете писать, является «Hello World». По историческим причинам большинство учебников по программированию начинаются с этой фразы.

Это одна из простейших программ, которые могут быть сделаны на компьютере.

Она предназначена для печати строки текста (например, «Hello World») на мониторе компьютера или на ЖК-экране контроллера.

В случае с микроконтроллером другой очень простой программой, которую вы можете сделать – это переключение вывода IO. Присоединение светодиода к выходному контакту. Затем установление контакта I / O в положение ON и OFF приведет к миганию светодиода. При помощи контактов I / O можно запрограммировать много сложных функций. Например, включение многосегментных светодиодов для отображения текста и цифр, управления электромагнитными реле, сервоприводами и т.д.

Шаг 1.

Убедитесь, что у вас есть все компоненты, необходимые для программирования микроконтроллера. Не все микроконтроллеры поставляются со всем необходимым для их программирования. Большинство микроконтроллеров необходимо подключить к компьютеру через USB-штекер.

Если ваш микроконтроллер не оснащен разъемом USB, возможно вам понадобится отдельный USB-адаптер для последовательного интерфейса. Этот адаптер нужно правильно подключить. Многие микроконтроллеры программируются либо через порт RS-232, либо через USB. Часто они включают в себя разъем USB на плате. Разъем USB используется не только для двусторонней связи, но и для питания платы микроконтроллера.

Шаг 2.

Подключите микроконтроллер к компьютеру и проверьте, к какому COM-порту он подключен.

Не все микроконтроллеры смогут быть обнаружены компьютером. Поэтому вы должны прочитать в руководстве «Начало работы. И тогда вы будете точно знать, что нужно сделать, чтобы компьютер распознал его и смог с ним общаться. Вам может быть придется загрузить «драйверы» (специфичные для каждой операционной системы), чтобы ваш компьютер мог понять, как общаться с микроконтроллером и / или USB-конвертером последовательного преобразователя.

Шаг 3.

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

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

Полезные советы.

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

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

Документируйте все в коде, используя комментарии.

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

Сохраняйте разные версии кода.

Не всегда перезаписывайте один и тот же файл. Если вы обнаружите, что ваши 200+ строк кода не будут компилироваться, не стоит останавливаться только на этой версии кода. Вместо этого вы можете вернуться к ранее сохраненной (и функциональной) версии и добавить или изменить ее по мере необходимости. Код не занимает много места на жестком диске. Поэтому вы можете спокойно сохранять несколько копий.

При отладке робота поднимите его.

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

Если код делает что-то, что кажется неработоспособным.

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

Практический пример.

Для нашего проекта был выбран набор Lego Mindstorms EV3. Для него есть специальная графическая среда программирования EV3 Programmer. Её можно бесплатно скачать с официального сайта Лего и сразу приступать к программированию робота.

Программирование происходит при помощи пиктограмм и является доступным для понимания.

6 шаг в робототехнику. Способы управления роботами

Источник

Языки программирования: на каком языке говорит робот?

Язык, на котором говорит робот (не важно, игрушка, робот-пылесос или медицинское оборудование), – это машинный код, набор знаков двоичной системы. Он сложен и малопонятен для человека. Писать на нем программы, то есть закладывать поведение робота, иррационально. Поэтому коммуникация между роботом и человеком происходит по такой схеме:

1. Человек пишет программу на языке программирования.

2. Написанный текст – код программы – проходит через «переводчиков»: компиляторы, интерпретаторы или трансляторы. Они преобразуют язык программирования в машинный код, понятный роботу.

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

3. Переведенная в машинный код программа попадает в «мозг» роботу. Роль «мозга» может играть схема, чип, микроконтроллер, микрокомпьютер или компьютер. Чем сложнее задачи будет решать робот, тем совершеннее должен быть его «мозг».

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

Низкоуровневые и высокоуровневые языки программирования

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

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

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

Мы можем договариваться с микроконтроллером через транслятор, и тогда, скорее всего, придется программировать на низкоуровневом языке. Если у микроконтроллера будет плата типа Arduino, то можно перейти на более «человеческий» высокоуровневый язык. Однако робот с несколькими типами управления запросто может оказаться полиглотом: его создатель будет сочетать разные языки для выполнения разных задач.

Мы подобрали пять языков, которые в тренде у робототехников.

Топ-5 языков программирования в робототехнике

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

Для наглядности покажем, как выглядит программа, написанная на разных языках. С нее начинается любое обучение программированию – на мониторе или на ЖК-экране контроллера должна появиться надпись Hello, world.

Assembly («Ассемблер»)

Относится к языкам низкого уровня, который максимально приближен к машинному коду. С появлением микроконтроллеров подобных Arduino язык стал применяться реже, поскольку микроконтроллеры поддерживают управление роботами на более высоком уровне, используя C/C++ и другие языки.Однако не стоит списывать со счетов «Ассемблер» – он в буквальном смысле незаменим, если требуется абсолютный контроль. Объяснить роботу особое условие другим языком в некоторых случаях просто не получится.

Идея использования Java заключается в применении одного и того же кода на разных роботах благодаря виртуальной машине Java. На самом деле это не всегда работает и приводит к медленному исполнению программы, которая пытается донести код до робота. Ведь виртуальная машина сначала должна создать «образ» того, как будет работать данная программа на определенном роботе. Это занимает достаточное количество времени, а само исполнение происходит с задержкой. При этом язык довольно популярен в робототехнике из-за своей универсальности, а некоторые производители даже делают микроконтроллеры специально для программирования на Java.

Язык часто применяют для роботов, связанных с веб-технологиями. Например, в системе «умный дом» (правда, в этом случае используют JavaScript, но принцип похож) или в машине, которая снимает видео и транслирует его в интернет.

Саймон Риттер – евангелист Java и один из создателей, является лучшим специалистом по использованию Java-технологии в мире робототехники. Он разработал Robotics Software Development Kit и регулярно показывает новые роботизированные системы.

MATLAB

Среди инженеров-робототехников популярен язык MATLAB со своей средой и его родственники с интерпретаторами с открытым исходным кодом, например Octave.

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

Python

Язык высокого уровня Python ценят за простоту и экономию времени, например при определении и приведении типов переменных.

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

Популярность языка в робототехнике в последние годы только растет. Он, к примеру, часто используется для программирования на Raspberry Pi. Этот микрокомпьютер просто создан для экспериментов и разработки IoT-устройств. Тем более для Python существует множество библиотек, где есть готовые решения для базовых программ. Благодаря несложному и интуитивно понятному синтаксису даже дети и новички могут легко создавать роботов на Python.

«Си» сочетает удобство написания высокоуровневых языков и контроль низкоуровневых. Лучше многих других языков транслируется в машинный код, но обладает непростым синтаксисом и не прощает ошибок. Даже одна неверная строчка нового кода может нарушить работу уже действующих программ. Кстати, программы в универсальном робототехническом языке (сокращенно GRL – Generic Robot Language) компилируются на таких языках команд, как С.

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

C++ используется для:

В «Робиксе» мы используем платы Arduino, которые программируются на языке C++ с дополнениями. Поэтому на занятиях по робототехнике наши ученики знакомятся еще и с логикой программирования «Си плюс-плюс».

на языке С:

на языке С++

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

Представим, что сегодня мы с вами роботы. Перед нами стоит задача-программа: «Встать с кровати и выйти в дверной проем».

Если бы писали программу на Python, то для нас, роботов, она выглядела бы так:

На C++ она выглядела бы совершенно по-другому:

(Создать объект «комната»)

(Создать объект «кровать»)

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

Вместо заключения

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

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

Легче всего простейшие алгоритмы и логика языков даются в детстве. В «Робиксе» мы обучаем основам программирования даже дошкольников. Наши ученики начинают со Scratch, знакомясь с программированием в игровой форме, и дальше осваивают более сложные языки Python и C++. Ребята с увлечением создают собственные игры, роботов, а заодно готовятся к «взрослому» миру, где языки программирования в ряде отраслей уже давно перешли в разряд must have, а дальше их, может, и вовсе заменит искусственный интеллект. И понимание алгоритмов работы компьютера, умение ориентироваться в механике, электронике и сопутствующих технологиях – хороший набор навыков для профессии будущего.

Источник

Поделиться с друзьями
admin
Оцените автора
( Пока оценок нет )
Как переводится?
Adblock
detector