Sobre o projeto

rclnodejs é uma biblioteca cliente Node.js para ROS 2 que expõe APIs JavaScript e TypeScript para a criação de aplicações ROS 2. De acordo com o README, ela abrange tópicos, serviços, ações, parâmetros, nós de ciclo de vida, suporte a TypeScript, assinaturas RxJS Observable, integração com Electron e acesso ao ROS 2 pelo navegador. A instalação requer Node.js 20.20.2 ou mais recente e um SDK do ROS 2, com o ambiente do ROS 2 carregado antes de instalar, compilar ou executar. O pacote é instalado com `npm i rclnodejs`. Binários pré-compilados estão documentados para Ubuntu 22.04 (Humble), 24.04 (Jazzy, Kilted) e 26.04 (Lyrical) em x64 e arm64; outros ambientes compilam a partir do código-fonte, e `RCLNODEJS_FORCE_BUILD=1` força uma compilação a partir do código-fonte. Um Dockerfile é fornecido para desenvolvimento em contêiner. Para o navegador, o projeto documenta duas opções. `rclnodejs/web` é uma camada tipada sobre o grafo do ROS 2 na qual os recursos são incluídos em lista de permissões em `web.json` ou por meio de flags CLI, com `call`, `publish` e `subscribe` tipados, transporte WebSocket além de um ouvinte HTTP opcional para `call`/`publish` e Server-Sent Events para `subscribe`, e uma especificação OpenAPI 3.1 emitida por `rclnodejs-web openapi`. `rosocket` é um gateway WebSocket enxuto sem dependências de navegador além do WebSocket e JSON nativos, iniciado por `npx rosocket`. A geração de mensagens é automática: vínculos JavaScript e declarações TypeScript são gerados para cada interface `.msg`, `.srv` e `.action` no ambiente carregado durante o `npm install`, e `npx generate-ros-messages` executa novamente a geração após a instalação de pacotes ROS adicionais. Os arquivos gerados ficam em `node_modules/rclnodejs/generated/`. O material adicional documentado inclui assinaturas RxJS Observable com operadores como `throttleTime()`, `debounceTime()`, `map()` e `combineLatest()`; demonstrações em Electron criadas com Electron Forge e Three.js, incluindo uma demonstração de manipulador de duas juntas; orientação de configuração TypeScript; um `rclnodejs-cli` complementar para scaffolding e orquestração de arquivos de launch; e documentação de benchmarks. O projeto é licenciado sob a Apache License 2.0.