實現ARM+ROS(機器人作業系統)之環境搭建!

武漢永珍奧科發表於2022-09-28

    如何低成本搭建ARM+ROS的硬體載體?上文為大家介紹了實現的思路及原理,本文將為讀者實際操作,展示ROS部署前的籌備工作及步驟分解。

1. 方案概述

本文重點介紹低成本搭建ARM+ROS的硬體及底層實現。開發板選用HDG2L-IoT評估套件,預設配置為2G記憶體、8G儲存,搭載可玩性極高的Ubuntu系統。


搭建ARM+ROS

 

開發套件預設的Ubuntu系統大概佔用3.1G空間,剩餘3.2G空間,在構建docker+ROS環境時可能會報eMMC空間不足的錯誤,所以需要調整HDG2L-IoT的啟動引數,將啟動引數改為引導到TF空間中。市面上常見的樹莓派部署ROS方案也是如此操作。

2. 方案准備

首先,需要用到的硬體如下所示。

 

搭建ARM+ROS硬體準備

硬體引數


3. TF卡掛載Ubuntu韌體修改

本小節將介紹如何實現HDG2L-IoT掛載TF卡內的檔案系統,步驟如下:

1) 製作啟動卡;

2) 解壓目標檔案系統到TF卡內;

3) 修改uboot啟動引數;

3.1 製作啟動卡

首先製作啟動卡,格式化TF卡的操作可透過瑞薩提供的shell指令碼實現,在PC端的Ubuntu開發環境下,執行以下命令來下載操作指令碼。


Ubuntu開發環境


將需要被用作啟動卡的TF卡插入到PC機內,用虛擬機器來操作,調整步驟如下。首先開啟虛擬機器的USB 3.1功能,以免TF卡讀取失敗。

 

Ubuntu開發環境


然後將TF卡匯入Ubuntu虛擬機器中,如下所示。

 

TF卡匯入Ubuntu虛擬機器


系統能識別後,執行剛才下載的usb_sd_partition.sh指令碼,如下所示。


7.jpg


指令碼執行成功後,TF卡將分為兩個分割槽,分割槽1為fat32,分割槽2為ext4。

 

8.jpg


(注:當前新版本的Windows系統比較少支援ext4格式的TF卡,所以在Windows環境下一般只看到分割槽1,分割槽2會提示需要格式才能識別,請忽略。)

3.2 複製目標檔案到TF中

將HDG2L-IoT配套的Ubuntu壓縮包解壓到ext4分割槽中,虛擬機器內自動掛載到/media/${USER}/sdb2內。本機的解壓命令如下所示。


9.jpg


將HDG2L-IoT配套的核心映象複製到Windows下識別的TF分割槽中(FAT32系統允許被Windows系統識別,ext4系統不被識別),複製後如下所示。

 

10.jpg


3.3 修改uboot啟動引數

最後需要調整HDG2L-IoT的uboot啟動啟動引數,引導其使用TF卡內的核心與檔案系統,首先上電,在倒數計時前進入uboot選單,如下所示。


11 (2).jpg

 

將上一步中製作好的TF卡插入HDG2L-IoT板卡的TF卡槽中,在U-Boot提示符下設定以下變數,bootargs變數用於指定檔案系統的載體,在系統內,TF卡槽佔用的裝置名為/dev/mmcblk1p2。


12.jpg


然後設定從TF的分割槽1內獲取核心映象和核心裝置樹,命令如下所示。


13.jpg


設定完成後,透過以下命令儲存uboot的環境變數,命令如下所示。

14.jpg

重新啟動後,若TF卡正常,整體儲存空間情況如下所示。

 

15.jpg


若TF卡沒插入,uboot的啟動會報錯誤資訊,錯誤資訊如下所示。

 

16.jpg


4. 安裝docker環境

正常啟動之後,開始搭建docker環境。

4.1 安裝docker軟體

首先,燒錄後的第一次上電的板卡需要更新內部的軟體版本,命令如下所示。update更新失敗注意檢測網路狀態和date日期。部分軟體可能體積過大,需要耐心等待。


17.jpg


然後清除舊版本的docker軟體,再重新安裝docker.io。


18.jpg


啟動docker。


19.jpg


使能docker開機自啟動。


20.jpg


檢查docker執行狀態。


 

21.jpg

22.jpg


4.2 獲取映象

執行此命令可以從Docker Hub上下載現成映象。


23.jpg


檢視本地的映象檔案命令如下所示。


24.jpg

25.jpg

 

4.3 建立容器

容器就是載入模板後執行的沙盒環境,具有執行時所需的可寫檔案層、應用程式也處於執行狀態。概念上可能會與PC端常用的虛擬機器混淆,虛擬機器是包括核心、應用執行環境和其他系統環境的,而Docker容器就是獨立執行的一個或一組應用以及他們必須的執行環境。

建立容器時,需要指定使用的映象檔案,這裡使用上面用pull指令下載下來的映象檔案,建立命令如下所示。


26.jpg


檢視容器狀態,命令如下所示,每個容器都有自己的CONTAINER_ID與NAMES,供後面的命令操作使用(可使用docker rename命令修改容器名,便於簡便使用)。


27.jpg

 

28.jpg

4.4 啟動容器

容器建立後,透過CONTAINER_ID與NAMES來操作容器,啟動命令如下所示。


29.jpg


上文所說,容器是執行一個或一組程式,docker ps命令裡的COMMAND即為容器執行的程式,當前顯示bash,即進入命令互動程式。透過以下命令進入容器內部。


30.jpg


進入後,可以操作容器內的命令,如下所示。

 

31.jpg


透過exit命令,可退出容器,退出後容器就處於停止狀態,如下所示。

 

32.jpg


透過以上操作,我們就完成了硬體與底層的搭建,為ROS執行在這套開發板上做好了準備,下一章節將為大家帶來ROS的部署方法。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70009145/viewspace-2916527/,如需轉載,請註明出處,否則將追究法律責任。

相關文章