Автор Тема: Lego EV3, ev3dev и проект RubiRobot  (Прочитано 34412 раз)

Оффлайн xdsl

  • Давно тут
  • **
  • Сообщений: 255
Lego EV3, ev3dev и проект RubiRobot
« : 06.06.2018 19:27:10 »
Более полугода разрабатываю проект RubiRobot (http://rubirobot.ru/), позволяющий использовать язык программирования FreePascal в программировании контроллера Lego EV3. На текущий момент проект перешел в стадию возможности использования на робототехнических соревнованиях, где, надеюсь, даст участникам значительные преимущества по сравнению со графическими языками и чуть менее значительные - по сравнению с классическими. Лицензия - LGPLv3.

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

Документация, утилиты, примеры, шаблон для Lazarus - все в комплекте.

Приглашаю всех любителей Lego EV3 и по совместительству - пользователей ALT Linux, не забывших школьный курс программирования на Паскале;), к тестированию и эксплуатации проекта. Буду благодарен за любые замечания и предложения.

Особые благодарности разработчикам ev3dev (http://ev3dev.org/), без которых бы проект RubiRobot не состоялся.

Быстрые ссылки:
1. Модифицированный образ ev3dev-jessie с обновлениями и библиотекой RubiRobotLib на борту: http://rubirobot.ru/files/img/ev3dev-rubirobot.img.bz2
2. Модифицированный образ ev3dev-jessie с обновлениями и библиотекой RubiRobotLib на борту, версия для роботехнических соревнований: http://rubirobot.ru/files/img/ev3dev-J-rubirobot-sport.img.xz
3. Библиотека RubiRobotLib: http://rubirobot.ru/files/src/RubiRobotLib.tar.gz
4. Документация http://rubirobot.ru/files/src/rubiro.manual.archive.pdf
5. Установщик системы кросскомпиляции и управления программами на базе библиотеки RubiRobotLib для AltLinux (7-8 платформы): http://rubirobot.ru/files/img/setupRubiRobot.tgz
« Последнее редактирование: 15.05.2019 13:46:26 от xdsl »

Оффлайн XBM

  • Давно тут
  • **
  • Сообщений: 478
  • Бэкап - акт проявления трусости.
    • Email
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #1 : 06.06.2018 20:53:30 »
Очень интересно.
Попробую в новом учебном году на занятиях.

Оффлайн xdsl

  • Давно тут
  • **
  • Сообщений: 255
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #2 : 07.06.2018 07:22:03 »
Через несколько часов после публикации инсталлятора (http://rubirobot.ru/files/img/setupRubiRobot.tgz) обнаружил в нем досадную ошибку. Установка прекращается, если в домашнем каталоге пользователя уже существует каталог bin. При установке на свеженький Alt это неактуально, но при переустановке сыграет. Исправил, заодно добавил в инсталлятор немного информативности и перезалил.

Сейчас работаю над графической оболочкой для консольного менеджера EV3. На сегодняшний день уже сидит в трее, сигнализирует о подключении-отключении EV3, имеет доступ ко всем функциям консольного менеджера, планирую интегрировать с анализатором портов EV3. Думаю будет очень удобно, по крайней мере моей дочери (5-й класс), нравится ;)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #3 : 07.06.2018 10:46:42 »
Более полугода разрабатываю проект RubiRobot (http://rubirobot.ru/), позволяющий использовать язык программирования FreePascal в программировании контроллера Lego EV3. На текущий момент проект перешел в стадию возможности использования на робототехнических соревнованиях, где, надеюсь, даст участникам значительные преимущества по сравнению со графическими языками и чуть менее значительные - по сравнению с классическими. Лицензия - LGPLv3.

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

Документация, утилиты, примеры, шаблон для Lazarus - все в комплекте.

Приглашаю всех любителей Lego EV3 и по совместительству - пользователей ALT Linux, не забывших школьный курс программирования на Паскале;), к тестированию и эксплуатации проекта. Буду благодарен за любые замечания и предложения.

Особые благодарности разработчикам ev3dev (http://ev3dev.org/), без которых бы проект RubiRobot не состоялся.
Библиотеку опакетить? В git не хотите её?
Андрей Черепанов (cas@)

Оффлайн xdsl

  • Давно тут
  • **
  • Сообщений: 255
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #4 : 07.06.2018 20:48:13 »
Библиотеку опакетить? В git не хотите её?
Мне кажется, рано. Система еще в активной разработке, возможны резкие изменения в инфраструктуре проекта. Но думаю, к осени окончательно все определится и особо меняться уже не будет, только экстенсивно разрастаться (поддержка новых датчиков, двигателей, наработка базы алгоритмов и т.п.). Тогда придет очередь и гитхаба и, надеюсь, пакетирования в репозитарии Альта.

По поводу пакетирования есть вопрос. Библиотека не является самодостаточной, для ее работы нужен модифицированный образ ev3dev, что в архиве 450МБ занимает. Возможно-ли его включение в репозитарий? Если да, то в репозитарии Альта появится дистрибутив Debian для armel ;). Если все это возможно, то потенциально вся система будет состоять из 3 пакетов:
1) модифицированный дистрибутив ev3dev (450МБ в архиве)
2) набор библиотек из этого дистрибутива, нужен для кросскомпиляции (90МБ в архиве)
3) библиотека RubiRobot, утилиты, инсталлятор кросскомпилятора (возможно, кросскомпилятор FreePascal для armel стоит собирать отдельным независимым пакетом)
 
P.S. Надеюсь, что размещению в репозитарии не помешает тот факт, что библиотека и все утилиты на сегодняшний день ТОЛЬКО НА РУССКОМ ЯЗЫКЕ. Изначально позиционировал систему как средство обучения робототехнике наших школьников и студентов, поэтому над английским переводом даже не задумывался. 

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 222
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #5 : 07.06.2018 21:58:35 »
1) модифицированный дистрибутив ev3dev (450МБ в архиве)
это уже на гитхабе без модификаций - https://github.com/ev3dev/ev3dev  8-)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #6 : 08.06.2018 07:21:14 »
Язык не проблема. Вот с образом проблема. Не сколько с размером, сколько с поддержанием его в актуальном состоянии.
Андрей Черепанов (cas@)

Оффлайн xdsl

  • Давно тут
  • **
  • Сообщений: 255
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #7 : 08.06.2018 07:44:10 »
Язык не проблема. Вот с образом проблема. Не сколько с размером, сколько с поддержанием его в актуальном состоянии.
Так как он предназначен для конкретного, неизменяемого железа, его актуальность не является, имхо, актуальной ;)

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

Ну а ручками я его периодически обязуюсь актуализировать. Вот как раз опубликовал версию RubiRobot 0.2.2, совместно с ней обновлю на выходных и образ по адресу http://rubirobot.ru/files/img/ev3dev-rubirobot.img.bz2. Там пока версия от февраля 2018.

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 222
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #8 : 08.06.2018 12:11:06 »
В любом случае, как актуализировать его в автоматическом режиме мне неизвестно, т.к. эмулятора железа контроллера EV3, на базе, например, докера, в природе не существует.
qemu обычно для такого используют.

Но вы же пишите что собирается кросскомпилятором? В альте есть такое (хоть поломанное и нерабочее по дефолту) для arduino.

Оффлайн xdsl

  • Давно тут
  • **
  • Сообщений: 255
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #9 : 08.06.2018 14:53:34 »
В любом случае, как актуализировать его в автоматическом режиме мне неизвестно, т.к. эмулятора железа контроллера EV3, на базе, например, докера, в природе не существует.
qemu обычно для такого используют.

Но вы же пишите что собирается кросскомпилятором? В альте есть такое (хоть поломанное и нерабочее по дефолту) для arduino.

Буду рад, если кто покажет, как на qemu эмулировать Lego EV3. Со всеми его аппаратными системами. Я не нашел.

По кросскомпилятору: Кросскомпилятор относится не образу ev3dev. Кросскомпилятором FreePascal на компьютере с ALTLinux собирается программа с использованием библиотеки RubiRobot, после чего копируется и запускается на EV3 средствами ssh. После копирования может запускаться уже и средствами ev3dev на EV3, в отсутствии всякой сети. Это альтернатива компиляции прямо на EV3, ибо девайс из очень неторопливых. Простая программа на FreePascal собирается на самом девайсе секунд за 5, а что-то более серьезное - секунд 25-50. Плюс потом запускается от 1 секунды (по ssh) до 4 секунд (средствами EV3). Но в любом случае это во много раз быстрее штатного питона, программы для EV3 на котором полностью оправдывают название языка - ползают как обожравшийся змей. Кросскомпилятором на ALTLinux весь цикл компиляция-копирование-запуск занимает от силы 5-10 секунд.

Вот прямо сейчас компилирую-копирую-запускаю-завершаю пустую программу с библиотекой RubiRobot помощью кросскомпилятора и утилиты ev3 из состава библиотеки:
[slinkin@sdanout examples]$ time -f%E ev3 fpccprun test.pas
Компилятор Free Pascal версии 3.0.0 [2018/05/15] для arm
Copyright (c) 1993-2015 by Florian Klaempfl and others
/home/slinkin/bin/arm-linux-ld.bfd: warning: link.res contains output sections; did you forget -T?
Программа test успешно скопирована на robot@ev3dev.local:/home/robot/
Запуск программы robot@ev3dev.local:/home/robot/test на исполнение:
----------------------
----------------------
Программа robot@ev3dev.local:/home/robot/test завершена
0:08.15

Все тоже самое в ssh-сессии прямо на роботе:
robot@ev3dev:~$ time (fpc test.pas && ./test)
Free Pascal Compiler version 2.6.4+dfsg-4 [2014/10/14] for arm
Copyright (c) 1993-2014 by Florian Klaempfl and others
Target OS: Linux for ARMEL
Compiling test.pas
Assembling program
Linking test
/usr/bin/ld.bfd: warning: link.res contains output sections; did you forget -T?
5 lines compiled, 25.8 sec

real 0m26.633s
user 0m17.030s
sys 0m2.310s

Итого - троекратное ускорение цикла + возможность использовать Lazarus, Geany и многое другое. Для более сложных программ выигрыш еще больше, т.к. основное время тратится не на кросскомпиляцию, а на копирование по ssh.
« Последнее редактирование: 08.06.2018 14:59:24 от xdsl »

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 222
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #10 : 08.06.2018 15:00:12 »
Буду рад, если кто покажет, как на qemu эмулировать Lego EV3. Со всеми его аппаратными системами. Я не нашел.
со всеми конечно не получится, но базовую систему погонять можно - https://github.com/ev3dev/ev3dev/issues/52

Оффлайн xdsl

  • Давно тут
  • **
  • Сообщений: 255
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #11 : 08.06.2018 20:15:48 »
Буду рад, если кто покажет, как на qemu эмулировать Lego EV3. Со всеми его аппаратными системами. Я не нашел.
со всеми конечно не получится, но базовую систему погонять можно - https://github.com/ev3dev/ev3dev/issues/52
Это видел и пробовал еще год назад, когда еще и RubiRobot не было, одни идеи. Не взлетело. Почему, сейчас уже не помню. Но судя по последним постам 14-го года, ничего с тех пор не изменилось.

Оффлайн xdsl

  • Давно тут
  • **
  • Сообщений: 255
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #12 : 08.06.2018 20:27:33 »
Если не заморачиваться автоматическим обновлением, и не нужно часто актуализировать образ, то ручками все решается беспроблемно. Собственно, последний этап решен здесь: https://forum.altlinux.org/index.php?topic=40985.0
В принципе, можно и автоматизировать, при наличии реального железа, желания и времени. 

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 222
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #13 : 08.06.2018 23:05:02 »
Это видел и пробовал еще год назад, когда еще и RubiRobot не было, одни идеи. Не взлетело. Почему, сейчас уже не помню. Но судя по последним постам 14-го года, ничего с тех пор не изменилось.
так а чему там не взлетать? процессоры ARM11 в qemu поддерживаются, ядро linux и корневая ФС у вас есть.
Может конечно оказаться что в конкретном дистрибутиве qemu обрезанный, но это надо проверить.

Оффлайн xdsl

  • Давно тут
  • **
  • Сообщений: 255
Re: Lego EV3, ev3dev и проект RubiRobot
« Ответ #14 : 09.06.2018 06:38:58 »
Это видел и пробовал еще год назад, когда еще и RubiRobot не было, одни идеи. Не взлетело. Почему, сейчас уже не помню. Но судя по последним постам 14-го года, ничего с тех пор не изменилось.
так а чему там не взлетать? процессоры ARM11 в qemu поддерживаются, ядро linux и корневая ФС у вас есть.
Может конечно оказаться что в конкретном дистрибутиве qemu обрезанный, но это надо проверить.
Вот честно уже не помню, что там было. Могу только сказать, что эксперименты проводил на седьмой платформе, x86-64. Но у меня к тому времени уже имелось два контроллера EV3, поэтому разбираться особо не стал, перешел на реальное железо. Тем более, что для разработки библиотеки нужно было общаться с датчиками, моторами, кнопками, ледами, звуковой системой и дисплеем блока. Ничего этого в эмуляторе, насколько понимаю, нет.