隨著具身智能技術(shù)爆發(fā),機(jī)器人從工業(yè)場(chǎng)景向消費(fèi)級(jí)、服務(wù)級(jí)領(lǐng)域快速滲透,小到家庭陪伴機(jī)器人,大到工業(yè)協(xié)作機(jī)器人,均對(duì)“邊緣控制精度”與“生態(tài)協(xié)同能力”提出更高要求。據(jù)行業(yè)數(shù)據(jù)顯示,一臺(tái)中型服務(wù)機(jī)器人需集成10-15個(gè)傳感器節(jié)點(diǎn)與8-12個(gè)執(zhí)行器控制單元,而人形機(jī)器人的自由度關(guān)節(jié)更是突破20個(gè),這類(lèi)場(chǎng)景下,傳統(tǒng)“MCU+簡(jiǎn)單控制程序”的模式已無(wú)法滿(mǎn)足多節(jié)點(diǎn)協(xié)同需求——需同時(shí)實(shí)現(xiàn)實(shí)時(shí)電機(jī)控制、傳感器數(shù)據(jù)預(yù)處理與云端/主機(jī)端數(shù)據(jù)交互,這也推動(dòng)了“輕量化機(jī)器人操作系統(tǒng)(ROS)+高性能MCU”的技術(shù)組合成為行業(yè)主流。
作為ROS 2的輕量化分支,Micro-ROS憑借“資源適配性強(qiáng)”“生態(tài)兼容性高”“實(shí)時(shí)性?xún)?yōu)異”三大優(yōu)勢(shì),已成為嵌入式機(jī)器人領(lǐng)域的核心框架。其關(guān)鍵價(jià)值在于打破資源受限設(shè)備與ROS生態(tài)的壁壘:僅需幾十KB內(nèi)存即可在MCU端實(shí)現(xiàn)完整ROS 2通信能力(包括主題發(fā)布/訂閱、服務(wù)調(diào)用、參數(shù)管理等核心功能),且能無(wú)縫對(duì)接Linux主機(jī)端的ROS 2節(jié)點(diǎn)。在機(jī)器人實(shí)時(shí)電機(jī)控制、智能傳感器節(jié)點(diǎn)、邊緣計(jì)算預(yù)處理等場(chǎng)景實(shí)現(xiàn)規(guī)?;瘧?yīng)用,成為連接“邊緣控制層”與“云端算力層”的關(guān)鍵橋梁。
兆易創(chuàng)新GD32H7系列MCU,憑借Cortex-M7內(nèi)核,高達(dá)600MHz主頻、1MB級(jí)SRAM(含512KB緊耦合內(nèi)存)、多接口集成等硬件特性,完美匹配Micro-ROS的輕量化與實(shí)時(shí)性需求,成為國(guó)產(chǎn)MCU中適配Micro-ROS的優(yōu)選方案。
本文將從開(kāi)發(fā)板介紹、環(huán)境搭建、適配開(kāi)發(fā)、測(cè)試驗(yàn)證四個(gè)維度,提供GD32H7系列MCU適配Micro-ROS的完整技術(shù)指南。
GD32H7系列MCU適配Micro-ROS的工程代碼已在GitHub上開(kāi)源,歡迎開(kāi)發(fā)者下載使用。
Github倉(cāng)庫(kù)鏈接:
https://github.com/GigaDeviceSemiconductor/GD32H7-micro_ROS
Micro-ROS技術(shù)特性與架構(gòu)
Micro-ROS是專(zhuān)為資源受限嵌入式設(shè)備設(shè)計(jì)的ROS 2輕量級(jí)實(shí)現(xiàn)框架,其核心特性可概括為七點(diǎn):
優(yōu)化的客戶(hù)端API: 針對(duì)MCU資源特性?xún)?yōu)化,支持所有ROS 2核心概念(節(jié)點(diǎn)、話(huà)題、服務(wù)、參數(shù)等);
無(wú)縫生態(tài)集成: 可直接與Linux主機(jī)ROS 2節(jié)點(diǎn)通信,無(wú)需額外協(xié)議轉(zhuǎn)換;
輕量化中間件: 采用DDS-XRCE中間件,內(nèi)存占用低至8KB,適配資源受限場(chǎng)景;
多RTOS支持: 兼容FreeRTOS、Zephyr、NuttX等主流實(shí)時(shí)操作系統(tǒng),本文基于FreeRTOS開(kāi)發(fā);
寬松許可證: 基于Apache 2.0許可證,商用無(wú)限制;
活躍社區(qū)支持: 提供完善文檔、示例代碼與問(wèn)題反饋渠道,生態(tài)持續(xù)迭代;
長(zhǎng)期可維護(hù)性: 遵循ROS 2架構(gòu)規(guī)范,確保與后續(xù)版本的兼容性。

△micro-ROS的系統(tǒng)架構(gòu)
(圖片來(lái)源:micro-ROS官方網(wǎng)站)
GD32H7開(kāi)發(fā)板規(guī)格與接口定義
本文適配測(cè)試基于兩款GD32H7系列開(kāi)發(fā)板:GD32H759I-EVAL與GD32H75EY-EVAL,兩者分別支持串口、USB、以太網(wǎng)與Micro-ROS Agent通信,核心規(guī)格與接口定義如下:
1GD32H759I-EVAL板
主控芯片:GD32H759IMK6(Cortex-M7內(nèi)核,最高600MHz主頻);
供電方式:GD-Link Mini USB接口或DC-005連接器(5V);
核心外設(shè):Ethernet網(wǎng)口、USB HS0接口、3路CAN-FD、SDRAM、SPI-LCD、USARTx(多串口)等;
Micro-ROS關(guān)鍵接口定義:
打印串口:USART0(引腳PA9、PA10);
串口通信(與Agent):USART2(引腳PB10、PB11);
以太網(wǎng)通信(與Agent):ETH0網(wǎng)口(需將JP48、JP51、JP57、JP59、JP60、JP70跳帽接至ETH);
USB通信(與Agent):USB_HS0接口。

2GD32H75EY-EVAL板
主控芯片:GD32H75EYMJ6(Cortex-M7內(nèi)核,最高600MHz主頻);
供電方式:GD-Link Mini USB接口或DC-005連接器(5V);
核心外設(shè):USB HS0接口、2路CAN-FD、SPI、I2C、USARTx(多串口)等;
Micro-ROS關(guān)鍵接口定義:
打印串口:USART2(引腳PB10、PB11);
串口通信(與Agent):USART0(引腳PB6、PB7);
USB通信(與Agent):USB_HS0接口。

1ROS 2與Micro-ROS開(kāi)發(fā)環(huán)境搭建(Host:Ubuntu 22.04)
1.1ROS 2Humble環(huán)境安裝
ROS 2是Micro-ROS的主機(jī)端核心依賴(lài),本文選擇穩(wěn)定版Humble,安裝步驟如下:
1.1.1 基礎(chǔ)依賴(lài)安裝
打開(kāi)Ubuntu終端,執(zhí)行以下命令安裝系統(tǒng)依賴(lài):
sudoapt update &&sudoapt install -y curl gnupg2 lsb-release
1.1.2 環(huán)境變量與源配置
確保系統(tǒng)支持UTF-8編碼:
sudolocale-gen en_US en_US.UTF-8 sudoupdate-locale LC_ALL=en_US.UTF-8LANG=en_US.UTF-8 exportLANG=en_US.UTF-8
添加ROS 2 apt倉(cāng)庫(kù)密鑰與源:
sudocurl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo"deb [arch=$(dpkg --print-architecture)signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu$(lsb_release -cs)main"|sudotee/etc/apt/sources.list.d/ros2.list > /dev/null
1.1.3 ROS 2軟件包安裝
更新倉(cāng)庫(kù)緩存并安裝桌面版:
sudoapt update &&sudoapt upgrade -y sudoapt install -y ros-humble-desktop # 可選:安裝開(kāi)發(fā)工具(編譯依賴(lài)、調(diào)試工具) sudoapt install -y ros-humble-ros-base python3-colcon-common-extensions python3-rosdep
配置環(huán)境變量(每次打開(kāi)終端需執(zhí)行,或添加至~/.bashrc):
source/opt/ros/humble/setup.bash
1.1.4 環(huán)境驗(yàn)證(Talker-Listener測(cè)試)
終端1:運(yùn)行發(fā)布節(jié)點(diǎn)(talker):
source/opt/ros/humble/setup.bash ros2 run demo_nodes_cpp talker
終端2:運(yùn)行訂閱節(jié)點(diǎn)(listener):
source/opt/ros/humble/setup.bash ros2 run demo_nodes_cpp listener
若終端2能接收終端1發(fā)布的“Hello World”消息,則ROS 2環(huán)境安裝成功。
1.2Micro-ROS構(gòu)建系統(tǒng)安裝
Micro-ROS依賴(lài)專(zhuān)屬工具鏈實(shí)現(xiàn)固件編譯與Agent通信,安裝步驟如下:
1.2.1 工具鏈下載與依賴(lài)安裝
加載ROS 2環(huán)境并創(chuàng)建Micro-ROS工作空間:
source/opt/ros/humble/setup.bash mkdir-p ~/micro_ros_ws/src &&cd~/micro_ros_ws gitclone-b humble https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup
安裝依賴(lài)(rosdep與pip):
sudo rosdep init && rosdep update rosdep install--from-pathssrc--ignore-src-y sudo apt install -ypython3-pip pip3 install -U colcon-common-extensions
1.2.2 工具鏈編譯與環(huán)境加載
編譯Micro-ROS工具鏈:
colcon build --packages-select micro_ros_setup sourceinstall/local_setup.bash
創(chuàng)建固件工作空間:
ros2run micro_ros_setup create_firmware_ws.sh host
執(zhí)行后將在~/micro_ros_ws/firmware目錄下生成Micro-ROS工程結(jié)構(gòu),包含示例代碼與編譯腳本。
1.2.3 Micro-ROS環(huán)境驗(yàn)證(Ubuntu主機(jī)端測(cè)試)
以“ping-pong”示例驗(yàn)證環(huán)境(主機(jī)端模擬MCU節(jié)點(diǎn)):
編譯ping-pong固件:
cd~/micro_ros_ws/firmware colcon build --packages-select micro_ros_demos_rclc sourceinstall/local_setup.bash
終端1:運(yùn)行Micro-ROS Agent(UDP模式):
ros2run micro_ros_agent micro_ros_agent udp4 --port8888
終端2:運(yùn)行ping-pong節(jié)點(diǎn):
source~/micro_ros_ws/firmware/install/local_setup.bash ros2 run micro_ros_demos_rclc ping_pong
終端3:訂閱ping話(huà)題驗(yàn)證通信:
source/opt/ros/humble/setup.bash ros2 topicecho/ping
若終端3能接收ping消息,則Micro-ROS環(huán)境搭建成功。
2GD32H7系列MCU適配Micro-ROS開(kāi)發(fā)
2.1核心適配邏輯:靜態(tài)庫(kù)集成
由于GD32H7基于FreeRTOS開(kāi)發(fā),Micro-ROS適配采用“靜態(tài)庫(kù)集成”方案:先在Ubuntu主機(jī)端編譯生成適配Cortex-M7內(nèi)核的Micro-ROS靜態(tài)庫(kù)(含核心API、中間件、通信適配層),再將靜態(tài)庫(kù)與頭文件導(dǎo)入GD32 Embedded Builder工程,配合底層驅(qū)動(dòng)(串口、USB、以太網(wǎng))實(shí)現(xiàn)通信。
靜態(tài)庫(kù)編譯參考Micro-ROS官方教程(https://micro.ros.org/docs/tutorials/advanced/create_custom_static_library/),本文已提供預(yù)編譯完成的靜態(tài)庫(kù)(包含libmicroros.a及相關(guān)頭文件),直接導(dǎo)入工程即可使用。
2.2工程導(dǎo)入與編譯(基于GD32 Embedded Builder)
GD32 Embedded Builder是GD32系列MCU的專(zhuān)屬I(mǎi)DE,支持工程管理、編譯、下載,適配步驟如下:
2.2.1 工程結(jié)構(gòu)與靜態(tài)庫(kù)導(dǎo)入
下載GD32H7 Micro-ROS工程包(含GD32H759I_Eval_FreeRTOS_MicroROS與 GD32H75E_MicroROS兩個(gè)工程);
打開(kāi)GD32 Embedded Builder,導(dǎo)入目標(biāo)工程(如 GD32H759I_Eval_FreeRTOS_MicroROS);
將Micro-ROS靜態(tài)庫(kù)(libmicroros.a)放入工程Lib目錄,頭文件放入Inc/microros目錄,并在IDE中配置庫(kù)路徑與頭文件路徑。
2.2.2 不同通信接口的工程編譯
GD32H759I-EVAL支持串口(中斷/DMA)、USB CDC、以太網(wǎng)UDP三種通信方式,
GD32H75EY-EVAL支持串口(中斷/DMA)、USB CDC兩種方式,編譯時(shí)需選擇對(duì)應(yīng)目標(biāo):

以GD32H759I-EVAL的串口(中斷)為例,編譯步驟:
右擊工程→Build Configuration→Set Active→選擇gd32h7_microros_usart_it;
點(diǎn)擊“Build”按鈕,編譯完成后生成.elf與.hex文件;
其他通信方式的編譯步驟類(lèi)似,僅需切換目標(biāo)工程即可。
3GD32H7 Micro-ROS功能測(cè)試
3.1測(cè)試準(zhǔn)備
硬件:GD32H7開(kāi)發(fā)板、GD-Link調(diào)試器、串口線(xiàn)(USB-TTL)、以太網(wǎng)網(wǎng)線(xiàn)(僅GD32H759I-EVAL)、12V電源;
軟件:Ubuntu 22.04(已裝ROS 2與Micro-ROS Agent)、串口調(diào)試助手(如SSCOM)。
3.2分接口測(cè)試步驟
3.2.1 串口通信測(cè)試(以GD32H759I-EVAL為例)
硬件連接:
打印串口:USART0(PA9→TX,PA10→RX)接USB-TTL,用于查看調(diào)試信息;
通信串口:USART2(PB10→TX,PB11→RX)接另一USB-TTL,連接Ubuntu主機(jī)。
Agent啟動(dòng)(Ubuntu終端):
source/opt/ros/humble/setup.bash ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0 -b 115200
(注:/dev/ttyUSB0為Ubuntu識(shí)別的串口設(shè)備,可通過(guò)ls/dev/ttyUSB*查看)
固件下載:
在GD32 Embedded Builder中選擇gd32h7_microros_usart_it工程,點(diǎn)擊“Download”下載固件;
打開(kāi)串口調(diào)試助手(波特率115200),可看到開(kāi)發(fā)板打印的初始化信息。
功能驗(yàn)證:
打開(kāi)新Ubuntu終端,訂閱Micro-ROS節(jié)點(diǎn)發(fā)布的/gd32h7_microros_publisher話(huà)題:
source/opt/ros/humble/setup.bash ros2 topicecho/gd32h7_microros_publisher
若能接收32位整數(shù)數(shù)據(jù),則串口通信測(cè)試成功。
3.2.2 USB CDC通信測(cè)試(以GD32H759I-EVAL為例)
硬件連接:
打印串口:USART0接USB-TTL(查看調(diào)試信息);
USB通信:開(kāi)發(fā)板USB_HS0接口接Ubuntu主機(jī)。
Agent啟動(dòng)(Ubuntu終端):
source/opt/ros/humble/setup.bash # 查看USB CDC設(shè)備(通常為/dev/ttyACM0) ls/dev/ttyACM* # 啟動(dòng)Agent ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyACM0 -b 115200
-
mcu
+關(guān)注
關(guān)注
147文章
18924瀏覽量
398032 -
機(jī)器人
+關(guān)注
關(guān)注
213文章
31073瀏覽量
222181 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
26文章
6289瀏覽量
118050 -
兆易創(chuàng)新
+關(guān)注
關(guān)注
24文章
713瀏覽量
83698
原文標(biāo)題:GD32H7 Micro-ROS開(kāi)發(fā)實(shí)戰(zhàn):從零到一構(gòu)建機(jī)器人應(yīng)用
文章出處:【微信號(hào):GD32MCU,微信公眾號(hào):GD32MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何使用menuconfig添加配置micro-ros軟件包?
Fibocom MCU之兆易創(chuàng)新 技術(shù)資料
瑞薩將micro-ROS移植到RA MCU中
兆易創(chuàng)新全系產(chǎn)品和行業(yè)解決方案
IAR全面支持GD32H7系列超高性能MCU開(kāi)發(fā)解決方案
兆易創(chuàng)新GD32 MCU選型手冊(cè),適用于GD32全系列MCU
兆易創(chuàng)新AN062 基于GD32 MCU的EMC應(yīng)用指南
兆易創(chuàng)新GD32F4xx系列MCU固件庫(kù)使用指南
AN122 GD32H7系列MCU OSPI flash執(zhí)行環(huán)境用戶(hù)指南
GD32H7系列MCU安全啟動(dòng)概述
兆易創(chuàng)新GD32H7系列MCU助力海洋科技人才培養(yǎng)
AI MCU#兆易創(chuàng)新GD32H7系列MCU解讀
兆易創(chuàng)新GD32H7系列MCU解鎖邊緣AI新玩法
兆易創(chuàng)新GD32H7系列MCU榮獲2025中國(guó)國(guó)際工業(yè)博覽會(huì)集成電路創(chuàng)新成果獎(jiǎng)
兆易創(chuàng)新GD32H7系列MCU適配Micro-ROS的完整技術(shù)指南
評(píng)論