Изучение различных технологий программирования на примере курса «Программирование роботов»

Прием тезисов завершен. Вы можете только разместить черновик.
Автор: Борисов Николай Анатольевич, Кандидат технических наук, Доцент
ФГБОУ ВПО "Нижегородский государственный университет им. Н.И.Лобачевского"
В докладе рассматривается использование различных языков в рамках курса "Программирование роботов" при подготовке бакалавров по направлению "Программная инженерия" в Национальном исследовательском Нижегородском государственном университете им. Н.И. Лобачевского. Низкий уровень программирования образовательных роботов на платформах Lego Minstorms EV3 и Arduino представлен различными диалектами языка С. В качестве высокоуровнего языка с поддержкой технологии ООП рассматривается язык Java.

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

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

Низкоуровневое программирование представлено в данном курсе использованием языка С для программирования образовательных роботов на платформах Legoи Arduino. Этот язык широко используется для программирования встроенных микропроцессоров, поэтому и для программирования роботов существует много его диалектов: RobotC, BricxCCи т.д. На этом уровне программист имеет непосредственный доступ к портам двигателей и сенсоров, может работать с «сырой» информацией. С другой стороны – в его распоряжении все конструкции, свойственные процедурным зыкам программирования высокого уровня, что всегда было свойственно языку С.

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

Одновременно в курсе используются и более высокоуровневые средства программирования роботов, которые можно разделить на две категории. К первой относятся средства графического программирования роботов, которые широко используются в школьной робототехнике – такие как среда программирования EV3-Gи Scratch-Enchanting. Обе среды позволяют создавать достаточно сложные программы для роботов, в том числе поддерживают параллельное программирование. К этой же категории можно отнести использование среды разработки LabVIEWи ее графического языка G.

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

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

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

В качестве еще одного варианта применения объектно-ориентированного подхода при программировании EV3 можно рассматривать MicrosoftSmallBasic с установленным расширением EV3 Basic. Данный язык представляет полноценный набор классов для взаимодействия с моторами и датчиками робота, однако не позволяет разрабатывать собственные классы, поэтому в качестве объектно-ориентированного языка программирования уступает языку Java.

Вид представления доклада  Устное выступление и публикация
Ключевые слова  Программирование, робототехника, подготовка бакалавров, программная инженерия, LEGO EV3, Arduino

По вопросам спонсорского участия, оплаты участия коммерческих компаний, а также иным организационно-информационным вопросам просьба обращаться в организационный комитет по адресу: dea@ito.edu.ru, edu@apkit.ru или по телефону: +7 (925) 514-33-74.