การติดตั้ง ROS ในอิมเมจ Ubuntu IMG สำหรับบอร์ดเดี่ยว

การแนะนำ

วันก่อน ขณะที่ทำวิทยานิพนธ์ของฉัน ฉันต้องเผชิญกับความจำเป็นในการสร้างอิมเมจ Ubuntu สำหรับแพลตฟอร์มบอร์ดเดี่ยวที่ติดตั้ง ROS ไว้แล้ว (ระบบปฏิบัติการหุ่นยนต์ - ระบบปฏิบัติการหุ่นยนต์). กล่าวโดยสรุป ประกาศนียบัตรนี้อุทิศให้กับการจัดการกลุ่มหุ่นยนต์ หุ่นยนต์มีล้อสองล้อและเครื่องเรนจ์ไฟนเดอร์สามตัว ทุกอย่างถูกควบคุมจาก ROS ซึ่งทำงานบนบอร์ด ODROID-C2

การติดตั้ง ROS ในอิมเมจ Ubuntu IMG สำหรับบอร์ดเดี่ยว
หุ่นยนต์เต่าทอง. ขออภัยสำหรับคุณภาพของภาพถ่ายที่ไม่ดี

ไม่มีเวลาหรือความปรารถนาที่จะติดตั้ง ROS บนหุ่นยนต์แต่ละตัวแยกกัน ดังนั้นจึงจำเป็นต้องมีอิมเมจระบบที่ติดตั้ง ROS ไว้แล้ว หลังจากท่องอินเทอร์เน็ต ฉันพบวิธีการหลายวิธีที่สามารถทำได้
โดยทั่วไปวิธีแก้ปัญหาทั้งหมดที่พบสามารถแบ่งออกเป็นกลุ่มต่างๆ ได้ดังต่อไปนี้

  1. โปรแกรมที่สร้างภาพจากระบบสำเร็จรูปและกำหนดค่า (Distroshare Ubuntu อิมเมจ, ชุดลินุกซ์สด, การตอบสนองของลินุกซ์, ซิสเต็มแบ็ค ฯลฯ)
  2. โครงการที่ให้คุณสร้างภาพของคุณเอง (ยอคโต, ลินุกซ์ตั้งแต่เริ่มต้น)
  3. ประกอบภาพด้วยตัวเอง (การปรับแต่งซีดีสด и เทียบเท่ากับรัสเซียบวก บทความเกี่ยวกับฮาเบร)

การใช้โซลูชันจากกลุ่มแรกดูเหมือนจะเป็นตัวเลือกที่ง่ายที่สุดและน่าสนใจที่สุด แต่ฉันไม่สามารถสร้างอิมเมจระบบที่ใช้งานจริงสำหรับ ODROID ได้ วิธีแก้ปัญหาของกลุ่มที่สองก็ไม่เหมาะกับฉันเนื่องจากมีเกณฑ์การเข้าร่วมที่ค่อนข้างสูง การประกอบแบบแมนนวลตามบทช่วยสอนที่มีอยู่นั้นไม่เหมาะสมเช่นกัน เนื่องจาก... รูปภาพของฉันไม่มีระบบไฟล์บีบอัด
เป็นผลให้ฉันเจอวิดีโอเกี่ยวกับ chroot (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.conf — เส้นทางแบบเต็มไปยังไดเร็กทอรีด้วยระบบที่เมาท์
    ถัง/ช - เปลือก (สามารถแทนที่ด้วย ถัง / ทุบตี)
    ตอนนี้คุณสามารถเริ่มการติดตั้งแพ็คเกจและแอพพลิเคชั่นที่จำเป็นได้แล้ว

การติดตั้ง 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. ออกจากโครต:
    exit
  2. ถอนเมานท์รูปภาพ
    cd ..
    sudo umount mnt/
  3. มาแพ็คอิมเมจระบบลงในไฟล์เก็บถาวร
    xz –ckv1 <файл образа>

ทั้งหมด! ตอนนี้มีความช่วยเหลือ balenaetcher คุณสามารถเบิร์นอิมเมจระบบลงในการ์ด SD ใส่ลงใน ODROID-C2 และคุณจะติดตั้ง Ubuntu พร้อม ROS!

อ้างอิง:

  • วิดีโอนี้ช่วยได้มากเกี่ยวกับวิธีการโกงใน Linux และเหตุผลที่คุณต้องการ:



ที่มา: will.com

เพิ่มความคิดเห็น