نصب ROS در تصویر IMG اوبونتو برای تک برد

معرفی

روز دیگر، در حالی که روی پایان نامه خود کار می کردم، با نیاز به ایجاد یک تصویر اوبونتو برای یک پلت فرم تک تخته با ROS از قبل نصب شده مواجه شدم (سیستم عامل ربات - سیستم عامل ربات). به طور خلاصه، این مدرک به مدیریت گروهی از روبات ها اختصاص دارد. این روبات ها به دو چرخ و سه فاصله یاب مجهز هستند. همه چیز از ROS کنترل می شود که روی برد ODROID-C2 اجرا می شود.

نصب ROS در تصویر IMG اوبونتو برای تک برد
ربات لیدی باگ. با عرض پوزش بابت کیفیت پایین عکس

نه زمان و نه تمایلی برای نصب ROS روی هر ربات به صورت جداگانه وجود نداشت و بنابراین نیاز به یک تصویر سیستم با ROS از قبل نصب شده بود. پس از گشت و گذار در اینترنت، چندین روش برای انجام این کار پیدا کردم.
به طور کلی تمام راه حل های یافت شده را می توان به گروه های زیر تقسیم کرد.

  1. برنامه هایی که یک تصویر را از یک سیستم آماده و پیکربندی شده ایجاد می کنند (اشتراک تصویرگر اوبونتو, کیت زنده لینوکس, ریسپین لینوکس، سیستم برگشتی و غیره)
  2. پروژه هایی که به شما امکان می دهد تصویر خود را بسازید (یوکتو, لینوکس از ابتدا)
  3. خودتان تصویر را جمع کنید (سفارشی سازی سی دی زنده и معادل روسی، یک مثبت مقاله در Habré)

استفاده از راه حل های گروه اول ساده ترین و جذاب ترین گزینه به نظر می رسید، اما من هرگز نتوانستم یک تصویر سیستمی زنده برای ODROID ایجاد کنم. راه حل های گروه دوم نیز به دلیل آستانه ورود نسبتاً بالا مناسب من نبود. مونتاژ دستی طبق آموزش های موجود نیز مناسب نبود، زیرا ... تصویر من فایل سیستم فشرده ای نداشت.
در نتیجه، با ویدیویی در مورد chroot مواجه شدم (chroot - تغییر ریشه، لینک ویدیو در انتهای پست) و قابلیت های آن، تصمیم گرفته شد از آن استفاده شود. در مرحله بعد، من مورد خاص خود را از سفارشی کردن اوبونتو برای توسعه دهندگان رباتیک شرح خواهم داد.

اطلاعات اولیه:

  • کل فرآیند اصلاح تصویر (به جز نوشتن روی کارت SD با استفاده از balenaEtcher) در سیستم عامل اوبونتو 18.04 انجام شد.
  • سیستم عاملی که اسمبلی آن را اصلاح کردم، نسخه دسکتاپ اوبونتو 18.04.3 میت است.
  • ماشینی که سیستم مونتاژ شده باید روی آن کار کند ODROID-C2 است.

آماده سازی تصویر

  1. تصویر اوبونتو را برای ODROID از اینجا دانلود کنید وب سایت رسمی شرکت

  2. باز کردن آرشیو

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

  3. یک دایرکتوری ایجاد کنید که در آن تصویر را نصب کنیم

    mkdir mnt

  4. پارتیشنی که فایل سیستم روی آن قرار دارد را تعیین کنید

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

    ما به دنبال یک پارتیشن با فایل سیستم در فرمت های ext2، ext3 یا ext4 هستیم. ما به آدرس ابتدای بخش نیاز داریم (با رنگ قرمز روی صفحه برجسته شده است):

    نصب ROS در تصویر IMG اوبونتو برای تک برد

    توجه داشته باشید. مکان فایل سیستم را می توان با استفاده از ابزار نیز مشاهده کرد جدا.

  5. نصب تصویر

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

    بخش مورد نیاز ما با بلوک 264192 شروع می شود (اعداد شما ممکن است متفاوت باشد)، اندازه یک بلوک 512 بایت است، آنها را ضرب کنید تا تورفتگی در بایت به دست آید.

  6. به پوشه ای با سیستم نصب شده بروید و در آن پاتوق کنید

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

    ~/livecd/mnt - مسیر کامل به دایرکتوری با سیستم نصب شده
    bin/sh - پوسته (همچنین قابل تعویض با bin/bash)
    اکنون می توانید نصب بسته ها و برنامه های لازم را شروع کنید.

نصب 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

    با پاک کردن کش با استفاده از ابزار apt رفع شد:

    sudo apt-get clean; sudo apt-get autoclean

    یادداشت 2. پس از نصب، با استفاده از دستور منبع:

    source /opt/ros/melodic/setup.bash

    این کار نخواهد کرد، زیرا ما bash را اجرا نکردیم، بنابراین نیازی به تایپ آن در ترمینال نیست.

  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. خروج از chroot:
    exit
  2. تصویر را جدا کنید
    cd ..
    sudo umount mnt/
  3. بیایید تصویر سیستم را در یک آرشیو بسته بندی کنیم
    xz –ckv1 <файл образа>

همه! حالا با کمک balenaetcher می توانید تصویر سیستم را روی یک کارت SD رایت کنید، آن را در ODROID-C2 قرار دهید و اوبونتو را با ROS نصب خواهید کرد!

لینک ها:

  • این ویدیو به نحوه تقلب در لینوکس و دلیل نیاز به آن کمک زیادی کرد:



منبع: www.habr.com

اضافه کردن نظر