NavQPlus 是 NXP 推出的 AI/ML 伴隨電腦評估套件(EVK),專為移動機器人、ROS(Robot Operating System)、地面站和智能相機等應用設計。有一些主要特點:如處理器是基於 i.MX 8M Plus 應用處理器,包含四個 Arm® Cortex®-A53 核心和一個 Cortex®-M7 核心,並配備 2.3 TOPS 的神經處理單元(NPU)。記憶體支持 8GB LPDDR4 記憶體和 32GB eMMC 存儲。周邊的連接介面則配備雙 USB Type-C 接口、雙 CAN-FD 接口、I2C、SPI、UART、GPIO 和一個千兆以太網接口(僅限某些型號)顯示和攝像頭接口可支持兩個 MIPI-CSI 攝像頭接口、一個 Micro-HDMI、MIPI-DSI 和兩個 LVDS 顯示接口。安全性:內置 SE050 安全元件,提供 NFC 支持。軟件支持:支持 Linux 桌面 POC、Python、eIQ 和 ROS2,適合低功耗機器學習、視覺計算、路徑規劃和導航。
此為第三方開發平台,可到https://nxp.gitbook.io/navqplus 網站查看相關的資訊。建構映像檔可參考Build steps for current image release 的步驟。
本篇博文分享實作編譯映像時,所發生問題及修改的方法。
建構映像檔的步驟:
- 建立目錄,在目錄下執行 clone Docker repository的命令。
git clone https://github.com/rudislabs/docker-imx-builder.git
- 安裝Docker(with docker compose) 映像檔指令
將目錄切到 docker.sh所在的路徑,並執行docker.sh
cd /home/$USER/git/docker-imx-builder/navqplusbuilder/install
./docker.sh
- 構建docker 映像檔指令。
cd /home/$USER/git/docker-imx-builder/navqplusbuilder
docker compose build
- 在Docker 中 構建 NavQPlus Humble映像檔
1. 將路徑切換到navqplusbuilder的目錄,執行docker compose run navqplusbuilder 指令。
cd /home/$USER/git/docker-imx-builder/navqplusbuilder
docker compose run navqplusbuilder
2. 在navqplusbuilder Docker 容器中執行 Humble 建構的腳本指令。
wget https://raw.githubusercontent.com/rudislabs/meta-navqplus-apt-ros/imx-6.1.22-humble/scripts/build.sh
chmod a+x build.sh
./build.sh
如構建過程中遇到問題,造成構建映像檔無法正常生成,可參考本篇的解決方法:
Q1. 執行 docker compose run navqplusbuilder,出出現The “SSH_AUTH_SOCK” variable is not set.Defaulting to a blank string”的waring 訊息,造成無法進到Docker 環境。
AnS: 建議可以先執行 eval "$(ssh-agent -s)" 的指令後,再執行 docker compose run navqplusbuilder。則可正常進入work 的目錄。
Q2: work目錄權根不足問題。
Ans:在執行在navqplusbuilder Docker 容器中執行 Humble 建構的腳本指令前建議先修改Dockerfile中UID_USER的數值,要跟本機Unbuntu 環境下的User ID一致,避免下載源代碼及執行指令權根不足問題
如本機Ubuntu 的的user ID 為1006(pennylin),所以在Dockefile 中的UID_USER也改為1006。再執行一次docker compose build 指令。
Dockerfile 的修改內容:
Q3:因github權限問題無法下載
Ans: build.sh 中 下載檔案的路徑寫為 git clone -b $BRANCH git@github.com:rudislabs/${i}.git || exit $? 建議先修改為git clone -b $BRANCH https://github.com/rudislabs/${i}.git || exit $?
Q4: 出現"ERROR: imx-image-desktop-ros-22.04.2-r0 do_rootfs: /usr/bin/apt-get failed to execute as expected! 的問題。
Ans: 可仔細查看建構中的錯誤訊息,在log 訊息中" ERROR: Logfile of failure stored in: /home/user/work/build-desktop/builddir/tmp/work/imx8mpnavq-fsl-linux/imx-image-desktop-ros/22.04.2-r0/temp/log.do_rootfs.28978",
表示failure logfile 存放的位置為 log.do_rootfs.28978,查看此failure log 可發現造成的原因為"E: Unable to locate package ros-humble-dataspeed-dbw-msgs".
所以在build-desktop/sources/meta-navqplus-apt-ros/recipes-fsl/images/ros2-packages.inc 的檔案中移除 "ros-humble-dataspeed-dbw-msgs" 程式碼 就可再正常建構映像檔。
Q5: 出現"run.do_install_home_files.17092: 172: /home/user/work/build-desktop/builddir/tmp/work/imx8mpnavq-fsl-linux/imx-image-desktop-ros/22.04.2-r0/rootfs/home/user/CycloneDDSConfig.xml: Permission denied" 問題。
Ans: 主因是https://github.com/voxelbotics/meta-vb-imx8mp/commit/c0e4125174758aeef381942f61a55234fe2e6d45 中修改,所造成的錯誤。
建議可以在build-desktop/sources/meta-navqplus-apt-ros/recipes-fsl/images/imx-image-desktop-ros.bb 的檔案中移除如下的程式碼。
評論