Изучение различных технологий программирования на примере курса «Программирование роботов»
При подготовке студентов по направлению «Программная инженерия» обычно в рамках одной дисциплины используется ограниченный инструментарий (языки и среды программирования), наилучшим образом соответствующий целям данной дисциплины.
При разработке учебного плана для этого направления подготовки в Национальном исследовательском Нижегородском государственном университете им. Н.И. Лобачевского в список изучаемых дисциплин был включен курс «Программирование роботов», при разработке которого пришлось отступить от общепринятой концепции и использовать при разработке практических занятий целый спектр разноуровневых средств программирования.
Низкоуровневое программирование представлено в данном курсе использованием языка С для программирования образовательных роботов на платформах 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 |
По вопросам спонсорского участия, оплаты участия коммерческих компаний, а также иным