Программируем робота LEGO Mindstorms EV3 на Python
Чтобы программировать робота LEGO Mindstorms EV3 на языке Python мало знать только этот язык. Необходимо ещё иметь представление о библиотеке ev3dev.ev3, для работы с датчиками и моторами. А также не помешало бы иметь под рукой полноценную среду разработки с подсказками, подсветкой синтаксиса и отладчиком. В статье я опишу, как настроить EV3 и компьютер для комфортной разработки вашего проекта на Python.
Установка прошивки ev3dev
Для того чтобы ваши программы, написанные на Python (в статье я буду иногда называть его Питоном) работали на EV3, вам нужно установить на micro-SD-карту прошивку ev3dev и запустить EV3 с этой прошивкой. Как это сделать написано в статье «ev3dev – устанавливаем и настраиваем Debian Linux на LEGO Mindstorms EV3».
Проверка работоспособности Python и библиотеки ev3dev.ev3
В последних версиях ev3dev уже установлен Питон и библиотека ev3dev.ev3, но прежде чем пойти дальше, проверим их работоспособность. Подключитесь к EV3 через программу PuTTY и выполните команду python3, чтобы запустить терминал Python. В результате вы увидите нечто подобное:
Здесь символы «>>>» - это приглашение для ввода команд. Команды, адресованные терминалу Python, нужно вводить после этих символов и нажимать Enter, чтобы команда выполнилась. Итак, сначала импортируем библиотеку ev3dev.ev3, для этого выполните в терминале следующую команду:
Затем проверим, работает ли динамик EV3, для этого выполните команду:
В результате EV3 должен сказать фразу «Welcome to the ev3dev project!».
Дальше можно проверить работу датчика, например, подключите к любому порту датчик касания и вбейте в терминал следующие строки кода (после последней строчки ещё лишний раз нажмите Enter, чтобы завершить ввод кода):
Программа будет зажигать левый красный светодиод, пока вы нажимаете на датчик касания. Чтобы выйти из цикла нажмите Ctrl+C.
Теперь можете проверить работу мотора. Подключите большой мотор к порту A и введите в терминал следующие строки кода:
Последняя строчка кода будет поворачивать мотор со скоростью 500 тиков в секунду, что составляет около 1,4 оборота в секунду, в течении 3000 миллисекунд.
Если все вышеперечисленные тесты работают успешно, можно двигаться дальше.
Написание программ на Python для ev3dev
По большому счёту писать программы на питоне вы можете в любом текстовом редакторе. Есть даже редакторы с подсветкой синтаксиса, такие как Notepad++. Достаточно лишь создать файл с расширением «.py». Используйте следующий шаблон для написания программы:
Первые две строки должны быть включены в каждую вашу программу для ev3dev. Первая строка даст возможность запускать вашу программу прямо с EV3, а вторая – импортирует библиотеку ev3dev.ev3. Например, файл с программой, где робот приветствует нас голосом, будет выглядеть так:
Чтобы программу можно было запустить, файл программы должен быть помечен как исполняемый. Сделать это можно, выполнив команду «chmod +x my-file.py», где «my-file.py» – имя файла с вашей программой, или в программе WinSCP в окне свойств файла, поставив галочки X (X означает eXecute, т.е. выпонять).
После этого вы можете запустить «my-file.py» из файлового браузера ev3dev или выполнив команду «./my-file.py».
Но редактирование файла в текстовом редакторе не даёт возможности комфортной разработки и отладки, поэтому будем устанавливать настоящую среду разработки, поддерживающую разработку на языке Python.
Выбор среды разработки
Сред разработки для Питона с возможностью отладки есть несколько, но все они платные, кроме одной – это комбинация из среды разработки Eclipse и плагина PyDev. Кроме того для их работы и для нашего комфорта нам ещё понадобятся Java 8, интерпретатор Python, библиотека JCraft и исходники библиотеки ev3dev.ev3. Всё это мы сейчас и будем устанавливать и настраивать.
Если вы знаете ещё какие-либо бесплатные среды разработки для Python, напишите об этом в комментариях.
Установка Java 8
В требованиях к плагину PyDev указано, что на компьютере должна быть установлена Java 8, но не написано что это должно быть JRE (среда выполнения Java) или JDK (комплект разработчика Java). Я думаю, что будет достаточно JRE, но если вам нужен JDK, то лучше поставить его, т.к. JDK включает в себя JRE. Скачать дистрибутив для установки JRE можно на официальном сайте здесь, а JDK - здесь. Я установил JDK. Процесс установки я описывать не буду, т.к. ничего сложного в нём нет.
Если у вас же установлена Java, но вы не знаете какая версия, можете в консоли выполнить следующую команду:
В результате вы получите примерно следующий ответ:
Здесь в первой строке указана версия Java, в примере это «1.8.0_91». Единицу в начале здесь нужно откинуть, получится 8. Это и есть версия Java. Третья цифра 91 – это номер обновления. Т.е. в примере получается, что на компьютере по умолчанию используется Java 8. Другие способы узнать версию Java можете посмотреть в официальной документации здесь.
Установка и первый запуск Eclipse
Установка Eclipse очень простая: достаточно скачать архив с официального сайта и распаковать его. Лучше использовать сборку для Java-разработчиков Eclipse IDE for Java EE Developers.
После распаковки у вас появится папка eclipse, в которой вы найдёте файл eclipse.exe. Для запуска среды разработки Eclipse, запустите этот файл.
В процессе запуска Eclipse спросит у вас, где будет находиться рабочая папка с вашими проектами. Вы можете оставить предложенный путь к рабочей папке или указать свой. Я поставил путь «C:\ev3dev-Python». Чтобы этот диалог не появлялся при каждом запуске Eclipse, можно установить галочку «Use this as the default and not ask again». Однако если вы планируете использовать несколько рабочих папок, то лучше эту галочку не устанавливать.
После того как Eclipse запустится вы увидите приветствие, как показано на рисунке ниже. Закрыть его можно щёлкнув по крестику закладки «Welcome».
После этого вы увидите Eclipse в своём обычном виде.
Установка плагина PyDev
Удостоверьтесь, что компьютер подключен к интернету и запустите Eclipse, если он ещё не запущен. Выберите пункт меню «Help -> Install New Software...».
В открывшемся диалоге в поле «Work with:» укажите адрес «http://www.pydev.org/updates» и нажмите кнопку «Add…», чтобы установить последнюю стабильную версию плагина PyDev. Если вас интересуют ночные сборки, то укажите «http://www.pydev.org/nightly».
Также рекомендуется убрать галочку «Contact all update sites during install to find required software», чтобы Eclipse не опрашивал все доступные сайты обновлений. Это существенно сократит время установки плагина.
После нажатия на кнопочку «Add...» появится небольшой диалог, в котором просто нажмите кнопку «OK».
Через некоторое время в списке диалога «Install» отобразятся доступные для установки компоненты. «PyDev» - это собственно сам плагин. Пункт «PyDev Mylyn integration» - это необязательная часть плагина, позволяющая интегрировать его с системой Mylyn. Поставьте обе галочки и нажмите «Next >».
После этого Eclipse покажет, какие компоненты будут установлены. Нажмите «Next >».
Следующим этапом вам нужно будет согласиться с лицензиями. Прощёлкать всё лицензии можно в списке слева, при этом текст лицензии будет отображаться справа. Выберите здесь пункт «I accept the terms of the license agreements» и нажмите «Finish».
После этого начнётся установка.
Через некоторое время вы увидите предупреждение, что устанавливаемое ПО не подписано. Нажмите здесь «OK».
Дальше Eclipse спросит, доверяете ли вы сертификату. Установите здесь галочку напротив сертификата «Brainwy Software; PyDev; Brainwy» и щёлкните по кнопке «OK».
После того как установка успешно завершится, появится диалог с предложением перезапустить Eclipse. Нажмите здесь «Yes».
После перезапуска Eclipse вы можете проверить установку. Для этого выберите пункт меню «Window -> Preferences» и в окне настроек найдите пункт PyDev. Если этот пункт есть, то установка прошла успешно. Кстати, здесь вы можете посмотреть версию плагина PyDev. После этого, окошко настроек можно закрыть, щёлкнув по кнопке «Cancel».
Настройка интерпретатора в PyDev
Чтобы плагин PyDev давал нам возможность создавать проекты в Eclipse мы должны в настройках PyDev указать, где установлен интерпретатор Python. Если интерпретатор на ПК у вас не установлен, вы можете скачать дистрибутив Python с официального сайта и установить его. На страничке загрузки вы можете выбрать любую версию Python. Для нашей задачи версия интерпретатора не важна, поэтому вы можете выбрать любую версию, например, последнюю. Я на всякий случай выбрал такую же версию, как и версию на EV3 - 3.4.2. Чтобы узнать версию Питона на EV3, выполните команду «python3 –V».
Теперь в Eclipse выберите пункт меню «Window -> Preferences», найдите в списке слева «PyDev -> Interpreters -> Python Interpreter» и нажмите кнопку «New...».
В поднявшемся окошке, нажмите «Browse...» и откройте файл python.exe. В случае если вы установили Python версии 3.4.2, то по умолчанию – это будет путь «C:\Python34\python.exe». Нажмите «OK».
В следующем окошке Eclipse попросит подтверждения для добавления путей в SYSTEM PYTHONPATH. Нажмите «OK».
После этого настройка интерпретатора для PyDev завершена. Нажмите «OK», чтобы сохранить изменения.
Установка библиотеки JCraft
Писать код Python мы будем в файлах, расположенных локально в рабочей папке, и произведённые нами настройки позволят делать автоматическое копирование изменённых файлов на EV3. Для такой синхронизации нам понадобится библиотека JCraft. Скачать её можно на официальном сайте здесь (ищите на странице раздел «Download»). Вам нужно скачать файл «jsch-0.1.54.jar» или более позднюю версию.
Скачанный файл можно положить в любое место. Но, поскольку работать с библиотекой JCraft будет библиотека Ant (библиотека Ant по умолчанию сразу включена в Eclipse), я положил этот файл в папку библиотеки Ant, а именно «plugins/org.apache.ant_VERSION/lib» в месте установки Eclipse. Здесь VERSION – это версия библиотеки Ant. У меня эта папка оказалась следующей: «C:\eclipse\plugins\org.apache.ant_1.9.6.v201510161327\lib».
Теперь откройте настройки Eclipse (пункт меню «Window -> Preferences»), откройте «Ant -> Runtime», выберите «Ant Home Entries (Default)» на закладке «Classpath» и нажмите кнопку «Add External JARs...».
Откройте файл с библиотекой JCraft. После этого он появится в списке файлов библиотек, см. картинку ниже. Нажмите «OK», чтобы сохранить изменения.
Добавление шаблона программы Python для EV3
Как уже было написано в начале статьи, каждый файл программы Python для EV3 должен начинаться с определённых строк. Для удобства, добавим в Eclipse шаблон для нового файла Python. Откройте настройки, выбрав пункт меню «Window -> Preferences», найдите в списке слева «PyDev -> Editor -> Templates» и нажмите на кнопку «New...».
В поле «Name» задайте имя шаблона, я назвал его «EV3». В списке «Context» выберите «New Module». Уберите галочку «Automatically insert». Можете также задать описание в поле «Description». А в поле «Pattern» задайте сам шаблон. Я вбил сюда шаблон, который приведён в начале статьи. Нажмите «OK».
Как видите, в списке шаблонов появился наш шаблон. Нажмите «OK», чтобы сохранить изменения.
Создание нового проекта PyDev
Наконец всё настроено и можно приступить к созданию проекта и последующему программированию. Для создания нового проекта, выберите пункт меню «File -> New -> Project...».
Затем в диалоге выберите «PyDev Project» и нажмите «Next >».
В следующем окне есть много полей. Рассмотрим каждое из них:
-
-
- В первом поле «Project name» задаётся имя проекта, я ввёл здесь «my_project».
- В поле «Project contents» указывается путь к файлам проекта, я оставил здесь предложенный по умолчанию вариант.
- В группе «Project type» выбирается интерпретатор для проекта, здесь мы оставим «Python».
- В выпадающем списке «Grammar version» можно выбрать версию грамматики Питона. Она не обязательно должна совпадать с актуальной версией интерпретатора. Вы спокойно можете использовать более новый интерпретатор, в то время как грамматика будет совместима с более старым интерпретатором, например, вы можете использовать грамматику Python 2.7 с интерпретатором Python 3.4. Я выбрал здесь версию 3.0 - 3.5.
- В поле «Interpreter» выбирается интерпретатор, который должен использоваться для автодополнения и проверки синтаксиса. Оставлю здесь интерпретатор по умолчанию, т.е. тот, который мы настроили раньше, см. выше раздел «Настройка интерпретатора в PyDev».
- Кнопочка «Additional syntax validation» позволяет выбрать дополнительные синтаксисы, на которые будет проверен проект. Например, если код должен быть совместим с Python 2 и Python 3, то вам нужно выбрать версию грамматики Python 3, и дополнительную проверку синтаксиса для Python 2. Я не буду здесь ничего выбирать.
- Настройки ниже связаны с настройкой PYTHONPATH, т.е. путей к связанным проектам или ресурсам. Первый вариант подходит для проектов, для которых папка проекта добавляется в PYTHONPATH. При выборе второго варианта в папке проекта будет создана папка «src», которая будет добавлена в PYTHONPATH. Третий вариант – это добавление путей в PYTHONPATH вручную на следующем шаге мастера. Четвёртый вариант – не добавляем ничего в PYTHONPATH, т.к. это будет сделано позже. Здесь я оставлю первый вариант.
-
Нажмите «Finish».
Если Eclipse увидит, что у вас не выбрана перспектива PyDev, то он предложит её открыть. Согласитесь, нажав «Yes».
После этого на панели «PyDev Package Explorer» появится папка с вашим проектом. Вы можете открыть папку и посмотреть, что в ней находится. Как видите, кроме ссылки на интерпретатор Python 3.4, пока ничего больше нет. Ещё рядом с папкой проекта появилась папка RemoteSystemsTempFiles, но не обращайте на неё внимания.
Добавление в проект ссылок на исходники библиотек ev3dev.ev3 и PyDev
Чтобы при работе с классами библиотек ev3dev.ev3 и PyDev, Eclipse выдавал подсказки и делал автодополнение, нам нужно добавить в проект ссылки на исходники этих библиотек.
Скачать исходники библиотеки ev3dev.ev3 можно здесь. Щёлкните по кнопке «Clone or download», а затем по кнопке «Download ZIP». Скачанный архив распакуйте в любое место. Я распаковал его прямо на диск «C:» и в результате у меня получилась папка «C:\ev3dev-lang-python-develop».
Теперь добавьте в проект ссылку на библиотеку ev3dev.ev3. Для этого щёлкните по названию проекта правой кнопкой мышки и выберите пункт меню «Properties».
В настройка проекта откройте «PyDev - PYTHONPATH» и перейдите на закладку «External Libraries». Здесь нажмите на кнопку «Add source folder» и добавьте папку «ev3dev-lang-python-develop», у меня это путь «C:\ev3dev-lang-python-develop».
Аналогично добавьте путь к исходникам библиотеки PyDev, которые расположены в папке «pysrc». Папка «pysrc» должна быть в месте установки Eclipse в подпапке «plugins/org.python.pydev_ВЕРСИЯ_PYDEV», где ВЕРСИЯ_PYDEV – это версия плагина PyDev. Точно определить версию можно в настройках (пункт меню «Window -> Preferences») пункт «PyDev», см. картинку ниже. У меня папка «pysrc» оказалась в папке «C:\eclipse\plugins\org.python.pydev_5.7.0.201704111357».
Таким же образом нужно добавлять ссылки на исходники всех используемых библиотек, чтобы работать с ними было комфортно. Нажмите «OK», чтобы сохранить настройки.
Добавление модуля Python в проект
Теперь напишем простенькую программу. Допустим, это будет программа, которую вы уже видели в начале статьи, которая заставляет робота EV3 говорить фразу «Welcome to the ev3dev project!». Только теперь мы сделаем это в Eclipse, а заодно посмотрим, как среда разработки будет нам помогать в написании кода и проверке синтаксиса.
Для создания файла программы Python, щёлкните по проекту правой кнопкой мышки и выберите пункт меню «New -> PyDev Module».
В следующем диалоге задайте имя модуля, например, «my_module» и нажмите «Finish».
После этого появится пара диалогов. Первый диалог запросит у вас шаблон, по которому нужно создать файл программы. Чуть раньше мы уже сделали шаблон под названием «EV3», поэтому просто выберите его и нажмите «OK».
В диалоге «Default Eclipse preferences for PyDev» показаны некоторые настройки плагина PyDev, которые вы можете захотеть изменить. Но мы не будем ничего менять. Нажмите «OK», чтобы закрыть этот диалог.
Теперь мы наконец-то видим свой созданный модуль «my_module.py». При этом, созданный файл сразу содержит текст, который мы задали в шаблоне.
Как видите Eclipse сразу начал показывать какое-то предупреждение: слева от 2-й строчки появился восклицательный знак. Подведите к нему мышку и увидите описание возможной проблемы, см. рисунок ниже. Здесь Eclipse предупреждает нас о том, что мы сделали импорт модулей, которые не используем. Это не удивительно, ведь у нас строит звёздочка, это значит, что мы импортируем все модули библиотеки. Не будем обращать внимание на это предупреждение.
Напишем на 4-й строке вместо комментария слово «Sound». После этого Eclipse сразу начинает подсказывать возможные варианты для автодополнения. На картинке видно, что он нашёл два класса «Sound» и «SoundSensor». Для выбранного класса, сразу показывается подсказка.
Если вы щёлкните по подсказке, то на ней появится полоса прокрутки, и вы сможете просмотреть всю справку, выделить и скопировать нужные моменты.
Теперь мы поставим точку после слова «Sound» и Eclipse покажет нам доступные методы и атрибуты этого класса. Для каждого из них так же высвечивается подсказка.
Когда виден этот список, вы можете передвигаться по нему с помощью клавиш-стрелок и нажать Enter, чтобы подтвердить выбор. При этом после точки сразу будет написан выбранный метод, а в скобках вы увидите заготовки для ввода параметров и подсказку сверху. Слева сразу будет показана ошибка (красный кружок с буквой «X»), т.к. здесь пока неправильный синтаксис.
Вводим нужные параметры, а ненужные удаляем. Дальше добавляем вызов метода wait. Вот и готова наша программа. Теперь изменения можно сохранить, для этого нажмите Ctrl+S, чтобы сохранить только текущий редактируемый файл, или Ctrl+Shift+S, чтобы сохранить все изменения в проекте. После сохранения исчезнет звёздочка слева от имени файла на закладке. Вообще, при написании программы, лучше почаще сохранять все изменения, т.е. почаще нажимать Ctrl+Shift+S.
При написании этих строк кода, я вкратце продемонстрировал вам, как работает автодополнение, подсказки, а также проверка и подсветка синтаксиса.
Автоматическое копирование файлов программ Python на EV3
Каждый раз после того как мы меняем файл в Eclipse на своём компьютере эти изменения происходят только на нашем компьютере, но не происходят на EV3. Нам нужно, чтобы эти изменения так же синхронно происходили и на нашем EV3. Для этого нам нужно настроить Eclipse так, чтобы при каждом сохранении файла на ПК, происходило его автоматическое копирование на EV3. В этом нам помогут библиотеки Ant и JCraft. Это мы сейчас и сделаем.
Сначала нам нужно создать в проекте файл «build.xml». Для этого щёлкните правой кнопкой мышки по проекту и выберите пункт меню «New -> File...».
В следующем диалоге в поле «File name» задайте имя «build.xml» и нажмите «Finish».
В открывшемся файле «build.xml» напишите следующий текст и сохраните изменения:
Файл «build.xml» в Eclipse по умолчанию ассоциируется с библиотекой Ant. В этом файле описываются действия, которые должна выполнить библиотека Ant. В нашем случае здесь описано, откуда нужно взять файлы и куда их нужно скопировать. Я не буду сильно углубляться в описание того, как работает библиотека Ant и как её нужно настраивать с помощью файла «build.xml», но опишу то, что используется в этом файле. Вы можете использовать этот файл, как образец.
Первый элемент «project» (проект) - это обязательный корневой элемент файла «build.xml». В атрибуте «name» указывается имя проекта. Я указал здесь «ev3sync».
Дальше идёт элемент «target» - это цель. Целей в проекте может быть несколько. В атрибуте «name» указывается имя цели. В моём примере это тоже «ev3sync».
Внутри цели указываются задачи, которые нужно выполнить для достижения этой цели. Здесь у нас только одна задача, которая выполняется библиотекой JCraft – это элемент «scp». Эта задача как раз и выполнит копирование всех файлов Python и папки проекта на EV3. Здесь в атрибуте «todir» указана папка назначения в формате «user[:password]@host:/dir/path», т.е. сначала идёт имя пользователя (у нас это «robot»), затем через двоеточие пароль (у нас это «maker»), затем после собачки имя или IP-адрес EV3 (у нас это «ev3dev»), затем после двоеточия путь (у нас это директория «/home/robot»). В атрибутах «dirmode» и «filemode» указываются, какие атрибуты нужно выставить созданным папкам и файлам. Обратите внимание, что для уже созданных файлов атрибуты не поменяются.
Внутри элемента «scp» с помощью элемента «fileset» указывается набор файлов, которые нужно скопировать на EV3. В атрибуте «dir» указывается папка, где находится набор файлов. Здесь у нас указана точка, это значит, что такой папкой будет папка проекта. С помощью атрибута «casesensitive» я указал, что в именах файлов регистр не важен.
Внутри элемента «fileset» с помощью элемента «include» указываются файлы, которые должны быть включены в набор файлов. Здесь с помощью атрибута «name» я указал, что в набор файлов входят все файлы с расширением «.py», в том числе находящиеся и в подпапках.
В качестве примера я добавил элемент «exclude», с помощью которого можно указать, какие файлы не должны входить в набор файлов. Здесь с помощью атрибута «name» я указал, что в набор файлов не входят файлы, в имени которых есть слово «Test», в том числе и в подпапках.
В итоге мы получили задание с названием «ev3sync», которое будет копировать все файлы проекта с расширением «.py» в имени которых нет слова «Test» на EV3 в папку «/home/robot».
Подробнее обо всех задачах библиотеки Ant смотрите на официальном сайте здесь.
Теперь настроем Eclipse так, чтобы при каждом изменении файлов проекта, запускалось наше задание «ev3sync». Сначала откройте свойства проекта. Для этого щёлкните правой кнопкой по проекту и выберите меню «Properties». В диалоге свойств откройте «Builders» и нажмите кнопку «New...».
В следующем диалоге выберите «Ant Builder» и нажмите «OK».
Поднимется окно «Edit Configuration». Здесь на закладке «Main» нажмите на кнопку «Browse Workspace...».
В следующем окне найдите файл «build.xml», щёлкните по нему и нажмите «OK».
После этого в поле «Buildfile» появится строка «${workspace_loc:/my_project/build.xml}».
Теперь перейдите на закладку «Targets» и нажмите кнопку «Set Targets...» напротив поля «Auto Build».
В следующем окне выберите цель «ev3sync», которую мы сделали ранее в файле «build.xml» и нажмите «OK».
После этого в поле «Auto Build» появится наша цель «ev3sync». Нажмите «OK».
В следующем окне тоже нажмите «OK».
После этого появится консоль, где будет написано, что файл build.xml построен успешно.
Теперь переключитесь на закладку с файлом «my_module.py», поставьте в нём где-нибудь пробел и сотрите его, чтобы Eclipse зафиксировал изменения. После этого сохраните изменения и посмотрите, что будет написано в консоли (консоль можно развернуть, дважды щёлкнув на заголовок). Как видите, произошло подключение к EV3 и задание успешно выполнилось. Можете убедиться, что файл «my_module.py» скопировался в папку «/home/robot» на EV3. Теперь при каждом сохранении будет происходить копирование файла «my_module.py» на EV3.
Запуск программы на EV3
Лучшего способа запуска программы на Питоне чем запуск через встроенный в Eclipse SSH терминал я не нашёл. Консоль хороша ещё и тем, что выполнение программы можно прервать. Однако Eclipse очень мощный инструмент с множеством возможностей, поэтому вы можете найти и лучший способ запуска программ. Если найдёте, напишите об этом в комментариях.
Итак, чтобы запустить программу Python, откройте терминал Eclipse. Для этого щёлкните по соответствующей иконке или нажмите клавиши Ctrl+Alt+Shift+T.
В поднявшемся диалоге «Launch Terminal» выберите терминал «SSH Terminal», в поле «Host» кажите IP-адрес или имя EV3, чуть ниже заполните имя пользователя и пароль (по умолчанию robot/maker), установите галочки «Save user» и «Save password» и нажмите «OK».
После подключения вы увидите панель с терминалом внизу окна Eclipse.
Чтобы развернуть терминал (в том числе и любую другую панель Eclipse) на всё окно, дважды щёлкните по названию панели. Как видите, работая в Eclipse, вы можете забыть про PuTTY. Чтобы свернуть развёрнутую панель обратно, опять щёлкните по заголовку дважды.
Теперь чтобы запустить нашу программу наберите в терминале следующую команду:
Для остановки выполняемой программы вы можете воспользоваться сочетанием клавиш Ctrl+C или Ctrl+Z.
Отладка программы Python на EV3
Поскольку программа в нашем случае выполняется на EV3, а отлаживаться мы должны на компьютере, нас интересует удалённая отладка. Отладка в данном случае не будет похожа на то, как мы обычно это делаем. Здесь нужно будет определённым образом подготовить EV3 и Eclipse и добавить в код программы в нужном месте определённую строчку кода. Также нужно, чтобы EV3 по сети «видел» ваш ПК. Но обо всём по порядку.
Первое, что нужно сделать – это скопировать отладчик PyDev на EV3. Для этого вам нужно найти в месте установки плагина PyDev папку «pysrc» и скопировать её на EV3.
Папка «pysrc» находится в месте установки Eclipse в подпапке «plugins/org.python.pydev_ВЕРСИЯ_PYDEV», где ВЕРСИЯ_PYDEV – это версия плагина PyDev. Точно определить версию можно в настройках (пункт меню «Window -> Preferences») пункт «PyDev», см. картинку ниже. У меня папка «pysrc» оказалась в папке «C:\eclipse\plugins\org.python.pydev_5.7.0.201704111357».
Директорию на EV3, в которую нужно скопировать папку «pysrc», можете выбрать любую. Я скопировал эту папку в домашнюю директорию «/home/robot».
Теперь нам нужно запустить отладочный сервер PyDev. Для этого сначала откройте перспективу «Debug» (щёлкните по кнопке «Open Perspective», затем выберите в диалоге «Debug» и нажмите «OK»).
В открывшейся перспективе, выберите пункт меню «Pydev -> Start Debug Server».
После запуска сервера вы увидите в консоли надпись «Debug Server at port: 5678».
Теперь в начале кода нужно прописать пути к модулям «pydevd» и «_pydevd_bundle» (первый находится в папке «pysrc», второй – в папке «pysrc/_pydevd_bundle»), затем подключить модуль «pydevd», а затем в том месте, где нужно получить отладочную информацию дописать вызов метода «pydevd.settrace('ААА.ААА.ААА.ААА')», где вместо ААА.ААА.ААА.ААА нужно указать IP-адрес или имя вашего компьютера. IP-адрес своего компьютера можете узнать выполнив в консоли Windows команду «ipconfig». Вот пример программы с вызовом метода «settrace»:
Сохраните изменения, чтобы файл «my_module.py» скопировался на EV3, и запустите программу через терминал (чтобы увидеть уже открытый и подключенный на другой перспективе терминал выберите пункт меню «Window -> Show View -> Terminal»).
После этого через некоторое время выполнение программы остановится на строке 11 (это видно в редакторе и на панели «Debug»), а на панели «Variables» появится список и значения всех переменных (я выделил значение переменной «i»).
Вы можете подвести мышку к переменной «i» в тексте программы и в появившейся подсказке также будет показано значение переменной.
Чтобы запустить выполнение программы дальше, нажмите кнопку «Resume» или клавишу F8. В нашей программе выполняется цикл, поэтому выполнение опять остановится, и на панели «Variables» вы увидите, что строка с переменной «i» подкрасилась жёлтым цветом. Так подкрашиваются переменные с изменившимися значениями.
К сожалению, на точки останова Eclipse не реагирует при удалённой отладке. Однако после остановки на строке с методом «settrace» вы можете продолжить выполнение программы пошагово с помощью кнопок «Set Into» (F5), «Step Over» (F6) и «Step Return» (F7), см. картинку ниже.
Да, чуть не забыл. Если у вас вдруг возникнет проблема с тем, что отладчик PyDev не может найти исходник, добавьте соответствие удалённого и локального путей в настройках «Windows -> Preferences -> PyDev -> Debug -> Source Locator».
Подведём итог
Итак, теперь у вас есть мощная среда разработки полностью готовая к программированию на языке Python для EV3. Как вы могли убедиться, благодаря Eclipse и плагину PyDev вы сможете писать код, используя автодополнение, проверку синтаксиса и подсказки. Кроме того вы сможете отлаживать свою программу.
Ещё для программирования EV3 вам понадобится справочный материал. Описание библиотеки ev3dev.ev3 можете найти в документации. С проблемами и глюками можете обращаться на сайт поддержки. Исходники библиотеки ev3dev.ev3 можно найти на GitHub-е.
Надеюсь, материала в этой статье будет достаточно, чтобы удовлетворить ваши потребности при программировании робота EV3 на Питоне. А я желаю вам вдохновения для создания новых интересных проектов.
Комментарии
Community edition бесплатная.
Но мне до сих пор не хватает удобных способов или инструментов получать от робота данные сенсоров.
Пусть теми же сообщениями из родной среды или ещё как.
Но очень бы хотелось знать в реальном времени, что видит робот - отслеживать ошибочные измерения или не учтёные ситуации.
Вариант получать данные Ардуиной Отправлять их в ПК и там обрабатывать и отрисовывать Питоном - кажется слишком усложнённым.
Возможно ли получать и расшифрровывать сообщения или поток сразу Питоном на ПК?
Пусть программа сделана в родной граф.среде или в Бейсике.
Вариант получать сообщения Ардуиной через блютуз, а потом пересылать их в ПК, обрабатывать там Питоном и им же выводить удобно на экран. Кажется сложной как раз из-за лишней Ардуины.
Есть ли возможность подключаться и обрабатывать соообщения сразу питоном на ПК.
Без изменений на стороне блока?
RSS лента комментариев этой записи