Giới thiệu
Hôm nọ, trong khi đang làm luận văn tốt nghiệp, tôi phải tạo một hình ảnh. Ubuntu đối với máy tính bo mạch đơn đã cài đặt sẵn ROS (Hệ Điều Hành Robot - hệ điều hành robot). Nói tóm lại, bằng tốt nghiệp được dành cho việc quản lý một nhóm robot. Các robot được trang bị hai bánh xe và ba máy đo khoảng cách. Toàn bộ mọi thứ được điều khiển từ ROS, chạy trên bo mạch ODROID-C2.

Robot bọ rùa. Xin lỗi vì chất lượng ảnh kém
Không có thời gian cũng như không muốn cài đặt ROS trên từng robot riêng lẻ và do đó cần có hình ảnh hệ thống đã được cài đặt ROS. Sau khi duyệt Internet, tôi tìm thấy một số cách tiếp cận để thực hiện việc này.
Nói chung, tất cả các giải pháp được tìm thấy có thể được chia thành các nhóm sau.
- Các chương trình tạo hình ảnh từ hệ thống được cấu hình và tạo sẵn (, , , hệ thống quay lại, v.v.)
- Các dự án cho phép bạn tạo hình ảnh của riêng mình (, )
- Tự mình lắp ráp hình ảnh ( и cộng )
Sử dụng các giải pháp từ nhóm đầu tiên dường như là lựa chọn đơn giản và hấp dẫn nhất, nhưng tôi chưa bao giờ có thể tạo hình ảnh hệ thống trực tiếp cho ODROID. Các giải pháp của nhóm thứ hai cũng không phù hợp với tôi do ngưỡng đầu vào khá cao. Lắp ráp thủ công theo các hướng dẫn có sẵn cũng không phù hợp, vì... Hình ảnh của tôi không có hệ thống tệp nén.
Kết quả là tôi đã xem được một video về chroot (chroot - thay đổi gốc(Liên kết video ở cuối bài đăng) và các khả năng của nó, tôi đã quyết định sử dụng nó. Dưới đây tôi sẽ mô tả trường hợp tùy chỉnh cụ thể của mình. Ubuntu Dành cho các nhà phát triển robot.
Dữ liệu nguồn:
- Toàn bộ quá trình chỉnh sửa ảnh (ngoại trừ việc ghi vào thẻ SD bằng balenaEtcher) được thực hiện trong hệ điều hành. Ubuntu 18.04.
- Hệ điều hành có mã nguồn được sửa đổi là – Ubuntu Phiên bản Mate dành cho máy tính để bàn 18.04.3.
- Máy mà hệ thống lắp ráp sẽ hoạt động là ODROID-C2.
Đang chuẩn bị hình ảnh
Tải hình ảnh xuống Ubuntu dành cho ODROID với
Giải nén kho lưu trữ
unxz –kv <файл архива с образом>Tạo một thư mục trong đó chúng ta sẽ gắn kết hình ảnh
mkdir mntXác định phân vùng chứa hệ thống tập tin
file <файл образа>Chúng tôi đang tìm kiếm một phân vùng có hệ thống tệp ở định dạng ext2, ext3 hoặc ext4. Chúng ta cần địa chỉ đầu phần (được đánh dấu màu đỏ trên màn hình):

Lưu ý. Vị trí của hệ thống tập tin cũng có thể được xem bằng tiện ích chia tay.Gắn hình ảnh
sudo mount -o loop,offset=$((264192*512)) <файл с образом> mnt/Phần chúng ta cần bắt đầu với khối 264192 (số của bạn có thể khác nhau), kích thước của một khối là 512 byte, nhân chúng để có được thụt lề theo byte.
Chuyển đến thư mục có hệ thống được gắn và chơi trong đó
cd mnt/ sudo chroot ~/livecd/mnt/ bin/sh~/livecd/mnt - đường dẫn đầy đủ đến thư mục với hệ thống được gắn kết
thùng/sh - vỏ (cũng có thể được thay thế bằng thùng/bash)
Bây giờ bạn có thể bắt đầu cài đặt các gói và ứng dụng cần thiết.
Cài đặt ROS
Tôi đã cài đặt phiên bản ROS (ROS Melodic) mới nhất theo .
Cập nhật danh sách các gói
sudo apt-get updateĐây là nơi tôi gặp lỗi:
Err:6 http://deb.odroid.in/c2 bionic InRelease The following signatures were invalid: EXPKEYSIG 5360FB9DAB19BAC9 Mauro Ribeiro (mdrjr) <mauro.ribeiro@hardkernel.com>Điều này là do khóa ký gói đã hết hạn. Để cập nhật các phím, gõ:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AB19BAC9Chuẩn bị hệ thống cài đặt 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 C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654sudo apt updateCài đặt ROS
Thật không may, tôi không thể cài đặt phiên bản ROS dành cho máy tính để bàn, vì vậy tôi chỉ cài đặt các gói cơ bản:sudo apt install ros-melodic-ros-base apt search ros-melodicLưu ý 1. Trong quá trình cài đặt thỉnh thoảng xảy ra lỗi:
dpkg: error: failed to write status database record about 'iputils-ping' to '/var/lib/dpkg/status': No space left on deviceNó đã được sửa bằng cách xóa bộ đệm bằng tiện ích apt:
sudo apt-get clean; sudo apt-get autocleanLưu ý 2. Sau khi cài đặt, source bằng lệnh:
source /opt/ros/melodic/setup.bashnó sẽ không hoạt động, bởi vì Chúng tôi không chạy bash, vì vậy KHÔNG cần phải gõ nó vào terminal.
Cài đặt các phụ thuộc cần thiết
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essentialsudo apt install python-rosdepsudo rosdep init rosdep updateThiết lập quyền truy cập
Vì chúng tôi đã đăng nhập và trên thực tế, thực hiện mọi hành động thay mặt cho thư mục gốc của hệ thống đang được lắp ráp nên ROS sẽ chỉ được khởi chạy với quyền siêu người dùng.
Khi cố chạy roscore mà không có sudo, sẽ xảy ra lỗi: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'Để tránh xảy ra lỗi, hãy thay đổi đệ quy quyền truy cập vào thư mục chính của người dùng ROS. Để làm điều này chúng ta gõ:
sudo rosdep fix-permissionsCài đặt bổ sung gói rviz và rqt
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
Lần chỉnh sửa cuối cùng
- Thoát chroot:
exit - Ngắt kết nối hình ảnh
cd .. sudo umount mnt/ - Hãy đóng gói hình ảnh hệ thống vào một kho lưu trữ
xz –ckv1 <файл образа>
Tất cả! Bây giờ với sự giúp đỡ Bạn có thể ghi ảnh hệ thống vào thẻ SD, lắp thẻ vào ODROID-C2, và bạn sẽ có được... Ubuntu Đã cài đặt ROS!
Links:
- Video này giúp ích rất nhiều về cách gian lận trong Linux và lý do bạn cần nó:

Nguồn: www.habr.com

