如何低成本搭建ARM+ROS的硬件載體?上文為大家介紹了實(shí)現的思路及原理,本文將為讀者實(shí)際操作,展示ROS部署前的籌備工作及步驟分解。 1. 方案概述 本文重點(diǎn)介紹低成本搭建ARM+ROS的硬件及底層實(shí)現。開(kāi)發(fā)板選用HDG2L-IoT評估套件,默認配置為2G內存、8G存儲,搭載可玩性極高的Ubuntu系統。 開(kāi)發(fā)套件默認的Ubuntu系統大概占用3.1G空間,剩余3.2G空間,在構建docker+ROS環(huán)境時(shí)可能會(huì )報eMMC空間不足的錯誤,所以需要調整HDG2L-IoT的啟動(dòng)參數,將啟動(dòng)參數改為引導到TF空間中。市面上常見(jiàn)的樹(shù)莓派部署ROS方案也是如此操作。 2. 方案準備 首先,需要用到的硬件如下所示。 3. TF卡掛載Ubuntu固件修改 本小節將介紹如何實(shí)現HDG2L-IoT掛載TF卡內的文件系統,步驟如下: 1)制作啟動(dòng)卡; 2)解壓目標文件系統到TF卡內; 3)修改uboot啟動(dòng)參數; 3.1制作啟動(dòng)卡 首先制作啟動(dòng)卡,格式化TF卡的操作可通過(guò)瑞薩提供的shell腳本實(shí)現,在PC端的Ubuntu開(kāi)發(fā)環(huán)境下,執行以下命令來(lái)下載操作腳本。 將需要被用作啟動(dòng)卡的TF卡插入到PC機內,用虛擬機來(lái)操作,調整步驟如下。首先打開(kāi)虛擬機的USB 3.1功能,以免TF卡讀取失敗。 然后將TF卡導入Ubuntu虛擬機中,如下所示。 系統能識別后,執行剛才下載的usb_sd_partition.sh腳本,如下所示。 腳本執行成功后,TF卡將分為兩個(gè)分區,分區1為fat32,分區2為ext4。 (注:當前新版本的Windows系統比較少支持ext4格式的TF卡,所以在Windows環(huán)境下一般只看到分區1,分區2會(huì )提示需要格式才能識別,請忽略。) 3.2拷貝目標文件到TF中 將HDG2L-IoT配套的Ubuntu壓縮包解壓到ext4分區中,虛擬機內自動(dòng)掛載到/media/${USER}/sdb2內。本機的解壓命令如下所示。 將HDG2L-IoT配套的內核鏡像拷貝到Windows下識別的TF分區中(FAT32系統允許被Windows系統識別,ext4系統不被識別),拷貝后如下所示。 3.3修改uboot啟動(dòng)參數 最后需要調整HDG2L-IoT的uboot啟動(dòng)啟動(dòng)參數,引導其使用TF卡內的內核與文件系統,首先上電,在倒計時(shí)前進(jìn)入uboot菜單,如下所示。 將上一步中制作好的TF卡插入HDG2L-IoT板卡的TF卡槽中,在U-Boot提示符下設定以下變量,bootargs變量用于指定文件系統的載體,在系統內,TF卡槽占用的設備名為/dev/mmcblk1p2。 然后設置從TF的分區1內獲取內核鏡像和內核設備樹(shù),命令如下所示。 設置完成后,通過(guò)以下命令保存uboot的環(huán)境變量,命令如下所示。 重新啟動(dòng)后,若TF卡正常,整體存儲空間情況如下所示。 若TF卡沒(méi)插入,uboot的啟動(dòng)會(huì )報錯誤信息,錯誤信息如下所示。 4. 安裝docker環(huán)境 正常啟動(dòng)之后,開(kāi)始搭建docker環(huán)境。 4.1安裝docker軟件 首先,燒錄后的第一次上電的板卡需要更新內部的軟件版本,命令如下所示。update更新失敗注意檢測網(wǎng)絡(luò )狀態(tài)和date日期。部分軟件可能體積過(guò)大,需要耐心等待。 然后清除舊版本的docker軟件,再重新安裝docker.io。 啟動(dòng)docker。 使能docker開(kāi)機自啟動(dòng)。 檢查docker運行狀態(tài)。 4.2獲取鏡像 運行此命令可以從Docker Hub上下載現成鏡像。 查看本地的鏡像文件命令如下所示。 4.3創(chuàng )建容器 容器就是加載模板后運行的沙盒環(huán)境,具有運行時(shí)所需的可寫(xiě)文件層、應用程序也處于運行狀態(tài)。概念上可能會(huì )與PC端常用的虛擬機混淆,虛擬機是包括內核、應用運行環(huán)境和其他系統環(huán)境的,而Docker容器就是獨立運行的一個(gè)或一組應用以及他們必須的運行環(huán)境。 創(chuàng )建容器時(shí),需要指定使用的鏡像文件,這里使用上面用pull指令下載下來(lái)的鏡像文件,創(chuàng )建命令如下所示。 查看容器狀態(tài),命令如下所示,每個(gè)容器都有自己的CONTAINER_ID與NAMES,供后面的命令操作使用(可使用docker rename命令修改容器名,便于簡(jiǎn)便使用)。 4.4啟動(dòng)容器 容器創(chuàng )建后,通過(guò)CONTAINER_ID與NAMES來(lái)操作容器,啟動(dòng)命令如下所示。 上文所說(shuō),容器是運行一個(gè)或一組進(jìn)程,docker ps命令里的COMMAND即為容器運行的進(jìn)程,當前顯示bash,即進(jìn)入命令交互進(jìn)程。通過(guò)以下命令進(jìn)入容器內部。 進(jìn)入后,可以操作容器內的命令,如下所示。 通過(guò)exit命令,可退出容器,退出后容器就處于停止狀態(tài),如下所示。 通過(guò)以上操作,我們就完成了硬件與底層的搭建,為ROS運行在這套開(kāi)發(fā)板上做好了準備,下一章節將為大家帶來(lái)ROS的部署方法。 |