早期機器人開發的主流架構,日益凸顯弊端

目前絕大多數機器人項目的硬件架構是這樣的:
一塊運行 Ubuntu 的主控板負責算法
一/多塊 MCU(STM32 / ESP32 之類)MCU負責電機控制
兩者通過串口、CAN 或 USB 連接。
這個方案走到今天有其合理性——Ubuntu 上可以跑完整的 ROS 2 生態,MCU 上裸機程序足夠簡單可控。但隨著機器人算法復雜度不斷提升,這套架構的工程代價開始集中顯現:
多板卡,多工具鏈。 Ubuntu 側用 colcon 編譯 ROS 2 包,MCU 側用 Keil 或 CubeIDE 燒錄固件,兩套環境各自維護,互不相通。出問題的時候,光是判斷故障在哪一側就要花不少時間。
串口 / CAN 透傳是持續的瓶頸。 /cmd_vel 從 ROS 2 發出,經過協議轉換,通過物理線纜到 MCU——中間任何一個環節引入延遲或丟包,調試鏈路極長。通信速率本身也是上限,在需要高頻里程計或傳感器回傳的場景下,串口往往先成為瓶頸。
固件升級割裂。 Ubuntu 側可以通過網絡快速 OTA,MCU 每次改動都要重新燒錄,遠程升級需要額外開發一套機制。
硬件物料疊加。 主控板 + MCU 板 + 通信模塊,多板卡意味著更高的 BOM 成本、更復雜的結構設計和更長的供應鏈。
這些問題在早期驗證階段不明顯,但到產品化和批量交付階段,會被成倍放大。
vmRT-Thread 虛擬化:在一顆 SoC 上運行多系統,物理隔離
我們基于 RK3588 平臺(8 核心:4× Cortex-A76 + 4× Cortex-A55),使用 vmRT-Thread 虛擬化技術,在單顆 SoC 上同時部署了 Ubuntu 和 RT-Thread,兩個系統之間實現硬件級別的資源隔離:

虛擬化層面的物理資源劃分:
RT-Thread 域擁有固定的 CPU 核心、固定的內存地址段以及對應的硬件外設直通訪問權限。Ubuntu 側無論是 AI 推理把 CPU 跑滿,還是內核模塊崩潰,都無法越過虛擬化邊界影響到 RT-Thread 的控制線程。
通信機制:虛擬網卡 + micro-ROS,對上層完全透明
兩個域之間通過虛擬網卡互聯,不需要物理串口或 CAN 總線。RT-Thread 側運行 micro-ROS Client,Ubuntu 側運行 micro-ROS Agent,雙方通過標準 XRCE-DDS 協議通信。

Ubuntu 側應用發布的標準 /cmd_vel 話題,經過 micro-ROS Agent 轉發,在 RT-Thread 側被 micro-ROS Client 接收并解析為電機控制指令。整個鏈路對 ROS 2 上層完全透明,不需要改變任何 ROS 2 應用代碼。
通信/應用 調用鏈解析:三步完成配置
第一步:虛擬化環境部署
在 RK3588 開發板上部署 vmRT-Thread,創建兩個 Guest 系統,按需為每個系統分配物理資源(CPU 核心、內存地址段、外設直通)。Ubuntu 域和 RT-Thread 域通過配置虛擬網卡建立通信鏈路。

第二步:RT-Thread 側——硬實時控制
RT-Thread 域獨占 PWM、編碼器、Timer 等外設,實現以下功能:
電機驅動與 PID 閉環控制
麥克納姆輪運動學解算(vx / vy / ωz → 各輪轉速)
訂閱 micro-ROS 話題,接收 /cmd_vel 速度目標
編碼器采樣與里程計發布
底盤急停響應
控制線程以固定周期運行,不依賴 Ubuntu 側的調度狀態。
第三步:Ubuntu 側——智能感知與決策
Ubuntu 域完整保留 ROS 2 生態:
ROS 2 Humble + Nav2 路徑規劃
SLAM 建圖(Gmapping / Cartographer)
激光雷達 / IMU 驅動接入
micro-ROS Agent(橋接兩域通信)
本地 AI 大模型推理服務(DeepSeek / Qwen 等)
對比傳統方案具體改變了什么

1. vs. Ubuntu + 裸機 MCU:
開發流程簡化。RT-Thread 側通過 env+vscode工具開發,系統鏡像統一管理,不再需要維護獨立的串口透傳協議和 MCU 燒錄流程。
調試鏈路變短。分層明確:傳感器數據不通,查 Ubuntu 側 ROS Topic;導航無速度輸出,查 Nav2、TF、costmap;/cmd_vel 正常但車不動,查 micro-ROS Agent 連接狀態和 RT-Thread 側控制回調。問題歸屬清晰,不會在一個"大系統"里互相干擾。
硬件物料減少。省去獨立 MCU 板、通信模塊及對應電源和結構件,BOM 更簡潔,整機體積更小。
2. vs. Ubuntu + PREEMPT_RT:
底盤控制的實時性有了物理層面的保證,而不是依賴內核調度的"盡力而為"。Ubuntu 側即使發生進程崩潰或內核異常,RT-Thread 域的控制線程和硬件外設仍然獨立運行,機器人不會因為上層系統故障而失控。
擴展:接入本地大模型,構建完整的具身智能閉環
在上述架構基礎上,Ubuntu 域可以進一步接入本地大模型推理服務(以 DeepSeek 為例),通過 MCP(Model Context Protocol)或 Function Calling 方式將自然語言指令轉化為 ROS 2 控制動作。
用戶輸入自然語言指令后,大模型在本地完成意圖解析和任務拆解,調用 MCP Server 暴露的標準工具接口(如 move_forward(distance)、rotate(angle)),生成對應的 ROS 2 話題或 Nav2 目標點,經過 Ubuntu 側安全層仲裁后,速度指令通過 micro-ROS 進入 RT-Thread 執行。
分層職責清晰:大模型負責理解和規劃,ROS 2 負責機器人語義與導航,RT-Thread 負責確定性執行,vmRT-Thread 虛擬化負責把不同實時性邊界的任務在物理層面隔離開。

總結
vmRT-Thread 虛擬化混合部署的核心價值主要體現在兩點:故障隔離和硬件虛擬化共享。
Ubuntu 域負責 ROS 2、AI 推理、SLAM/Nav2、可視化等復雜應用。RT-Thread 域保障底盤控制的實時性和確定性。 同時,虛擬化機制將 CPU、內存、中斷、外設和虛擬網卡等資源在一顆 SoC 內按域分配、隔離或共享,讓原本多板卡協同的系統收斂為雙域架構。兩域通過虛擬網卡 + micro-ROS 互聯,對 ROS 2 上層應用保持透明。
后續我們會持續分享更多落地細節,包括:
vmRT-Thread 核心分配與外設配置
RT-Thread 側 PID 控制與 micro-ROS 集成實現
本地大模型 + MCP 工具鏈搭建過程
了解本方案詳細信息,請聯系我們

添加小師弟好友“rtthread2020”
拉你進RT-Thread技術交流群,找到組織!



想要在RT-Thread平臺或社區投放內容?
或想參與相關直播活動及賽事?
RT-Thread已開放對接窗口,
請通過郵件與我們取得聯系,期待合作!
合作郵箱: tongfangyi@rt-thread.com