Найти тему

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

Оглавление

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поехали!

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

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

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

«Здравствуй, мир», – говорит «Ассемблер». И мир роботов понимает его предельно точно
«Здравствуй, мир», – говорит «Ассемблер». И мир роботов понимает его предельно точно

Java

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

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

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

Java дает дорогу в мир интернета, а для веб-разработчиков этот язык почти родной
Java дает дорогу в мир интернета, а для веб-разработчиков этот язык почти родной

MATLAB

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

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

Оцените простой синтаксис – не придется запоминать бесконечные точки, кавычки и скобки
Оцените простой синтаксис – не придется запоминать бесконечные точки, кавычки и скобки

Python

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

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

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

Лозунг Python: «Будь проще». Язык, который прощает ошибки и пытается быть ближе к каждому. Да и в любой отрасли находит свое применение
Лозунг Python: «Будь проще». Язык, который прощает ошибки и пытается быть ближе к каждому. Да и в любой отрасли находит свое применение

C/C++

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

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

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

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

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

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

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

Открыть глаза

Встать с кровати

Выйти в дверь

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

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

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

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

Открыть глаза

…и т. д.

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

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

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

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

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

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

Оригинал статьи: https://robx.org/blog/sovremennoe-obrazovanie/yazyki-programmirovaniya/