智元自主研發(fā)的機(jī)器人中間件AimRT正式開(kāi)源上線。
相關(guān)鏈接:
- 官網(wǎng):https://aimrt.org/文檔:https://docs.aimrt.org/index.htmlGitHub:https://github.com/AimRT/AimRTGitee:https://gitee.com/robot-os/AimRT
AimRT的特點(diǎn)
1、現(xiàn)代化、輕量級(jí)與高效性
AimRT基于現(xiàn)代C++新標(biāo)準(zhǔn)開(kāi)發(fā),摒棄了對(duì)其他庫(kù)的依賴,實(shí)現(xiàn)了輕量級(jí)、無(wú)依賴的架構(gòu)設(shè)計(jì)。這不僅提升了開(kāi)發(fā)效率,還降低了系統(tǒng)資源的消耗,使得AimRT成為ROS2等主流開(kāi)源中間件的輕量替代方案。
2.、高兼容性與靈活部署
AimRT能夠支持ROS2、gRPC、HTTP及MQTT等多種通信協(xié)議,為開(kāi)發(fā)者提供了靈活的選擇空間。無(wú)論是機(jī)器人端、邊緣端還是云端,AimRT都能高效運(yùn)行,滿足各種部署需求。
3.、強(qiáng)大的調(diào)試與性能分析工具
AimRT提供了完善的調(diào)試和性能分析工具,以及良好的可觀測(cè)性支持。這些工具能夠幫助開(kāi)發(fā)者快速發(fā)現(xiàn)并解決系統(tǒng)中的問(wèn)題,確保機(jī)器人系統(tǒng)的穩(wěn)定運(yùn)行。
4.、豐富的插件接口與拓展性
AimRT提供了全面的插件開(kāi)發(fā)接口,并附帶十余種官方插件。這些插件涵蓋了機(jī)器人開(kāi)發(fā)的多個(gè)方面,如運(yùn)動(dòng)控制、圖像處理等。同時(shí),智元機(jī)器人也鼓勵(lì)開(kāi)發(fā)者進(jìn)行二次開(kāi)發(fā),以適應(yīng)更多特殊場(chǎng)景的需求。
AimRT的核心設(shè)計(jì)理念
1、Initialize 階段和 Start 階段
2、邏輯實(shí)現(xiàn)與部署運(yùn)行分離
AimRT 的一個(gè)重要設(shè)計(jì)思想是:將邏輯開(kāi)發(fā)與實(shí)際部署運(yùn)行解耦。
3、AimRT 中的線程資源
4、兼容第三方生態(tài)
AimRT 的底層通信是交給插件來(lái)執(zhí)行的,也可以借此實(shí)現(xiàn)一些兼容第三方生態(tài)的功能。
AimRT的架構(gòu)
AimRT的架構(gòu)設(shè)計(jì)巧妙地平衡了硬件資源與高層應(yīng)用軟件之間的需求,為開(kāi)發(fā)者提供了一個(gè)清晰、易用的開(kāi)發(fā)環(huán)境。AimRT充分考慮了嵌入式系統(tǒng)的特性和需求,其主要模塊包括核心管理模塊、通信模塊、設(shè)備驅(qū)動(dòng)模塊、算法庫(kù)模塊以及應(yīng)用開(kāi)發(fā)模塊。
1. 核心管理模塊
核心管理模塊是AimRT的中樞神經(jīng),負(fù)責(zé)系統(tǒng)資源的高效管理和調(diào)度。它主要包括以下幾個(gè)子模塊:
任務(wù)管理:負(fù)責(zé)創(chuàng)建、刪除和管理系統(tǒng)中的任務(wù),包括實(shí)時(shí)任務(wù)和非實(shí)時(shí)任務(wù),確保各個(gè)任務(wù)在系統(tǒng)中的合理執(zhí)行和優(yōu)先級(jí)調(diào)度。
內(nèi)存管理:高效管理系統(tǒng)內(nèi)存資源,提供動(dòng)態(tài)內(nèi)存分配和釋放功能,確保內(nèi)存資源的合理利用和高效回收。
錯(cuò)誤處理:提供完善的錯(cuò)誤捕獲和處理機(jī)制,在系統(tǒng)運(yùn)行過(guò)程中檢測(cè)和處理各種可能的異常情況,保障系統(tǒng)的穩(wěn)定性和可靠性。
2. 通信模塊
通信模塊實(shí)現(xiàn)了功能模塊之間的高效通信,支持多種通信協(xié)議和方式。主要包括:
消息隊(duì)列:支持任務(wù)間通過(guò)消息隊(duì)列進(jìn)行數(shù)據(jù)傳遞,確保數(shù)據(jù)的有序傳遞和處理。
共享內(nèi)存:允許任務(wù)間通過(guò)共享內(nèi)存進(jìn)行數(shù)據(jù)共享,實(shí)現(xiàn)高速的數(shù)據(jù)交換。
網(wǎng)絡(luò)通信:支持TCP/IP、UDP等常用網(wǎng)絡(luò)協(xié)議,滿足遠(yuǎn)程數(shù)據(jù)通信需求。
串口通信:提供對(duì)常見(jiàn)串行通信接口(UAR、CAN等)的支持,方便與外部設(shè)備進(jìn)行數(shù)據(jù)交互。
3. 設(shè)備驅(qū)動(dòng)模塊
設(shè)備驅(qū)動(dòng)模塊為開(kāi)發(fā)者提供了豐富的設(shè)備驅(qū)動(dòng)支持,能夠方便地接入各種傳感器和執(zhí)行器。主要包括:
傳感器驅(qū)動(dòng):支持各種常見(jiàn)傳感器(如攝像頭、激光雷達(dá)、慣性測(cè)量單元等),并提供標(biāo)準(zhǔn)化接口,方便數(shù)據(jù)讀取和處理。
執(zhí)行器驅(qū)動(dòng):提供對(duì)各種執(zhí)行器(如電機(jī)、伺服機(jī)構(gòu)等)的驅(qū)動(dòng)支持,方便進(jìn)行運(yùn)動(dòng)控制和任務(wù)執(zhí)行。
存儲(chǔ)設(shè)備驅(qū)動(dòng):支持常見(jiàn)的存儲(chǔ)設(shè)備(如SD卡、USB存儲(chǔ)器等),方便數(shù)據(jù)存儲(chǔ)和讀取。
4. 算法庫(kù)模塊
算法庫(kù)模塊集成了一系列常用的機(jī)器人算法,涵蓋路徑規(guī)劃、運(yùn)動(dòng)控制和環(huán)境感知等方面,開(kāi)發(fā)者可以直接調(diào)用這些算法庫(kù),加速應(yīng)用開(kāi)發(fā)。主要包括:
路徑規(guī)劃算法:提供A*、Dijkstra、RRT等常見(jiàn)路徑規(guī)劃算法,幫助機(jī)器人在復(fù)雜環(huán)境中找到最優(yōu)路徑。
運(yùn)動(dòng)控制算法:支持PID控制、MPC(模型預(yù)測(cè)控制)等多種控制算法,確保機(jī)器人按照預(yù)定軌跡運(yùn)動(dòng)。
環(huán)境感知算法:集成SLAM(同步定位與地圖構(gòu)建)、目標(biāo)識(shí)別和跟蹤等算法,幫助機(jī)器人實(shí)時(shí)感知和理解周圍環(huán)境。
數(shù)據(jù)處理算法:提供信號(hào)濾波、數(shù)據(jù)融合等算法,提升傳感數(shù)據(jù)的精度和可靠性。
5. 應(yīng)用開(kāi)發(fā)模塊
應(yīng)用開(kāi)發(fā)模塊為開(kāi)發(fā)者提供了一系列簡(jiǎn)便的API和工具鏈,幫助快速開(kāi)發(fā)和部署機(jī)器人應(yīng)用。主要包括:
標(biāo)準(zhǔn)化API接口:提供統(tǒng)一的API接口,方便調(diào)用各個(gè)模塊的功能,加速開(kāi)發(fā)進(jìn)程。
開(kāi)發(fā)工具鏈:集成豐富的開(kāi)發(fā)工具(如代碼編輯器、調(diào)試器、編譯器等)和插件,提升開(kāi)發(fā)效率。
仿真環(huán)境:提供虛擬仿真環(huán)境,開(kāi)發(fā)者可以在仿真環(huán)境中測(cè)試和驗(yàn)證算法和功能,減少硬件調(diào)試的時(shí)間和成本。
調(diào)試工具:提供實(shí)時(shí)調(diào)試和監(jiān)控工具,幫助開(kāi)發(fā)者快速定位和解決問(wèn)題,提升系統(tǒng)穩(wěn)定性。
最后
AimRT的開(kāi)源,是智元機(jī)器人對(duì)機(jī)器人技術(shù)發(fā)展的又一次貢獻(xiàn)。它不僅為嵌入式行業(yè)相關(guān)工作者和學(xué)生提供了一個(gè)高效、靈活的開(kāi)發(fā)工具,更為整個(gè)機(jī)器人行業(yè)的發(fā)展注入了新的活力。
隨著更多企業(yè)和開(kāi)發(fā)者的參與,AimRT將不斷壯大其生態(tài)系統(tǒng),推動(dòng)機(jī)器人技術(shù)的不斷創(chuàng)新與發(fā)展。
讓我們共同關(guān)注AimRT!