ROS2 مقابل ROS 1. تثبيت ROS2 على Ubuntu 18.04

يحتل ROS (نظام التشغيل الآلي) بثقة مكانة رائدة في معايير الروبوتات. على حد تعبير سياسي مشهور ، "ليس كل شيء فقط" يستخدمه بالفعل.
في هذه المقالة ، سنحاول إلقاء نظرة على المرحلة التالية من تطوير ROS - نظام ROS2 ، الذي يناسب المزيد من المطورين "الأنيقين". دعنا نقارن كلا النظامين بعبارات عامة ، وفي نفس الوقت نقوم بتثبيت ROS2 على Ubuntu 18.04.



* صورة من www.theconstructsim.com
سيتم استخدام طراز قديم قليلاً كتكوين أساسي للكمبيوتر الشخصي - Intel NUC (5i5RYK) و 4 غيغابايت من ذاكرة الوصول العشوائي و SSD M.2 120Gb. أداء NUC كافٍ "للعيون" لأغراض ROS ، ولكن لا يتم النظر في بطاقات لوحة واحدة (التوت ، odroid ، jetson) ، لأن كل منها له خصائصه الخاصة. من المفترض أن Ubuntu 18.04 (موصى به للاستخدام مع ROS) مثبت بالفعل.

المقدمة.


على مدى العقد الماضي ، نمت ROS (ROS1) ونمت عدة مرات. في الوقت الحالي ،
لديه قائمة كبيرة من الحزم ، حيث تحل كل حزمة المشكلة إما جزئيًا أو
كليًا ، مما يلغي مفهوم إعادة اختراع العجلة. أدت الحزم التي أنشأها المجتمع إلى إنشاء نهج جديد تمامًا للروبوتات والتعبئة الذكية المقترحة للأنظمة الحالية.

قيود ROS1.


على الرغم من حقيقة أن ROS1 أعطت حرية اتصال معينة مع مكونات الأجهزة والبرامج المعقدة ، هناك بعض الصعوبات المرتبطة باستخدام ROS1 في المنتج النهائي. تبدأ هذه الصعوبات في الظهور عندما يكون هناك أسطول كامل من الروبوتات غير المتجانسة (الروبوتات المتحركة ، والمتلاعبين الآليين ، وما إلى ذلك).
إن إقامة علاقة بينهما أمر صعب للغاية بسبب القيود المعمارية لـ ROS1.
القيد الأول هو أن ROS1 لا يدعم مفهوم multimaster.
القيد الثاني لـ ROS1 هو أنه على الرغم من حقيقة أن العقد يمكن أن تتواصل مع بعضها البعض دون مشاكل ، فلا توجد طريقة آمنة في هذا الاتصال. يمكن لأي شخص لديه القدرة على الاتصال بالسيد (عقدة رئيسية) الوصول إلى المواضيع ومن ثم إما استغلالها أو تعديلها. لذلك ، فإن الغرض الرئيسي من ROS1 هو اختبار المفهوم أو النموذج الأولي للأغراض العلمية.
والثالث ، ربما القيد الرئيسي لـ ROS1 هو أن هذا النظام ليس نظامًا في الوقت الفعلي. هذا يؤدي إلى تأخير في استقبال البيانات وفقدانها.
دفعت جميع العيوب المذكورة أعلاه إلى إنشاء ROS2.

ما هي فوائد ROS2؟


- يسمح لك بإنشاء اتصالات آمنة بين مكونات النظام (العقد)
- التفاعل في الوقت الحقيقي
- تبسيط اتصال العديد من الروبوتات في شبكة واحدة
- تحسين جودة الاتصال بين العقد
- يتم تنفيذ مستوى بنية ROS مباشرة على الأجهزة
- يتم استخدام أحدث الحزم التحديثات (لم يتم تحديث ROS1 كثيرًا).

يتبع ROS2 معيار الصناعة وينفذ التفاعل في الوقت الفعلي من خلال ما يسمى مفهوم DDS (الخدمات الموزعة للبيانات).

إصدارات ROS2

.
تم إصدار أول نسخة رسمية مستقرة من ROS2 في ديسمبر 2017. تم توزيع اسم "Ardent Apalone". ثم كان هناك إصدار في يونيو 2018 ، باسم "Bouncy Bolson". ظهرت Crystal Clemmys في ديسمبر 2018. Dashing Diademata (الإصدار الحالي) في مايو 2019. كما ترون ، يتم تحديث التوزيعات بمرح شديد ، ونأمل أن تكون الأبجدية كافية لأول مرة.

دعم نظام التشغيل

.
يدعم ROS2 (إذا تحدثنا عن الدعم الرسمي) طبقات نظام التشغيل Linux و Windows و macOS وأنظمة التشغيل في الوقت الفعلي (RTOS) و ROS1 فقط Linux و macOS.
دعم أكثر تفصيلاً لنظام التشغيل:


فلماذا تحتاج ROS2؟


يستخدم ROS2 نفس مبادئ التشغيل مثل ROS1. في نفس الوقت ، ROS2 ليس جزءًا من ROS1. تم إنشاء ROS2 لتجاوز حدود زملائه باستخدام أدوات تبعية وأدوات أحدث.
بخلاف ROS1 ، الذي كُتب مكدسه في C ++ ، ومكتبات العملاء في C ++ و Python ، يستخدم ROS-2 أيضًا لغة C. يتم تقديم مستوى مستقل مكتوب في C يتفاعل مع مكتبات عملاء ROS2 مثل rclcpp و rclpy و rcljava.

تدعم ROS2 بشكل أفضل تكوينات الشبكة وتنفذ اتصالات موثوقة.
كما لم تعد ROS2 تستخدم مفهوم nodelets (http://wiki.ros.org/nodelet) وتدعم القدرة على تهيئة عقد متعددة في نفس الوقت (تهيئة متعددة العقدة). على عكس ROS1 ، هناك ميزة مميزة أخرى لـ ROS2 هي القدرة على تتبع حالة العقدة وتلقي الرسائل إذا تمت إضافة عقدة أو موضوع أو حذفه. يمكن استخدام هذا لإنشاء أنظمة تتحمل الأخطاء.

التغييرات التي حدثت في ROS2 مقارنة بـ ROS1:


قم بتثبيت ROS2

.
لذا ، سنقوم من المصادر بتوزيع التوزيع الحالي لـ Dashing Diademata (التحطيم) على Ubuntu 18.04

قم بإعداد البيئة.


$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8


إضافة مستودعات ROS2.


$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc |
sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'


قم بتثبيت أدوات مطوري ROS.


$ sudo apt update && sudo apt install -y build-essential cmake git
python3-colcon-common-extensions python3-lark-parser python3-pip
python-rosdep python3-vcstool wget
$ python3 -m pip install -U argcomplete flake8 flake8-blind-except
flake8-builtins flake8-class-newline flake8-comprehensions flake8-
deprecated flake8-docstrings flake8-import-order flake8-quotes
pytest-repeat pytest-rerunfailures pytest pytest-cov pytest-runner
setuptools
$ sudo apt install --no-install-recommends -y libasio-dev libtinyxml2-dev


قم بإنشاء مساحة عمل ROS2.


$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws
$ wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos
$ vcs import src < ros2.repos

وسوف يستغرق بعض الوقت.

تثبيت التبعيات باستخدام rosdep.


$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro dashing -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69
rti-connext-dds-5.3.1 urdfdom_headers"

إذا سار كل شيء على ما يرام وظهر الإدخال "تم تثبيت جميع الورود المطلوبة بنجاح" في المحطة ، يمكنك المتابعة إلى الخطوة التالية.

نقوم بجمع الرمز ، وتثبيت colcon.


في ROS1 ، تم جمع الحزم باستخدام أداة catkin. يستخدم ROS2 colcon (أداة مساعدة تتضمن catkin_make و catkin_make_isolated و catkin_tools و ament_tools). يمكن colcon جمع كل من حزم ROS1 وحزم ROS2. بعد الأمر الأخير ، يمكنك الذهاب بأمان لشرب الشاي ، لأنه قد يستغرق التثبيت حوالي ساعة. عند اكتماله بنجاح ، ستظهر تقريبًا المعلومات التالية حول التثبيت الناجح في الوحدة الطرفية:
$ sudo apt install python3-colcon-common-extensions
$ cd ~/ros2_ws/
$ colcon build --symlink-install






تهيئة البيئة لـ ROS2 (البيئة).


لكي لا تدخل الأمر الطويل 'source ~ / ros2_ws / install / local_setup.bash' في كل مرة لبدء ROS في الجهاز ، أضف اسمًا مستعارًا إلى bashrc:
$ sudo gedit ~/.bashrc

بعد ذلك ، أضف السطر إلى نهاية الملف:
alias initros2='source ~/ros2_ws/install/local_setup.bash

حفظ ، الخروج من الملف وإعادة قراءته باستخدام الأمر (حتى لا إعادة تشغيل النظام):
$ source ~/.bashrc

تحقق من تشغيل ROS2.


الوحدة الطرفية الأولى: تبدأ هذه الأوامر العقدة الناطقة. المحطة الثانية: هنا ، على التوالي ، يتم إطلاق عقدة "الاستماع". بصريا ، تبدو العقدتان مثل هذا: يمكنك أيضًا إلقاء نظرة على الموضوعات التي تم إنشاؤها بواسطة العقد في المحطة الطرفية الثالثة: للتلخيص. تمت مراجعة ROS2 بالمقارنة مع ROS1 ، تم عرض إجراء التثبيت لـ ROS2 (Dashing Diademata (dashing)) على Ubuntu 18.04.
$ initros2
$ ros2 run demo_nodes_cpp talker




$ initros2
$ ros2 run demo_nodes_py listener










All Articles