Начало программирования в LEGO Mindstorms EV3 с использованием языка Java Неустроев А. В.
Неустроев Айаал Васильевич / Neustroev Aiaal Vasilevich - студент, кафедра информационных технологий, институт математики и информатики,
Северо-Восточный федеральный университет, г. Якутск
Аннотация: в статье предлагается ознакомление с программированием в LEGO Mindstorms EV3 с помощью языка Java, как оно работает, с чего надо начинать и т. д.
Ключевые слова: робот, java, LEGO Mindstorms EV3.
В настоящее время для программирования в Lego Mindstorms EV3 используется графический язык программирования LabVIEW, который позволяет создавать простые программы.
Набор LEGO Mindstorms EV3 позволяет придумывать различные изобретения, которые работают с помощью набора моторов, модульных датчиков и включают в себя интеллектуальный компьютер, который управляет системой. Комплекты содержат программное и аппаратное обеспечение для создания управляемых роботов Lego.
Lego Mindstorms EV3 может работать с прошивкой leJOS, тогда в роботе может запускаться Java-приложение. Специально для этого компания Oracle выпустила и поддерживает отдельную версию полноценной Java SE [1].
LeJOS - это замена прошивки для программируемых устройств Lego Mindstorms. Она в настоящее время поддерживает такие устройства, как LEGO RCX, Lejos NXJ, NXT, EV3. Также включает в себя виртуальную машину Java, что позволяет Lego Mindstorms запрограммировать роботов на языке программирования Java [2].
В LeJOS программировать легко и удобно. Во-первых, используется объектно-ориентированный язык, поэтому сложные программы пишутся легче, чем на простом графическом языке программирования LabVIEW.
Преимущества программирования в Lego Mindstorms, используя прошивку leJOS [2]:
• Использование объектно-ориентированного языка Java.
• Можно создавать приложения, работающие не только в модуле EV3, но и приложения для смартфонов, планшетов и компьютеров для удаленного взаимодействия с роботом.
• Веб-камера, подключенная к модулю EV3, отображает изображение, видео на дисплее или удаленно передает их на компьютер. Камеру можно использовать, например, вместо датчика цвета.
• Массивы можно выбрать одномерные или многомерные.
• Можно использовать множество классов Java.
Итак, приведем и разберем пошагово пример написания простой программы. Для этого, во-первых, начинаем с выражения «Hello world»:
в import lejos.hardware.led.LCD; import lejos.utility.Delay;
public class hello {
в public static void main (String [] args) [{]
// TODO Auto-generated method stub LCD.dravStrlnqi"Hello world", 0, 0);
Delay.msDelay(SOOO);
>1
}
Рис. 1. Код «Hello world»
Во-вторых, импортируем нужные нам библиотеки (Lejos.hardware.lcd.LCD). В-третьих, пишем то, что будет отображаться на дисплее. В-четвертых, надо написать позицию текста. Например, после выражения «Hello world» мы написали два 0, это означает, что данный текст будет находиться в самом верхнем левом угле дисплея. В-пятых, на следующей строке пишем, сколько миллисекунд будет отображаться текст.
Для выполнения данного программирования надо установить программу Eclipse, которая связана с Java языками, и в ней установить плагин специально для leJOS. LeJOS имеет множество версий, в настоящее время самой последней версией является 0.9.1 beta.
Еще leJOS поддерживает моторы. Моторы делятся на регулируемые и нерегулируемые. Регулируемые моторы самостоятельно контролируют скорость вращения и могут повернуться на заданный угол. Нерегулируемыми моторами можно управлять, просто задав скорость, направление и время вращения. Классы, по которым можно управлять моторы:
• EV3LargeRegulatedMotor - для большого мотора EV3;
• EV3MediumRegulatedMotor - для среднего мотора EV3.
Основные функции, которые можно использовать для регулируемых моторов:
• Forward () - двигаться вперёд до получения команды стоп (или её эквивалента);
• Backwards () - двигаться назад до получения команды стоп (или её эквивалента);
• Stop () - остановить мотор;
• Flt () - остановить мотор без торможения;
• setSpeed (int speed) - установить скорость;
• rotate (int angle) - повернуть на угол (угол может быть положительным или отрицательным в градусах);
• rotateTo(int angle) - повернуть мотор до угла (в градусах).
Для работы двух или более моторов надо использовать функции synchronizeWith, startSynchronization и endSynchronization.
l4>ort lejos.hardware.BrlckFlnder;
lsport lejos.hardware.motor.EV3LargeRegulatedMotor;
import lejos.robotics.RegulatedMotor;
public class hello <
public static void main(String[] args) (
// TODO Auto-generated method stub 05uppressWarnings("resource")
RegulatedMotor mB ■ new EV3LargtRtgulatedMotor(BrlckFlnder.getDefaultO.getPort("S"));
RegulatedMOtor ac ■ new EVlLargeRcgulatedMotor(Brlekriader.gecDefjult() .getPort("C")) ;
mS.synchronlzeNith(new RegulatedMotor(I (aC));
mB.startSynchronization();
aB.rotate(360, true);
mC.rotate(360, true);
mB.endSynchronization();
mB.waitCooplete();
mC.vaitCcmpleteO ;|
)
Рис. 2. Код работы моторов
Как видно на коде у нас есть два мотора, которые подключены в порт В и С, и с помощью функции синхронизации оба мотора одновременно крутят один оборот.
Вот такими простыми способами можно программировать на языке программирования Java. Это все лишь начало программирования в Lego Mindstorms.
Литература
1. Maximum Lego Mindstorms EV3: Building Robots With Java Brains / Под ред. Brian Bagnall - Variant Press, 2014. - 102-105 c.
2. Core LEGO MINDSTORMS Programming: Unleash the Power of the Java Platform / Под ред. Brian Bagnall -Prentice Hall, 2002. - 48-51 c.