Cài đặt ROS trong image Ubuntu IMG cho bo mạch đơn

Giới thiệu

Hôm nọ, khi đang làm luận án, tôi gặp phải nhu cầu tạo hình ảnh Ubuntu cho nền tảng một bo mạch đã cài đặt 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.

Cài đặt ROS trong image Ubuntu IMG cho bo mạch đơn
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.

  1. 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 (Phân phối Ubuntu Imager, bộ công cụ trực tiếp linux, phản hồi linux, hệ thống quay lại, v.v.)
  2. Các dự án cho phép bạn tạo hình ảnh của riêng mình (yocto, linux từ đầu)
  3. Tự mình lắp ráp hình ảnh (tùy chỉnh CD trực tiếp и tương đương với tiếng Ngacộng bài viết về Habré)

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, link video ở cuối bài) và khả năng của nó nên quyết định sử dụng. Tiếp theo, tôi sẽ mô tả trường hợp cụ thể của tôi về việc tùy chỉnh Ubuntu cho các nhà phát triển robot.

Dữ liệu nguồn:

  • Toàn bộ quá trình sửa đổi hình ảnh (ngoại trừ việc ghi vào thẻ SD bằng balenaEtcher) được thực hiện trên hệ điều hành Ubuntu 18.04.
  • Hệ điều hành mà tôi đã sửa đổi bản lắp ráp là phiên bản máy tính để bàn Ubuntu 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

  1. Tải xuống hình ảnh Ubuntu cho ODROID từ trang web chính thức

  2. Giải nén kho lưu trữ

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

  3. Tạo một thư mục trong đó chúng ta sẽ gắn kết hình ảnh

    mkdir mnt

  4. Xá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):

    Cài đặt ROS trong image Ubuntu IMG cho bo mạch đơn

    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.

  5. 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.

  6. 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 hướng dẫn chính thức.

  1. 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) <[email protected]>

    Đ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 AB19BAC9

  2. Chuẩ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 C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

    sudo apt update

  3. Cà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-melodic

    Lư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 device

    Nó đã được sửa bằng cách xóa bộ đệm bằng tiện ích apt:

    sudo apt-get clean; sudo apt-get autoclean

    Lưu ý 2. Sau khi cài đặt, source bằng lệnh:

    source /opt/ros/melodic/setup.bash

    nó 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.

  4. 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-essential

    sudo apt install python-rosdep

    sudo rosdep init
    rosdep update

  5. Thiế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-permissions

  6. Cà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

  1. Thoát chroot:
    exit
  2. Ngắt kết nối hình ảnh
    cd ..
    sudo umount mnt/
  3. 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 đỡ balenaetcher bạn có thể ghi hình ảnh hệ thống vào thẻ SD, lắp nó vào ODROID-C2 và bạn sẽ cài đặt Ubuntu với 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

Thêm một lời nhận xét