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