前 言本文主要介紹創(chuàng)龍科技TL3576-MiniEVM評估板演示基于Ubuntu的ROS系統(tǒng)(版本:ROS2 Foxy)使用說明,包括鏡像編譯、鏡像替換,以及ROS系統(tǒng)測試的方法。適用開發(fā)環(huán)境如下。 Windows開發(fā)環(huán)境:Windows 10 64bit Linux虛擬機(jī)環(huán)境:VMware16.2.5、Ubuntu22.04.5 64bit U-Boot:U-Boot-2017.09 Kernel:Linux-6.1.115 ROS:ROS2 Foxy ROS(Robot Operating System,下文簡稱"ROS")是一個(gè)適用于機(jī)器人的開源的元操作系統(tǒng)。它提供了操作系統(tǒng)應(yīng)有的服務(wù),包括硬件抽象,底層設(shè)備控制,常用函數(shù)的實(shí)現(xiàn),進(jìn)程間消息傳遞,以及包管理。它也提供用于獲取、編譯、編寫、和跨計(jì)算機(jī)運(yùn)行代碼所需的工具和庫函數(shù)。 我司ROS系統(tǒng)源碼基于ROS官方獲取,并基于瑞芯微官方參考文檔編譯。更多詳細(xì)信息請查看“6-開發(fā)參考資料\Rockchip官方參考文檔\Linux\ApplicationNote\”目錄下的《Rockchip_Instruction_Linux_ROS2_CN》文檔。 請先按照調(diào)試工具安裝、開發(fā)環(huán)境搭建相關(guān)文檔,安裝SecureCRT串口調(diào)試終端、VMware虛擬機(jī)等相關(guān)軟件。無特殊說明情況下,本文默認(rèn)使用Power IN/USB TO UART0作為調(diào)試串口,使用eMMC啟動(dòng)系統(tǒng),通過路由器與PC機(jī)進(jìn)行網(wǎng)絡(luò)連接,請確保PC機(jī)、Ubuntu系統(tǒng)可正常訪問互聯(lián)網(wǎng)。 評估板簡介創(chuàng)龍科技TL3576-MiniEVM是一款基于瑞芯微RK3576J/RK3576高性能處理器設(shè)計(jì)的4核ARM Cortex-A72 + 4核ARM Cortex-A53 + ARM Cortex-M0國產(chǎn)工業(yè)評估板,Cortex-A72核心主頻高達(dá)2.2GHz,Cortex-A53核心主頻高達(dá)2.0GHz。評估板由核心板和評估底板組成,核心板CPU、ROM、RAM、電源、晶振等所有元器件以及評估底板元器件均采用國產(chǎn)工業(yè)級(jí)方案,國產(chǎn)化率100%。同時(shí),評估底板大部分元器件亦采用國產(chǎn)工業(yè)級(jí)方案,國產(chǎn)化率約為99%(按元器件數(shù)量占比,數(shù)據(jù)僅供參考)。核心板經(jīng)過專業(yè)的PCB Layout和高低溫測試驗(yàn)證,支持選配屏蔽罩,質(zhì)量穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境要求。 評估板引出2路Ethernet、2路USB、Micro SD、UART等通信接口,同時(shí)引出2路MIPI CSI、MIPI DSI、DP Display、HDMI OUT、MIC IN/HP OUT等音視頻多媒體接口,支持4K@60fps H.265/H.264視頻編碼、8K@30fps H.265/4K@60fps H.264視頻解碼。 評估板體積小巧,尺寸為80mm*130mm,可作為卡片式電腦使用,且便于產(chǎn)品集成,方便用戶快速進(jìn)行產(chǎn)品方案評估與技術(shù)預(yù)研。 評估板硬件資源圖解1 評估板硬件資源圖解2 ROS系統(tǒng)測試請使用網(wǎng)線將評估板ETH1 RGMII網(wǎng)口、PC機(jī)連接至同一個(gè)路由器,執(zhí)行如下命令,安裝netifaces庫。 Target# apt-get update Target# apt-get install python3-netifaces 圖 1 執(zhí)行如下命令,配置評估板測試環(huán)境。Target# export COLCON_CURRENT_PREFIX=/opt/ros Target# source /opt/ros/local_setup.sh 圖 2 執(zhí)行如下命令,創(chuàng)建Log目錄,用于保存ROS程序運(yùn)行的Log。Target# mkdir -p /root/.ros/log 圖 3 基于Python的通信功能測試 執(zhí)行如下命令,啟動(dòng)ROS節(jié)點(diǎn)訂閱消息。 Target# ros2 run demo_nodes_py listener & 圖 4 執(zhí)行如下命令,啟動(dòng)ROS節(jié)點(diǎn)發(fā)布消息,實(shí)現(xiàn)訂閱消息節(jié)點(diǎn)與發(fā)布消息節(jié)點(diǎn)之間的通信。此時(shí)評估板串口調(diào)試終端將會(huì)打印兩節(jié)點(diǎn)間通信的信息,如下圖所示。按"Ctrl + C"可退出測試程序,即讓發(fā)布消息的節(jié)點(diǎn)退出。Target# ros2 run demo_nodes_py talker 圖 5 執(zhí)行如下命令,查看并根據(jù)系統(tǒng)進(jìn)程號(hào)關(guān)閉所有ROS節(jié)點(diǎn)。進(jìn)程號(hào)請以實(shí)際情況為準(zhǔn)。Target# ps -a Target# kill 1667 Target# kill 1668 圖 6 基于C++的通信功能測試 執(zhí)行如下命令,啟動(dòng)ROS節(jié)點(diǎn)訂閱消息。 Target# ros2 run demo_nodes_cpp listener & 圖 7 執(zhí)行如下命令,啟動(dòng)ROS節(jié)點(diǎn)發(fā)布消息,實(shí)現(xiàn)訂閱消息節(jié)點(diǎn)與發(fā)布消息節(jié)點(diǎn)之間的通信。此時(shí)評估板串口調(diào)試終端將會(huì)打印兩節(jié)點(diǎn)間通信的信息,如下圖所示。按"Ctrl + C"可退出測試程序,即讓發(fā)布消息的節(jié)點(diǎn)退出。Target# ros2 run demo_nodes_cpp talker 圖 8 執(zhí)行如下命令,根據(jù)系統(tǒng)進(jìn)程號(hào)關(guān)閉所有ROS節(jié)點(diǎn)。進(jìn)程號(hào)請以實(shí)際情況為準(zhǔn)。Target# ps -a Target# kill 1765 Target# kill 1766 圖 9 turtlesim(小海龜)測試 請使用HDMI線將HDMI顯示器與評估板HDMI OUT接口連接。然后執(zhí)行如下命令,配置評估板測試環(huán)境。 執(zhí)行如下命令,后臺(tái)運(yùn)行小海龜程序。 Target# ros2 run turtlesim turtlesim_node & 圖 10 圖 11 執(zhí)行如下命令,發(fā)布話題消息,使小海龜轉(zhuǎn)圈。Target# ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}" 圖 12 參數(shù)解析:(1) ros2 topic pub:發(fā)布消息到主題; (2) --rate 1:發(fā)布消息速率,設(shè)置為1次每秒; (3) /turtle1/cmd_vel:主題名稱; (4) geometry_msgs/msg/Twist:發(fā)布消息類型; (5) {linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}:發(fā)布消息的內(nèi)容,線速度(linear)為x方向上的2.0、角速度(angular)為z軸方向上的1.8。 圖 13 ROS開發(fā)請先參考《Ubuntu系統(tǒng)使用手冊》文檔“SDK安裝”章節(jié)正確安裝SDK。本小節(jié)主要演示基于Ubuntu的ROS系統(tǒng)編譯與鏡像制作方法。 開發(fā)環(huán)境搭建 打開Ubuntu終端,執(zhí)行如下命令,安裝編譯所需的colcon工具。 Host# sudo apt-get install curl Host# curl -s https://packagecloud.io/install/repositories/dirk-thomas/vcstool/script.deb.sh | sudo bash Host# sudo apt update Host# sudo apt-get install -y python3-pip python3-rosdep2 python3-rosinstall-generator python3-vcstool build-essential Host# pip3 install -U colcon-common-extensions Host# pip3 uninstall empy Host# pip3 install empy==3.3.4 圖 14 圖 15 圖 16 圖 17 圖 18 圖 19 執(zhí)行如下命令,配置環(huán)境變量。Host# export PATH=${PATH}:/home/tronlong/.local/bin 圖 20 編譯ROS軟件包請根據(jù)交叉編譯工具鏈實(shí)際解壓路徑,執(zhí)行如下命令,配置交叉編譯工具鏈。 Host# source /home/tronlong/RK3576/rk3576_linux6.1_release/ubuntu/environment 圖 21 執(zhí)行如下命令,創(chuàng)建ROS軟件包的工作目錄,并進(jìn)入該目錄,目錄可命名為任意名稱。Host# mkdir ros2_project_test Host# cd ros2_project_test 圖 22 執(zhí)行如下命令,創(chuàng)建ROS軟件包源碼目錄,并進(jìn)入該目錄。Host# mkdir src Host# cd src 圖 23 執(zhí)行如下命令,在源碼目錄下生成my_package包。本案例以構(gòu)建CPP功能包為例,如需構(gòu)建Python功能包可將參數(shù)ament_cmake改為ament_python。Host# ros2 pkg create --build-type ament_cmake --node-name my_node my_package 圖 24 參數(shù)解析:--build-type ament_cmake :指定軟件包的構(gòu)建類型為ament_cmake; --node-name my_node:為軟件包指定了一個(gè)my_node節(jié)點(diǎn); --my_package:軟件包的名稱為my_package。 完成構(gòu)建后,ROS軟件包源碼目錄結(jié)構(gòu)如下所示。可根據(jù)實(shí)際需要對"my_package/src/my_node.cpp"進(jìn)行修改。 圖 25 返回ROS軟件包工作目錄,編譯軟件包。Host# cd .. Host# colcon build 圖 26 編譯完成后在當(dāng)前目錄下生成如下目錄,目錄內(nèi)容如下表所示。圖 27 ROS軟件測試 請將完成編譯的ROS軟件包中install目錄拷貝至評估板文件系統(tǒng)"/opt/ros/"目錄下,執(zhí)行如下命令配置ROS的運(yùn)行環(huán)境與命令行工具。 Target# export COLCON_CURRENT_PREFIX=/opt/ros Target# source /opt/ros/local_setup.sh 圖 28 執(zhí)行如下命令,加載ROS軟件包環(huán)境。Target# export COLCON_CURRENT_PREFIX=/opt/ros/install Target# source /opt/ros/install/local_setup.sh 圖 29 執(zhí)行如下命令,運(yùn)行ROS軟件包,可以看到當(dāng)前ROS軟件包程序運(yùn)行打印結(jié)果。Target# ros2 run my_package my_node 圖 30 |