ابتداءً من Ubuntu22.04 أو يونيو 2025، لم يعد الإصدار الأساسي الرسمي يدعم ROS1، وأوصى باستخدام نظام ROS2، ROS 2 في البنية والوقت الحقيقي والأمان والتوسعة البيئية أفضل بكثير من ROS 1، إذا كان تطوير المشروع الجديد موصى به لاستخدام ROS2 مباشرة، ولكن إذا كنت بحاجة إلى الترحيل للمفاضلة بين الموارد الحالية والمكاسب طويلة الأجل. علاقة مفصلة لدعم إصدار أوبونتو انظر الرابط [ROS و Ubuntu نسختان مختلفتان من العلاقة] ، المقارنة التالية بين الإطارين لتحليلها:
| إصدار ROS 2 | إصدار أوبونتو | LTS أم لا | وقت الإصدار |
| جازي | 24.04 (نوبل) | نعم (LTS) | 2024 |
| مُلَبَّد | 24.04 (نبيل) | لا يوجد | 2025-05 |
التاريخ والتطور
- ROS1: تم تطويره من قبل جامعة ستانفورد ومرآب ويلو، مع التركيز على البحث والنماذج الأولية.
- ROS2: بدأ في عام 2014، مستهدفًا الروبوتات من الدرجة الصناعية مع برمجيات DDS الوسيطة لتحسين القدرة في الوقت الحقيقي والدعم عبر المنصات والأمان.
الخلاصة: ROS1 هو الأنسب للأبحاث والنماذج الأولية، في حين أن ROS2 مثالي للنشر الصناعي والتجاري.
2. بنية النظام
| البُعد | ROS1 | ROS2 |
| البنية الأساسية | اعتماد بنية مركزية، بالاعتماد على العقدة الرئيسية (مدير العقدة) لتحقيق تسجيل العقدة والاتصال. | بنية موزعة، اتصال مباشر بين العقد، لا حاجة للسيد، دعم آلية الاكتشاف الديناميكي. |
| نموذج التواصل | نظام اتصال مخصص يعتمد على بروتوكول TCP/UDP، الذي يعاني من مشاكل مثل التأخير وفقدان الحزمة وعدم القدرة على التشفير. | بروتوكول اتصال موحد يعتمد على DDS، ويدعم التفاعل في الوقت الحقيقي والتشفير والتفاعل عبر المنصات. |
| الموثوقية | تعتمد على TCP للاتصال من نظير إلى نظير، عرضة لفقدان الحزمة | يتم ضمان الإرسال الموثوق به من خلال سياسات جودة الخدمة (على سبيل المثال موثوق). |
| نظام التجميع | يستخدم نظامي تجميع الروزبيلد (المبكر) والقطين. | تقديم نظام تجميع التحويل البرمجي لدعم إدارة تبعية أكثر مرونة وبناء متعدد اللغات. |
3. تجربة المستخدم
| البُعد | ROS1 | ROS2 |
| منحنى التعلّم | موارد مجتمعية غنية ووثائق ناضجة ومناسبة للبدء. | تزيد الميزات الجديدة من تكاليف التعلم (على سبيل المثال، تكوين DDS، وتصحيح الأخطاء في الوقت الحقيقي)، ولكنها أكثر قابلية للصيانة على المدى الطويل. |
| تكاليف الهجرة | تحتاج مشاريع ROS 1 إلى إعادة هيكلة منطق الاتصال وإدارة العقدة ونظام التجميع للانتقال إلى ROS 2. | أدوات الترحيل (مثل ros1_bridge) متاحة للتشغيل البيني بين عقد ROS 1 و ROS 2. |
| التصحيح وسلسلة الأدوات | بالاعتماد على أدوات مثل roslaunch و rviz، تكون عملية تصحيح الأخطاء أكثر تقليدية. | إطار تشغيل جديد (يدعم تكوين Python) ونظام تسجيل مدمج وأدوات اختبار أفضل. |
| المجتمع والبيئة | النظام البيئي كبير، ولكن يصعب توسيع بعض الميزات بسبب القيود المعمارية. | أصبح دمج الميزات الجديدة أسهل (على سبيل المثال، تكامل أعمق مع تقنيات Gazebo وتقنيات الويب)، ويستمر النظام البيئي في التوسع. |
4. مقارنة التكنولوجيا الرئيسية
| البُعد | ROS1 | ROS2 |
| اتصال العقدة | يتم إنشاء الاتصال بين النظراء من خلال التسجيل الرئيسي. | تكتشف العقد تلقائياً وتتواصل مع بعضها البعض مباشرةً عبر DDS. |
| المراسلة | يستخدم نوع الرسالة المخصص (.msg)، ويعتمد على تطبيق roscpp/rospy. | توليد رسائل متعددة اللغات استناداً إلى IDL (لغة تعريف الواجهة) لتحسين التوافق. |
| تحمّل الأخطاء | يمكن أن يؤدي تعطل المعلم الرئيسي إلى تعطل النظام بأكمله. | بنية موزعة لتجنب نقطة فشل واحدة، يمكن للعقد الانضمام/الخروج ديناميكيًا. |
5. اختلافات بناء الجملة
| البُعد | ROS1 | ROS2 |
| بناء جملة إنشاء العقدة | استخدم ros:::NodeHandle لإدارة العُقد، ويعتمد على roscore لبدء تشغيل المدير المركزي. | استخدم rclcpp::Node أو rclpy::Node لإنشاء عُقد مباشرةً دون الحاجة إلى roscore، ويدعم البنية الموزعة. |
| آلية التواصل | استنادًا إلى بروتوكول TCP/UDP المخصص لتحقيق الاتصال، تحتاج إلى إدارة تسجيل العقدة واكتشافها يدويًا. | استنادًا إلى معيار DDS (خدمة توزيع البيانات)، تكتشف العقد تلقائيًا وتتواصل مع بعضها البعض. |
| تعريف الرسالة | استخدام ملف .msg لتحديد نوع الرسالة، والاعتماد على تطبيق roscpp/rospy. | استخدم IDL (لغة تعريف الواجهة) لإنشاء رسائل متعددة اللغات لتوافق أفضل. |
| تشغيل الملفات | استخدم XML لكتابة ملف .launch، وظيفة واحدة، يصعب تكوينها ديناميكيًا. | استخدم Python لكتابة ملف .launch.py، ودعم المنطق الديناميكي (مثل الحكم الشرطي وتمرير المعلمات). |
6. الاختلافات في الاستخدام الفعلي
| البُعد | ROS1 | ROS2 |
| دعم متعدد اللغات | يدعم بشكل أساسي لغة C+++C ولغة Python، ويجب تكييف اللغات الأخرى. | دعم موسع للغات الإضافية (مثل Rust وJava) والتوافق بين اللغات عبر لغة تعريف الواجهة (IDL). |
| نظام التجميع | يعتمد على نظام تجميع القطط الذي يتطلب الالتزام الصارم ببنية مساحة العمل. | استخدم نظام إنشاء ament لإدارة تبعية أكثر مرونة وإنشاءات متعددة اللغات. |
| الدعم في الوقت الحقيقي | أداء ضعيف في الوقت الحقيقي، من الصعب تلبية احتياجات التحكم الصناعي في الوقت الحقيقي. | تحسين الدعم لأنظمة الوقت الحقيقي (على سبيل المثال يوفر rclcpp في ROS 2 جدولة مؤشرات الترابط في الوقت الحقيقي). |
| الأمن | عدم وجود آليات تشفير ومصادقة أصلية. | يدعم امتدادات أمان DDS (DDS-Security) لتوفير المصادقة وتشفير البيانات والتحكم في الوصول. |
| الدعم عبر المنصات المتعددة | يعمل بشكل أساسي على أنظمة لينكس مع دعم محدود لنظامي ويندوز/ماكوس. | يدعم منصات متعددة مثل Linux وWindows وMacOS وRTOS وغيرها، ويقسم المنصات بوضوح إلى المستوى 1 (مدعوم بشكل فعال من قبل الحكومة الرسمية) والمستوى 2 (مدعوم من قبل المجتمع) لتعزيز التوافق بين الأنظمة. |
| أدوات تصحيح الأخطاء | بالاعتماد على أدوات تقليدية مثل roslaunch و rviz، فإن نظام التسجيل أساسي نسبيًا. | توفير نظام تسجيل مدمج (على سبيل المثال RCLCPP_INFO)، ودعم البرامج النصية بلغة Python وأدوات اختبار أفضل. |
| تحمّل الأخطاء | يمكن أن يؤدي تعطّل الروسكور إلى تعطّل النظام بأكمله. | بنية موزعة لتجنب نقطة فشل واحدة، يمكن للعقد الانضمام/الخروج ديناميكيًا. |
7. سيناريوهات التطبيق النموذجي
- ROS 1: التعليم، والمشاريع البحثية (على سبيل المثال، ملاحة الروبوتات المتنقلة، SLAM)، والسيناريوهات التي لا تتطلب وقتاً فورياً وأماناً عالياً. إذا كان المشروع ناضجًا ولا يتطلب ميزات الوقت الحقيقي أو الأمان أو الميزات المشتركة بين المنصات، ويعتمد على عدد كبير من الموارد البيئية لـ ROS 1، استمر في استخدام ROS 1.
- ROS 2: الأتمتة الصناعية، والقيادة الذاتية، والطائرات بدون طيار وغيرها من السيناريوهات التي تتطلب دعماً فورياً وأمنياً عالياً في الوقت الحقيقي، ودعمًا عبر المنصات، بالإضافة إلى صيانة طويلة الأجل للمشاريع واسعة النطاق (على سبيل المثال, روبوتات التوصيل, الروبوت الصناعيوالروبوتات الطبية). المشاريع التي تتطلب استقراراً من الدرجة الصناعية، أو تحكماً في الوقت الحقيقي، أو تشفيراً آمناً، أو نشراً عبر المنصات، يفضل استخدام ROS 2.
8. توافق الأجهزة والمنصة
- ROS1: يدعم لينكس (Ubuntu) بشكل أساسي.
- ROS2: يدعم أصلاً أنظمة Linux وWindows وMacOS والأنظمة الأساسية المدمجة.
9. النظام البيئي ودعم المجتمع
- ROS1: عدد كبير من الحزم ومجتمع نشط.
- ROS2: نظام بيئي ينمو بسرعة ولكن عدد الحزم لا يزال ينمو بسرعة.
الخلاصة: تمتلك ROS1 نظاماً بيئياً ناضجاً، بينما ROS2 يلحق بالركب بسرعة.
10. تكلفة الترحيل والترقية
- واجهات برمجة التطبيقات غير متوافقة، مما يتطلب إعادة كتابة التعليمات البرمجية.
- قد تحتاج برامج التشغيل إلى التكيف؛ يمكن أن يساعدك ros1_bridge في الترحيل التدريجي.
الخلاصة: تكاليف الترحيل كبيرة ولكن يمكن تقليل المخاطر من خلال التحديثات التدريجية.
11. المعايير الأمنية والصناعية
- ROS1: لا توجد آليات أمان أصلية.
- ROS2: يتوافق مع معايير أمان DDS ويمكنه دمج OPC UA و TSN.
الخلاصة: ROS2 هو الأنسب للتطبيقات الأمنية والصناعية الحرجة.
الاتجاهات المستقبلية وخارطة الطريق
- ROS1نويتيك هو الإصدار الأخير، الذي يستمر حتى عام 2025.
- ROS2يتبع استراتيجية دعم طويل الأمد (LTS) مع تحديثات نشطة للميزات.
الخلاصة: ومن الواضح أن الاتجاه يميل لصالح ROS2.
الخلاصة والتوصيات
بالنسبة لـ الباحثون أو المبتدئون، يظل ROS1 خيارًا ناضجًا ومستقرًا؛ بالنسبة إلى المستخدمون الصناعيون أو الفرق التجارية، فإن مزايا ROS2 في الأنظمة الموزعة والأداء في الوقت الحقيقي والأمان تجلب قيمة طويلة الأجل.
نصيحة قابلة للتنفيذ: تقييم إصدار ROS في وقت مبكر من تخطيط المشروع واتخاذ القرارات بناءً على نضج النظام البيئي وقدرات الفريق.
هل تبحث عن حلول روبوتية مخصصة؟ اتصل بنا
تواصل معنا
Fdata هي شركة مصنعة للروبوتات المتنقلة في الصين، ونحن متخصصون في حلول الروبوتات المتنقلة المخصصة، ومساعدة العملاء من الفكرة إلى الإنتاج الضخم.

