介紹
前幾天,我在準備畢業論文的時候,遇到了需要創作圖像的問題。 Ubuntu 對於已安裝 ROS 的單板計算機(機器人作業系統-機器人作業系統)。 簡而言之,該文憑致力於管理一組機器人。 這些機器人配備了兩個輪子和三個測距儀。 整個過程由 ROS 控制,ROS 運行在 ODROID-C2 板上。

機器人瓢蟲。 抱歉照片品質不佳
既沒有時間也沒有意願在每個機器人上單獨安裝 ROS,因此需要一個已安裝 ROS 的系統映像。 瀏覽互聯網後,我發現了幾種實現此目的的方法。
一般來說,找到的所有解決方案都可以分為以下幾組。
- 從現成且配置好的系統建立映像的程式(, , 、系統後台等)
- 允許您創建自己的圖像的項目(, )
- 自己組裝圖像( и 加 )
使用第一組的解決方案似乎是最簡單且最具吸引力的選擇,但我始終無法為 ODROID 建立即時系統映像。 第二組的解決方案也不太適合我,因為進入門檻相當高。 根據可用教程進行手動組裝也不合適,因為... 我的映像沒有壓縮檔案系統。
結果,我看到了一個關於 chroot 的影片(chroot - 更改根目錄(文末附有視訊連結)鑑於它的功能,我決定使用它。下面我將介紹我的具體客製化案例。 Ubuntu 面向機器人開發人員。
初始數據:
- 除了使用 balenaEtcher 寫入 SD 卡之外,修改映像的整個過程都在作業系統中完成。 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 — 已安裝系統目錄的完整路徑
箱/箱 - 外殼(也可以替換為 bin/bash)
現在您可以開始安裝必要的軟體包和應用程式。
安裝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) <mauro.ribeiro@hardkernel.com>這是因為包簽署金鑰已過期。 若要更新密鑰,請鍵入:
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 C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654sudo 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-essentialsudo apt install python-rosdepsudo rosdep init rosdep update設定存取權限
由於我們已登錄,並且實際上代表正在組裝的系統的根執行所有操作,因此 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-permissionsrviz 和 rqt 軟體套件的附加安裝
sudo apt-get install ros-melodic-rqt ros-melodic-rviz
最後的潤飾
- 退出 chroot:
exit - 解除安裝鏡像
cd .. sudo umount mnt/ - 讓我們將系統映像打包到檔案中
xz –ckv1 <файл образа>
全部! 現在在幫助下 您可以將系統鏡像寫入 SD 卡,將其插入 ODROID-C2,然後您就可以… Ubuntu 已安裝 ROS!
引用:
- 該影片對如何在 Linux 中作弊以及為什麼需要它有很大幫助:

來源: www.habr.com

