عن المشروع

rclnodejs هي مكتبة عميل Node.js لـ ROS 2 تعرض واجهات برمجة تطبيقات JavaScript و TypeScript لبناء تطبيقات ROS 2. وفقًا لملف README، فهي تغطي المواضيع والخدمات والإجراءات والمعاملات وعقد دورة الحياة ودعم TypeScript واشتراكات RxJS Observable وتكامل Electron والوصول إلى ROS 2 عبر المتصفح. يتطلب التثبيت وجود Node.js الإصدار 20.20.2 أو أحدث وحزمة تطوير ROS 2 (SDK)، مع تفعيل بيئة ROS 2 قبل التثبيت أو البناء أو التشغيل. يتم تثبيت الحزمة باستخدام `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` أو عبر أعلام سطر الأوامر، مع دوال مُنمذجة `call` و `publish` و `subscribe`، ونقل عبر WebSocket بالإضافة إلى مستمع HTTP اختياري للعمليات `call`/`publish` وأحداث الخادم المرسلة (Server-Sent Events) للاشتراك، ومواصفات 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` لإنشاء الهياكل الأساسية وتنسيق ملفات الإطلاق؛ ووثائق الاختبارات المعيارية. المشروع مرخص بموجب رخصة Apache License 2.0.