تثبيت ROS في صورة Ubuntu IMG للوحة واحدة

مقدمة

في اليوم الآخر ، أثناء العمل على أطروحة ، واجهت الحاجة إلى إنشاء صورة Ubuntu لجهاز أحادي اللوحة مع تثبيت ROS بالفعل (نظام تشغيل الروبوت - نظام تشغيل الروبوتات). باختصار ، الدبلومة تدور حول إدارة مجموعة من الروبوتات. تم تجهيز الروبوتات بعجلتين وثلاثة أجهزة تحديد المدى. يتم التحكم في كل شيء من ROS ، والتي تدور على لوحة ODROID-C2.

تثبيت ROS في صورة Ubuntu IMG للوحة واحدة
روبوت الخنفساء. آسف لسوء جودة الصورة

لم يكن هناك وقت ولا رغبة في تثبيت ROS على كل روبوت على حدة ، وبالتالي كانت هناك حاجة إلى صورة نظام مع تثبيت ROS بالفعل. بعد أن تجولت في مساحات الإنترنت ، وجدت عدة طرق لكيفية القيام بذلك.
بشكل عام ، يمكن تقسيم جميع الحلول التي تم العثور عليها إلى المجموعات التالية.

  1. البرامج التي تنشئ صورة من نظام جاهز ومهيأ (توزيعة أوبونتو إيماجر, طقم لينكس لايف, لينكس ريبين، عودة النظام ، إلخ.)
  2. المشاريع التي تسمح لك ببناء صورتك الخاصة (yocto, لينكس من الصفر)
  3. تجميع الصورة باستخدام الأقلام بنفسك (تخصيص قرص حي и المعادل الروسي، زيادة مقالة على المحور)

بدا استخدام الحلول من المجموعة الأولى الخيار الأسهل والأكثر جاذبية ، لكنني لم أنجح في إنشاء صورة نظام حية لـ ODROID. لم تناسبني حلول المجموعة الثانية أيضًا بسبب عتبة الدخول المرتفعة إلى حد ما. لم يكن التجميع بمقابض وفقًا للدروس المتاحة مناسبًا أيضًا ، لأن. لم يكن لصورتي نظام ملفات مضغوط.
نتيجة لذلك ، صادفت مقطع فيديو حول chroot (الجذور - تغيير الجذر، رابط الفيديو في نهاية التدوينة) وإمكانياتها ، تقرر استخدامها. بعد ذلك ، سأصف حالتي الخاصة لتخصيص Ubuntu لمطوري الروبوتات.

خلفية:

  • تم إجراء عملية تعديل الصورة بأكملها (باستثناء الكتابة على بطاقة SD باستخدام balenaEtcher) على نظام التشغيل Ubuntu 18.04.
  • نظام التشغيل ، الذي تم تعديل التجميع منه - إصدار سطح المكتب Ubuntu 18.04.3 mate.
  • الجهاز الذي يجب أن يعمل عليه النظام المجمع هو ODROID-C2.

تحضير الصورة

  1. قم بتنزيل صورة Ubuntu لـ ODROID من الموقع الرسمي

  2. تفريغ الأرشيف

    unxz –kv <файл архива с образом>

  3. قم بإنشاء دليل سنقوم فيه بتركيب الصورة

    mkdir mnt

  4. حدد القسم الذي يوجد عليه نظام الملفات

    file <файл образа>

    نحن نبحث عن قسم بنظام ملفات بتنسيق ext2 أو ext3 أو ext4. نحتاج إلى عنوان بداية القسم (مظلل باللون الأحمر على الشاشة):

    تثبيت ROS في صورة Ubuntu IMG للوحة واحدة

    ملاحظة. يمكن أيضًا عرض موقع نظام الملفات باستخدام الأداة المساعدة افترقنا.

  5. تركيب الصورة

    sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/

    يبدأ القسم الذي نحتاجه بالكتلة 264192 (قد تختلف الأرقام الخاصة بك) ، وحجم الكتلة الواحدة هو 512 بايت ، ونضربها للحصول على المسافة البادئة بالبايت.

  6. انتقل إلى المجلد الذي يحتوي على النظام المحمل وتجول فيه

    cd mnt/
    sudo chroot ~/livecd/mnt/ bin/sh

    ~ / livecd / mnt - المسار الكامل للدليل مع النظام المثبت
    بن / ش - قذيفة (يمكن استبدالها أيضًا بـ بن / باش)
    الآن يمكنك بالفعل تثبيت الحزم والتطبيقات اللازمة.

تثبيت ROS

لقد قمت بتثبيت أحدث إصدار من ROS (ROS Melodic) بواسطة البرنامج التعليمي الرسمي.

  1. قم بتحديث قائمة الحزم

    sudo apt-get update

    هنا لدي خطأ:

    Err:6 http://deb.odroid.in/c2 bionic InRelease
    The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <[email protected]>

    يتعلق الأمر بحقيقة انتهاء صلاحية مفتاح توقيع الحزمة. لتحديث المفاتيح ، اكتب:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9

  2. تحضير النظام لتثبيت ROS

    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

    sudo apt update

  3. تثبيت ROS
    لسوء الحظ ، لم أتمكن من تثبيت إصدار سطح المكتب من ROS ، لذلك قمت فقط بتثبيت الحزم الأساسية:

    sudo apt install ros-melodic-ros-base
    apt search ros-melodic

    ملاحظة 1 أثناء عملية التثبيت ، حدث خطأ أحيانًا:

    dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on device

    تم الإصلاح بمسح ذاكرة التخزين المؤقت الملائمة:

    sudo apt-get clean; sudo apt-get autoclean

    ملاحظة 2 بعد التثبيت ، اسحب (المصدر) باستخدام الأمر:

    source /opt/ros/melodic/setup.bash

    لن تعمل ، لأن لم نقم بتشغيل bash ، لذا لا يتعين عليك كتابته في Terminal.

  4. تركيب التبعيات المطلوبة

    sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

    sudo apt install python-rosdep

    sudo rosdep init
    rosdep update

  5. إعداد حقوق الوصول
    نظرًا لأننا متشابكون ، وفي الواقع ، فإننا نقوم بجميع الإجراءات نيابة عن جذر النظام الذي يتم تجميعه ، عندئذٍ لن تعمل ROS إلا بحقوق المستخدم المتميز.
    عند محاولة تشغيل roscore بدون sudo ، يحدث خطأ:

    Traceback (most recent call last): File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 230, in main write_pid_file(options.pid_fn, options.core, options.port) File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 106, in write_pid_file with open(pid_fn, "w") as f: IOError: [Errno 13] Permission denied: '/home/user/.ros/roscore-11311.pid'

    لتجنب الخطأ ، نقوم بتغيير حقوق الوصول بشكل متكرر إلى الدليل الرئيسي لمستخدم ROS. للقيام بذلك ، نكتب:

    sudo rosdep fix-permissions

  6. تركيب حزم rviz و rqt

    sudo apt-get install ros-melodic-rqt ros-melodic-rviz

اللمسات الأخيرة

  1. خروج الكروت:
    exit
  2. قم بإلغاء تحميل الصورة
    cd ..
    sudo umount mnt/
  3. حزم صورة النظام في أرشيف
    xz –ckv1 <файл образа>

الجميع! الآن مع المساعدة BalenaEtcher يمكنك كتابة صورة النظام على بطاقة SD ، ووضعها في ODROID-C2 ، وستحصل على Ubuntu مع تثبيت ROS!

المراجع:

  • من خلال كيفية العبث بنظام Linux وما الغرض منه ، ساعد هذا الفيديو كثيرًا:



المصدر: www.habr.com

إضافة تعليق