การแนะนำ
วันก่อน ขณะที่ทำวิทยานิพนธ์ของฉัน ฉันต้องเผชิญกับความจำเป็นในการสร้างอิมเมจ Ubuntu สำหรับแพลตฟอร์มบอร์ดเดี่ยวที่ติดตั้ง ROS ไว้แล้ว (ระบบปฏิบัติการหุ่นยนต์ - ระบบปฏิบัติการหุ่นยนต์). กล่าวโดยสรุป ประกาศนียบัตรนี้อุทิศให้กับการจัดการกลุ่มหุ่นยนต์ หุ่นยนต์มีล้อสองล้อและเครื่องเรนจ์ไฟนเดอร์สามตัว ทุกอย่างถูกควบคุมจาก ROS ซึ่งทำงานบนบอร์ด ODROID-C2
หุ่นยนต์เต่าทอง. ขออภัยสำหรับคุณภาพของภาพถ่ายที่ไม่ดี
ไม่มีเวลาหรือความปรารถนาที่จะติดตั้ง ROS บนหุ่นยนต์แต่ละตัวแยกกัน ดังนั้นจึงจำเป็นต้องมีอิมเมจระบบที่ติดตั้ง ROS ไว้แล้ว หลังจากท่องอินเทอร์เน็ต ฉันพบวิธีการหลายวิธีที่สามารถทำได้
โดยทั่วไปวิธีแก้ปัญหาทั้งหมดที่พบสามารถแบ่งออกเป็นกลุ่มต่างๆ ได้ดังต่อไปนี้
- โปรแกรมที่สร้างภาพจากระบบสำเร็จรูปและกำหนดค่า (
Distroshare Ubuntu อิมเมจ ,ชุดลินุกซ์สด ,การตอบสนองของลินุกซ์ , ซิสเต็มแบ็ค ฯลฯ) - โครงการที่ให้คุณสร้างภาพของคุณเอง (
ยอคโต ,ลินุกซ์ตั้งแต่เริ่มต้น ) - ประกอบภาพด้วยตัวเอง (
การปรับแต่งซีดีสด иเทียบเท่ากับรัสเซีย บวกบทความเกี่ยวกับฮาเบร )
การใช้โซลูชันจากกลุ่มแรกดูเหมือนจะเป็นตัวเลือกที่ง่ายที่สุดและน่าสนใจที่สุด แต่ฉันไม่สามารถสร้างอิมเมจระบบที่ใช้งานจริงสำหรับ ODROID ได้ วิธีแก้ปัญหาของกลุ่มที่สองก็ไม่เหมาะกับฉันเนื่องจากมีเกณฑ์การเข้าร่วมที่ค่อนข้างสูง การประกอบแบบแมนนวลตามบทช่วยสอนที่มีอยู่นั้นไม่เหมาะสมเช่นกัน เนื่องจาก... รูปภาพของฉันไม่มีระบบไฟล์บีบอัด
เป็นผลให้ฉันเจอวิดีโอเกี่ยวกับ chroot (chroot - เปลี่ยนรูท, ลิงก์ไปยังวิดีโอท้ายโพสต์) และความสามารถของมันจึงตัดสินใจใช้งาน ต่อไป ฉันจะอธิบายกรณีเฉพาะของฉันในการปรับแต่ง Ubuntu สำหรับนักพัฒนาหุ่นยนต์
พื้นหลัง:
- กระบวนการแก้ไขภาพทั้งหมด (ยกเว้นการเขียนลงในการ์ด SD โดยใช้ balenaEtcher) ดำเนินการบนระบบปฏิบัติการ Ubuntu 18.04
- ระบบปฏิบัติการที่ฉันแก้ไขแอสเซมบลีคือ Ubuntu 18.04.3 mate เวอร์ชันเดสก์ท็อป
- เครื่องที่ระบบประกอบควรใช้งานคือ ODROID-C2
กำลังเตรียมภาพ
-
ดาวน์โหลดภาพ Ubuntu สำหรับ ODROID จาก
เว็บไซต์อย่างเป็นทางการ -
กำลังคลายไฟล์เก็บถาวร
unxz –kv <файл архива с образом>
-
สร้างไดเร็กทอรีที่เราจะเมานต์รูปภาพ
mkdir mnt
-
กำหนดพาร์ติชันที่ระบบไฟล์ตั้งอยู่
file <файл образа>
เรากำลังมองหาพาร์ติชันที่มีระบบไฟล์ในรูปแบบ ext2, ext3 หรือ ext4 เราต้องการที่อยู่ของจุดเริ่มต้นของส่วน (เน้นด้วยสีแดงบนหน้าจอ):
หมายเหตุ สามารถดูตำแหน่งของระบบไฟล์ได้โดยใช้ยูทิลิตี้ แยก. -
การติดตั้งภาพ
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/
ส่วนที่เราต้องการเริ่มต้นด้วยบล็อก 264192 (ตัวเลขของคุณอาจแตกต่างกัน) ขนาดของหนึ่งบล็อกคือ 512 ไบต์ คูณเพื่อให้ได้การเยื้องเป็นไบต์
-
ไปที่โฟลเดอร์ที่มีระบบที่ติดตั้งอยู่และออกไปเที่ยวในนั้น
cd mnt/ sudo chroot ~/livecd/mnt/ bin/sh
~/livecd/mnt.conf — เส้นทางแบบเต็มไปยังไดเร็กทอรีด้วยระบบที่เมาท์
ถัง/ช - เปลือก (สามารถแทนที่ด้วย ถัง / ทุบตี)
ตอนนี้คุณสามารถเริ่มการติดตั้งแพ็คเกจและแอพพลิเคชั่นที่จำเป็นได้แล้ว
การติดตั้ง ROS
ฉันติดตั้ง ROS (ROS Melodic) เวอร์ชันล่าสุดตาม
-
กำลังอัพเดตรายการแพ็คเกจ
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
-
การเตรียมระบบสำหรับการติดตั้ง 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
-
การติดตั้ง 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 ดังนั้นจึงไม่จำเป็นต้องพิมพ์ลงในเทอร์มินัล
-
การติดตั้งการพึ่งพาที่จำเป็น
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo apt install python-rosdep
sudo rosdep init rosdep update
-
การตั้งค่าสิทธิ์การเข้าถึง
เนื่องจากเราเข้าสู่ระบบและดำเนินการทั้งหมดในนามของรูทของระบบที่กำลังประกอบอยู่ 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
-
การติดตั้งแพ็คเกจ rviz และ rqt เพิ่มเติม
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
สัมผัสสุดท้าย
- ออกจากโครต:
exit
- ถอนเมานท์รูปภาพ
cd .. sudo umount mnt/
- มาแพ็คอิมเมจระบบลงในไฟล์เก็บถาวร
xz –ckv1 <файл образа>
ทั้งหมด! ตอนนี้มีความช่วยเหลือ
อ้างอิง:
- วิดีโอนี้ช่วยได้มากเกี่ยวกับวิธีการโกงใน Linux และเหตุผลที่คุณต้องการ:
ที่มา: will.com