在單板的 Ubuntu IMG 映像中安裝 ROS

介紹

前幾天,在寫論文時,我需要為已安裝 ROS 的單板平台建立 Ubuntu 映像(機器人作業系統-機器人作業系統)。 簡而言之,該文憑致力於管理一組機器人。 這些機器人配備了兩個輪子和三個測距儀。 整個過程由 ROS 控制,ROS 運行在 ODROID-C2 板上。

在單板的 Ubuntu IMG 映像中安裝 ROS
機器人瓢蟲。 抱歉照片品質不佳

既沒有時間也沒有意願在每個機器人上單獨安裝 ROS,因此需要一個已安裝 ROS 的系統映像。 瀏覽互聯網後,我發現了幾種實現此目的的方法。
一般來說,找到的所有解決方案都可以分為以下幾組。

  1. 從現成且配置好的系統建立映像的程式(Distroshare Ubuntu 成像器, Linux 實時套件, Linux 重新啟動、系統後台等)
  2. 允許您創建自己的圖像的項目(約克托, 從零開始的Linux)
  3. 自己組裝圖像(現場CD定制 и 俄語同等內容關於哈布雷的文章)

使用第一組的解決方案似乎是最簡單且最具吸引力的選擇,但我始終無法為 ODROID 建立即時系統映像。 第二組的解決方案也不太適合我,因為進入門檻相當高。 根據可用教程進行手動組裝也不合適,因為... 我的映像沒有壓縮檔案系統。
結果,我看到了一個關於 chroot 的影片(chroot - 更改根目錄,連結到帖子末尾的視頻)及其功能,因此決定使用它。 接下來,我將描述我為機器人開發人員客製化 Ubuntu 的具體案例。

初始數據:

  • 整個鏡像修改過程(除了使用balenaEtcher寫入SD卡外)是在Ubuntu 18.04作業系統上執行的。
  • 我修改的組件的作業系統是Ubuntu 18.04.3 mate桌面版。
  • 組裝系統應運作的機器是 ODROID-C2。

準備影像

  1. 從以下網址下載 ODROID 的 Ubuntu 映像 官網

  2. 解壓縮存檔

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

  3. 建立一個目錄,我們將在其中掛載映像

    mkdir mnt

  4. 確定檔案系統所在分割區

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

    我們正在尋找具有 ext2、ext3 或 ext4 格式檔案系統的分割區。 我們需要該部分開頭的位址(在螢幕上以紅色突出顯示):

    在單板的 Ubuntu IMG 映像中安裝 ROS

    注。 也可以使用該實用程式查看檔案系統的位置 分手.

  5. 安裝映像

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

    我們需要的部分從區塊 264192 開始(您的數字可能不同),一個區塊的大小是 512 字節,將它們相乘以獲得以位元組為單位的縮排。

  6. 轉到已安裝系統的資料夾並在其中掛起

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

    〜/ livecd / mnt — 已安裝系統目錄的完整路徑
    箱/箱 - 外殼(也可以替換為 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 將僅以超級使用者權限啟動。
    當嘗試在不使用 sudo 的情況下運行 roscore 時,會出現錯誤:

    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 <файл образа>

全部! 現在在幫助下 balena蝕刻機 您可以將系統映像燒錄到SD卡,將其插入ODROID-C2,您將擁有安裝了ROS的Ubuntu!

引用:

  • 該影片對如何在 Linux 中作弊以及為什麼需要它有很大幫助:



來源: www.habr.com

添加評論