Об этом проекте
rclnodejs — клиентская библиотека Node.js для ROS 2, которая предоставляет API на JavaScript и TypeScript для создания приложений ROS 2. Согласно README, она охватывает топики, сервисы, действия, параметры, lifecycle-узлы, поддержку TypeScript, подписки на RxJS Observable, интеграцию с Electron и доступ к ROS 2 из браузера.
Для установки требуются Node.js 20.20.2 или новее и SDK ROS 2, при этом перед установкой, сборкой или запуском необходимо загрузить среду ROS 2 (source). Пакет устанавливается командой `npm i rclnodejs`. Заявлены готовые бинарные файлы для Ubuntu 22.04 (Humble), 24.04 (Jazzy, Kilted) и 26.04 (Lyrical) на архитектурах x64 и arm64; в остальных окружениях выполняется сборка из исходного кода, а `RCLNODEJS_FORCE_BUILD=1` принудительно включает такую сборку. Для разработки в контейнерах предоставлен Dockerfile.
Для браузера в проекте описаны два варианта. `rclnodejs/web` — типизированный слой поверх графа ROS 2, возможности которого задаются списком разрешений в `web.json` или через флаги CLI. Он поддерживает типизированные `call`, `publish` и `subscribe`, транспорт WebSocket, необязательный HTTP-listener для `call`/`publish` и Server-Sent Events для `subscribe`, а также спецификацию OpenAPI 3.1, формируемую командой `rclnodejs-web openapi`. `rosocket` — тонкий WebSocket-шлюз, не имеющий браузерных зависимостей кроме встроенных WebSocket и JSON; он запускается командой `npx rosocket`.
Генерация сообщений выполняется автоматически: привязки JavaScript и объявления TypeScript генерируются для каждого интерфейса `.msg`, `.srv` и `.action` в загруженной среде во время `npm install`, а команда `npx generate-ros-messages` повторно запускает генерацию после установки дополнительных пакетов ROS. Сгенерированные файлы помещаются в `node_modules/rclnodejs/generated/`.
Среди дополнительных материалов описаны подписки на RxJS Observable с операторами `throttleTime()`, `debounceTime()`, `map()` и `combineLatest()`; демонстрации Electron, созданные с помощью Electron Forge и Three.js, включая демо манипулятора с двумя сочленениями; рекомендации по настройке TypeScript; сопутствующий `rclnodejs-cli` для скаффолдинга и оркестрации launch-файлов; а также документация по бенчмаркам. Проект распространяется под лицензией Apache License 2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.