В этой статье мы установим и настроим Eclipse для программирования блока Lego EV3 с прошивкой ev3dev на языке Python. Настроенный Eclipse не только будет поддерживать автодополнение кода и подсвечивать синтаксис, но и позволит его отлаживать. В том числе будет доступно наблюдение за изменением переменных во время выполнения роботом своей программы.
1. Требования к подготовке
1. Терпение. Статья длинная, но она того стоит!
2. SD карта с ev3dev. Инструкция по созданию.
3. Соединение блока с компьютером по USB-проводу или с помощью сети Wi-Fi (для этого понадобится Wi-Fi-адаптер, я проверил TP-Link 725 v2 и TP-Link 723, точно подойдут NetGear 1100 и Edimax 7811Un — но их найти, как говорится, днём с огнём …)
Замечание. Соединение через Wi-Fi потребует использование роутера, именно через него, т. е. через общую сеть, будет соединение с компьютером. Но здесь плюсом будет, то, что если на роутере есть интернет, то интернет будет доступен и на EV3 блоке. Это означает, что получив к нему удаленный доступ с компьютера (например, по SSH протоколу) вы можете устанавливать на нём программы прямо из репозитория linux (но обязательно в начале нужно будет обновить список
— достаточно обновить один раз (логин: robot, пароль: maker), далее уже ставить любые программы
).
2. SD карта с ev3dev. Инструкция по созданию.
3. Соединение блока с компьютером по USB-проводу или с помощью сети Wi-Fi (для этого понадобится Wi-Fi-адаптер, я проверил TP-Link 725 v2 и TP-Link 723, точно подойдут NetGear 1100 и Edimax 7811Un — но их найти, как говорится, днём с огнём …)
Замечание. Соединение через Wi-Fi потребует использование роутера, именно через него, т. е. через общую сеть, будет соединение с компьютером. Но здесь плюсом будет, то, что если на роутере есть интернет, то интернет будет доступен и на EV3 блоке. Это означает, что получив к нему удаленный доступ с компьютера (например, по SSH протоколу) вы можете устанавливать на нём программы прямо из репозитория linux (но обязательно в начале нужно будет обновить список
sudo apt update
sudo apt install <program_name>
Из минусов: мощность EV3-блока завораживает (шутка!), поэтому установка программ будет долгой, очень долгой (у меня пакет весом 180 МБ устанавливался полтора часа). По этой же причине лучше не делать sudo apt upgrade, т. к. для обновления всей системы ev3dev проще заново записать образ на SD карту.
Замечание: кроме Eclipse ещё тестировался редактор nxcEditor, который прекрасно программирует блоки NXT, но стабильного соединения по SSH от него к блоку EV3 получить не удалось, а в интернете информации про это не нашлось.
Далее изложение будет опираться на немного устаревшую, но всё равно замечательную, инструкцию с сайта http://proghouse.ru/article-box/117-ev3-python, обновленное и подправленное в некоторых местах (всё-таки исходная статья написана для windows!).
Логика установки
Мы установим IDE Eclipse, настроим в нём пути к интерпретатору, исходникам библиотеки, соединение с блоком EV3 по протоколу SSH, вывод автодополнений и др.Замечание: кроме Eclipse ещё тестировался редактор nxcEditor, который прекрасно программирует блоки NXT, но стабильного соединения по SSH от него к блоку EV3 получить не удалось, а в интернете информации про это не нашлось.
Далее изложение будет опираться на немного устаревшую, но всё равно замечательную, инструкцию с сайта http://proghouse.ru/article-box/117-ev3-python, обновленное и подправленное в некоторых местах (всё-таки исходная статья написана для windows!).
Важные моменты
Ниже представлен только мой опыт, он не претендует на полноту и правильность. Это только то, что оказалось достаточным в моём случае. Но, надеюсь, что он окажется полезным.2. Тестирование Python и SSH
Прошивка на SD-карте — ev3dev — основана на linux-дистрибутиве debian. Т.е. Python там стоит по умолчанию. Установим с EV3-блоком ssh-соединение и запустим простейший скрипт для тестирования интерпретора и библиотеки ev3dev.ev3.
1. Подключите к компьютеру EV3-блок по USB или Wi-Fi.
2. Установите SSH-соединение
3. Запустите Python
4. Импортируйте библиотеку ev3dev.ev3
5. Наберите
6. Выйдите из Python
7. Закройте SSH-соединение с EV3-блоком
1. Подключите к компьютеру EV3-блок по USB или Wi-Fi.
2. Установите SSH-соединение
ssh robot:maker@ev3dev.local
(пользователь: robot, пароль: maker)
(пользователь: robot, пароль: maker)
Альтернативно вместо ev3dev.local можете использовать ip-адрес EV3-блока, его можно посмотреть на экране блока. Например, ssh robot:maker@10.42.0.3
python3
4. Импортируйте библиотеку ev3dev.ev3
import ev3dev.ev3 as ev3
5. Наберите
ev3.Sound.speak('Welcome to the E V 3 dev project!').wait()
и нажмите Enter. Из динамика EV3-блока мужской голос должен сказать Welcome to the E V 3 project!
6. Выйдите из Python
exit()
7. Закройте SSH-соединение с EV3-блоком
exit
3. Установка Eclipse
Воспользуйтесь инструкцией по установке Eclipse.
Далее используется версия программы Eclipse Photon (Eclipse IDE for Java EE Developers).
4. Настройка Eclipse для Python
1. Создайте папку для проектов на Python
2. При запуске программа запросит нахождение рабочей папки, т. к. у нас будет использовать только Python, то нажмите кнопку Browse… и выберите папку ~/ev3dev-Python/
Если вы будете работать только в этой рабочей папке, то можно поставить галочку Use this as the default and do not ask again.
mkdir ~/ev3dev-Python/
2. При запуске программа запросит нахождение рабочей папки, т. к. у нас будет использовать только Python, то нажмите кнопку Browse… и выберите папку ~/ev3dev-Python/
Если вы будете работать только в этой рабочей папке, то можно поставить галочку Use this as the default and do not ask again.
5. Установка PyDev
1. Устанавливаем плагин PyDev (чтобы можно было программировать на Python). Для этого выбираем Help → Eclipse Marketplace …
4. Соглашаемся с лицензиями, выбрав I accept the terms of the license agreements и нажав кнопку Finish.
6. Настройка интерпретатора в PyDev
1. Чтобы PyDev заработал, необходимо в его настройках указать расположение интерпретатора Python.
2. Для этого проверьте, что у вас установлен Python (по умолчанию должен быть)
3. Если нет, установите его
5. Нажмите кнопку New.…
6. В появившемся окне нажмите кнопку Browse…
7. Укажите место расположения Python
8. Подтверждаем добавление путей в SYSTEM PYTHONPATH, нажимая OK.
9. Настройка интерпретатора завершена. Нажмите на кнопку Apply and Close.
2. Для этого проверьте, что у вас установлен Python (по умолчанию должен быть)
which python3
3. Если нет, установите его
sudo apt install python3
4. Откройте меню Window → Preferences, разверните в списке слева PyDev → Interpreters → Python Interpreter
5. Нажмите кнопку New.…
7. Укажите место расположения Python
8. Подтверждаем добавление путей в SYSTEM PYTHONPATH, нажимая OK.
9. Настройка интерпретатора завершена. Нажмите на кнопку Apply and Close.
7. Установка библиотеки JCraft
Далее, устанавливаем библиотеку JCraft для автоматической синхронизации редактируемого файла с его копией на EV3-блоке. Т.е. файл проекта сохраняется на компьютере в рабочей папке ev3dev-Python и при любых изменения моментально будет загружаться и обновляться на EV3-блоке.
1. Скачайте с официального сайта библиотеку JCraft (ищите в разделе Download файл jsch-0.1.54.jar или более позднюю версию) или скачайте её по ссылке:
https://sourceforge.net/projects/jsch/files/jsch.jar/0.1.54/jsch-0.1.54.jar/download
2. С JCraft будет работать библиотека Ant. Поэтому перейдите в папку с плагинами
cd ~/.p2/pool/plugins
3. Найдите папку плагина Ant. Для этого наберите
ls | grep org.apache.ant
4. Зайдите во вложенную в неё папку lib
cd org.apache.ant_1.10.3.v20180417-1627/lib
5. Скопируйте сюда скачанную ранее библиотеку JCraft. Например, если библиотека находится в стандартной папке Загрузки, то наберите
cp ~/Загрузки/jsch-0.1.54.jar ./
6. Теперь откройте настройки Eclipse (меню Windows → Preference). откройте Ant → Runtime, выберите Ant Home Entries (Default) на закладке Classpath и нажмите кнопку Add External JARs....
~/.p2/pool/plugins/org.apache.ant_1.10.3.v20180417-1627/lib
jsch-0.1.54.jar
Но т.к. .p2 — скрытая папка, она отображаться не будет. Чтобы она стала доступна, щёлкните правой кнопной мыши на свободно месте и поставьте с появившемся контекстной меню галочку Show hide files
8. Добавление шаблона программы Python для EV3
Каждый файл проекта на Python для EV3 должен начинаться с определённых строк. Для удобства добавим шаблон для нового файла.
1. Откройте настройки Window → Preferences, найдите слева в списке PyDev → Editor → Templates и нажмите кнопку New…
2. В появившемся окне уберите галочку Automatically insert, в списке Context — New Module. В поле Name напишите EV3
#!/usr/bin/env python3 from ev3dev.ev3 import * # TODO: Add your code here
и нажмите OK.
9. Создание нового проекта PyDev
10. Добавление в проект ссылок на исходники библиотек ev3dev.ev3 и Python
Чтобы Eclipse при работе с классами библиотек ev3dev.ev3 и Python выдавал подсказки и делал автодополнение добавим в проект ссылки на исходники этих библиотек.
1. Перейдите в папку установки библиотеки. Для определенности
cd ~/ev3dev-Python
2. Чтобы скачать исходники ev3dev.ev3 с сайта github, удобно пользоваться утилитой git, установите её
sudo apt install git
git clone https://github.com/ev3dev/ev3dev-lang-python.git
3. Далее добавим в проект Eclipse ссылку на скачанную библиотеку. Для этого щёлкните правой кнопкой мыши по названию проекта и выберите пункт Properties
4. В окне свойств проекта выберите в списке слева PyDev — PYTHONPATH. Далее выберите вкладку External Libraries и нажмите на кнопку Add source folder.
~/.p2/pool/plugins/org.python.pydev.core_6.4.3.201807050139/pysrc
8. Далее также как и ранее заходим в свойства проекта (Properties), выбираем PyDev — PYTHONPATH нажимаем Add source folder ещё раз, чтобы добавим путь к исходникам библиотеки PyDev (добавляете всю папку pysrc, у меня ~/.p2/pool/plugins/org.python.pydev.core_6.4.3.201807050139/pysrc).
11. Добавление модуля Python в проект
Создадим маленький проект, в котором EV3-блок будет говорить фразу Welcome to the E V 3 project как в начале статьи, но уже с помощью Eclipse, с поддержкой автодополнения и проверки синтаксиса.
1. Щёлкните правой кнопкой мыши по названию проекта, выберите New → PyDev Module
2. В следующем окне задайте имя модуля, например, first_module и нажмите Finish
Далее возникнет два диалоговых окна.
Далее возникнет два диалоговых окна.
3. В первом окне выберите шаблон EV3.
4. Во втором окне показаны некоторые настройки Python, которые можно сейчас изменить. Не изменяйте их. Просто нажмите OK.
5. Наконец-то, мы видим свой созданный модуль first_module.py, при этом он уже содержит ранее созданный шаблон.
6. Предупреждение на второй строке означает, что мы сделали импорт модулей, которые не используем. Мы импортируем все модули звёздочкой … import *. Игнорируем это замечание.
7. Удалим последнюю строку и напишем Sound
7. Удалим последнюю строку и напишем Sound
9. Если вы щёлкните по подсказке, появится полоса прокрутки, можно просмотреть всю справку, выделить и скопировать нужные участки кода.
Обратите внимание, что пока в строке не правильный синтаксис в её начале будет красный крестик.
10. Теперь поставьте точку после слова Sound. Eclipse покажет доступные методы и атрибуты класса Sound. По списку можно передвигаться клавишами-стрелками и выбирать нужный клавишей Enter.
12. Добавьте метод wait(). Наша программа готова. Чтобы сохранить изменения в текущем файле, нажмите комбинацию Ctrl + S — звёздочка слева от имени файла исчезнет. (А чтобы сохранить все изменения в проекте нужно нажать комбинацию Ctrl + Shift + S).
На выполненном проекте мы увидели как работает автодополнение, подсказки, подсветка кода и проверка синтаксиса.
12. Автоматическое копирование файлов программ Python на EV3
Настроим Eclipse так, чтобы текущий проект автоматически копировался на EV3-блок и автоматически там обновлялся при каждом его сохранении на компьютере. Воспользуемся для этого библиотеками Ant и JCraft.
1. Создайте файл build.xml. Для этого щёлкните правой кнопкой мыши по названию проекта и выберете New → File
Далее укажите название нового файла build.xml и нажмите Finish
<project name="ev3sync"> <target name="ev3sync"> <scp todir="robot:maker@ev3dev.local:/home/robot" trust="true" dirmode="755" filemode="755"> <fileset dir="." casesensitive="false"> <include name="**/*.py"/> <exclude name="**/*Test*"/> </fileset> </scp> </target> </project>
и сохраните изменения Ctrl + S
Смысл пунктов хорошо расписан в оригинальной статье. Процитирую её в спойлере:
От себя добавил пункт trust="true", без него не происходило соединение и изменил хост на ev3dev.local (было ev3dev).
Файл «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».
Первый элемент «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».
Теперь настроим применение созданного задания ev3sync при изменении файлов проекта.
3. Откройте свойства проекта (Properties).
6. В окне Edit Configuration перейдите на вкладку Main и для Buildfile нажмите кнопку Browse Workspace...
13. Снизу окна Eclipse появилась вкладка Colsole, в которой будет написано, что файл build.xml построен успешно.
13. Запуск программы на EV3
Программы на Python'е будем запускать через встроенный терминал Eclipse. Он позволит получить доступ к файловой системе EV3-блока, запускать и останавливать программы, в том числе принудительно, а в случае необходимости и удалять их.
В терминале мы уже работали, когда в начале статьи тестировали соединение SSH и язык Python. Теперь настроим SSH для встроенного терминала Eclipse.
В терминале мы уже работали, когда в начале статьи тестировали соединение SSH и язык Python. Теперь настроим SSH для встроенного терминала Eclipse.
1. Подключите к компьютеру EV3-блок (по USB или Wi-Fi).
2. Запустите Launch Terminal, нажав на соответствующую кнопку или комбинацией клавиш Ctrl + Alt + Shift + T.
3. Заполните поля настроек терминала.
Choose terminal — SSH Terminal
Host — обычно ev3dev.local или его ip-адрес, например, 10.42.0.3
User/Password — robot/maker
Encoding — UTF-8
Галочки на пунктах Save user и Save password
Нажимаем OK.
4. Далее нажимаем Yes для продолжения установки соединения
5. Внизу окна Eclipse рядом с панелью Console возникла панель Terminal с доступом к EV3-блоку.
После настройки SSH у меня возникла интересная особенность: история команд отображалась, а сама строка ввода не пропечатывалась (возможно у вас такого не будет). Чтобы это решить можно развернуть вкладку Terminal (делается двойным щелчком по названию вкладки)
и таким же образом свернуть эту вкладку. Прокрутите полосу прокрутки до самого низа и сравните — появилась надпись robot@ev3dev:~$
После настройки SSH у меня возникла интересная особенность: история команд отображалась, а сама строка ввода не пропечатывалась (возможно у вас такого не будет). Чтобы это решить можно развернуть вкладку Terminal (делается двойным щелчком по названию вкладки)
и таким же образом свернуть эту вкладку. Прокрутите полосу прокрутки до самого низа и сравните — появилась надпись robot@ev3dev:~$
Она уже скопирована в папку /home/robot/ EV3-блока, т. е. в домашней директории ~. Terminal уже открыт в этой папке. Для запуска напечатайте
python3 first_module.py
второй способ запуска — сделать файл исполняемым и запустить непосредственно его
chmod +x first_module.py
./first_module.py
7. Для принудительного прерывания программы из терминала можно использовать комбинацию клавиш Ctrl + C.
14. Отладка программы Python на EV3
Т.к. отладка будет выполняться на компьютере, а выполняться на EV3-блоке, то мы имеем дело с удалённой отладкой. Для её выполнения нужно подготовить оба устройства, а также добавить в код программы определённые команды. Работаем по алгоритму.
1. Скопируйте отладчик PyDev (папка pysrc) на EV3.
1.1. Мы уже определяли её местоположение. Если вы забыли это, то вернитесь к пункту Добавление в проект ссылок на исходники библиотек ev3dev.ev3 и Python и определите местоположение заново. У меня, учитывая версию PyDev, это ~/.p2/pool/plugins/org.python.pydev.core_6.4.3.201807050139/pysrc/.
1.2. Перейдите по адресу этой библиотеки
cd ~/.p2/pool/plugins/org.python.pydev.core_6.4.3.201807050139/
1.3. Подключите EV3-блок к компьютеру и, передайте эту папку с файлами на него
scp -r pysrc/ robot@ev3dev.local:~/pysrc/
(пароль: maker)
Мы скопировали папку pysrc в домашнюю директорию /home/robot/ EV3-блока.
2. Запустите отладочный сервер PyDev.
2.1. Откройте перспективу Debug (щелчок по кнопке Open Perspective, выбрать Debug и нажать Open).
2.2. В открывшейся перспективе выберите в меню PyDev → Start Debug Server.
В консоли появится надпись Debug Server at port: 5678
3. Внесите изменения в код
3.1. Узнайте ip-адрес вашего компьютера
ifconfig
3.2. Наберите код для демонстрации (можно в том же проекте first_module.py вместо старого содержимого или сохранить как ещё один проект, например, second_module.py)
#!/usr/bin/env python3 from ev3dev.ev3 import * i = 1 while i <= 3: i = i + 13.3. В начале кода пропишите пути к модулям pydevd (находится в папке pysrc блока EV3) и _pydevd_bundle (находится в папке pysrc/_pydevd_bundle блока EV3), далее подключите модуль pydevd и добавьте метод pydevd.settrace() c ip-адресом вашего компьютера в место, где нужно получить отладочную информацию.
#!/usr/bin/env python3 from ev3dev.ev3 import * sys.path.append('/home/robot/pysrc') sys.path.append('/home/robot/pysrc/_pydevd_bundle') import pydevd i = 1 while i <= 3: pydevd.settrace('192.168.0.10') i = i + 14. Подключите EV3-блок к компьютеру.
5. Сохраните файл, чтобы он обновился на EV3-блоке.
6. Запустите через SSH Terminal этот файл на EV3-блоке (чтобы открыть терминал, подключенный на другой перспективе, выберите меню Window → Show View → Terminal, если он не был открыт, то открываем его как обычно)
7. Во время выполнения программа остановится на 10 строке, на панели Variables (Переменные) появятся используемые переменные и их значения. См., например, переменную i
8. Если подвести курсор мыши к этой переменной в коде, появится подсказка с её значением.
9. Для продолжения выполнения программы нажмите F8 или кнопку Resume. Цикл опять остановится на следующей итерации, а в панели Variables строка с i пожелтеет, потому что её значение изменилось.
10. Удалённая отладка не позволяет использовать точки останова. Но после останова на строке с вызовом метода settrace можно пошагово выполнять программу с помощью кнопок Step Into (F5), Step Over (F6) и Step Return (F7).
Нерешенная проблема
1. При отладке в терминале у меня возникла ошибка
warning: Debugger speedups using cython not found. Run '"/usr/bin/python3" "/home/robot/pysrc/setup_cython.py" build_ext --inplace' to build.
2. Сюдя по всему, эта ошибка влияет на скорость отладки. Но не мешает отладке как таковой. Исправить ошибку мне не удалось. Указанная команда
"/usr/bin/python3" "/home/robot/pysrc/setup_cython.py" build_ext --inplace
Итог
Мы настроили Eclipse для программирования EV3-блока на языке Python. Теперь у нас есть система для написания кода с автодополнением, проверкой синтаксиса, подсказками и отладкой.
Материал о программировании для Lego EV3 на Python можно найти на большом количестве ресурсов в интернете. Вот некоторые из них
1. https://media.readthedocs.org/pdf/python-ev3dev/latest/python-ev3dev.pdf — документация языка Python для ev3dev.
2. https://sites.google.com/site/ev3python/ — описание основных конструкций библиотеки ev3dev с примерами, новости.
3. https://github.com/ev3dev/ev3dev-lang-python/ — исходники прошивки, краткое описание и обсуждение.
4. https://www.ev3dev.org/ - официальный сайт ev3dev.
Этой статьи бы не было без статьи Программируем робота LEGO Mindstorms EV3 на Python. Огромная благодарность авторам за проделанный труд. Здесь приведённый материал в некотором смысле является linux-адаптацией статьи под windows
Комментариев нет:
Отправить комментарий