На момент написания статьи я работаю в образовательной организации и столкнулся с задачей установки среды блочного программирования для роботов VEX IQ второго поколения на дистрибутиве Alt Linux.

Немного о Vex

Компания VEX Robotics выпускает разнообразные наборы программируемых конструкторов для разных возрастных категорий. Конструкторы VEX IQ предоставляют возможность блочного программирования, что отлично подходит для обучения юных умов основам разработки и робототехники. Роботов линейки VEX IQ можно программировать на языках Python и на C++.

Проблема

На официальном сайте можно скачать среду разработки для VEX IQ, но только под операционные системы Windows, Mac, Android и Chromebook.
Запуск в среде Wine не подошёл — это оказалось довольно сложной задачей из-за драйверов и других технических нюансов.
Также у VEX есть веб-версия среды разработки, но на Linux она работает некорректно: веб-страница постоянно выдает ошибки.

Решение

Немного поискав в интернете, я нашёл плагин для Visual Studio Code, предназначенный для разработки под конструкторы VEX, и решил копать в эту сторону.
У меня возникла идея: если получится компилировать и загружать код из Visual Studio Code на устройство VEX, то можно будет разработать собственную программу для блочного программирования, копировать из неё код и вставлять его в Visual Studio Code для запуска.
Я скачал Visual Studio Code и плагин, подключил VEX-устройство и столкнулся с ошибкой: компьютер не мог его найти.

Ошибка поиска устройства Vex
Ошибка поиска устройства Vex

Плагин искал утилиту udevadm, которая отвечает за управление USB-устройствами, по пути /sbin/udevadm. Однако в Alt Linux эта утилита обычно располагается в /usr/local/bin/udevadm. Чтобы плагин смог её найти, я создал символическую ссылку и теперь при обращении по первому пути система автоматически перенаправляет запрос по второму.

Разработка собственного блочного редактора

Далее я занялся разработкой веб-страницы для блочного программирования устройств VEX IQ.
За основу я взял библиотеку для Node.js — Blockly. Она достаточно удобна для быстрого создания инструментов блочного программирования и поддерживает разные языки программирования.
Я изучил документацию API VEX IQ и проанализировал функционал официального блочного редактора. На основе этого я разработал собственную веб-страницу с конструктором блоков. В моём инструменте реализованы основные категории блоков для работы с VEX IQ, а также поддержка двух языков — русского и английского.

Разработанный блочный редактор
Разработанный блочный редактор

Установка и запуск

Чтобы запустить данный веб-сервис, требуется установка Node.js, npm и nvm.

Набор команд для установки всех нужных инструментов и настройки системы:

# Желательно выполнять от лица суперпользователя
# 1. Обновляем список пакетов
apt-get update

# 2. Устанавливаем epm (менеджер пакетов для Alt Linux) и Node.js с npm
apt-get install eepm node npm

# 3. Устанавливаем Visual Studio Code через epm
epm play code

# 4. Применяем изменения в ~/.bashrc
source ~/.bashrc

# 5. Создаём символическую ссылку для udevadm
ln -s /sbin/udevadm /usr/local/bin/udevadm

# 6. Устанавливаем нужную версию Node.js через nvm (от имени обычного пользователя)
nvm install 20

Чтобы упростить работу с инструментом для детей и учителей, я создал ярлык для быстрого запуска. При нажатии на ярлык запускается bash-скрипт, который делает следующее:

  1. Загружает переменные окружения для Node.js с нужной для работы проекта версией.

  2. Переходит в папку с проектом VexIQBlockly.

  3. Запускает локальный веб-сервер в фоновом режиме.

  4. Открывает Visual Studio Code.

  5. После закрытия Visual Studio Code автоматически завершает работу сервера.

Такой подход позволяет не открывать терминал и не вводить команды вручную — всё выполняется по одному клику.

#!/bin/bash -l
# Загружаем nvm и нужную версию Node.js
export NVM_DIR="$HOME/.nvm"
export NODE_VERSION="v20.20.2"
export PATH="$HOME/.nvm/versions/node/$NODE_VERSION/bin:$PATH"

# Переходим в папку с проектом и запускаем сервер в фоне
cd путь_до_проекта/vex-iq-blockly
npm start &
SERVER_PID=$!

# Даём серверу время на запуск
sleep 1

# Открываем Visual Studio Code и ждём его закрытия
code --wait ~/.

# Когда VS Code закрыт — убиваем сервер
kill $SERVER_PID

Итог

Таким образом, мне удалось настроить рабочую среду для программирования роботов VEX IQ 2 на Alt Linux.
Ссылки, которые могут быть полезны:

Комментарии (0)