0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Micro-ROS:把ROS2放在MCU上

Robot Vision ? 來源:電子發(fā)燒友網(wǎng) ? 作者:李寧遠 ? 2022-04-07 07:13 ? 次閱讀

對于熟悉機器人應(yīng)用的讀者,ROS想必定是不會陌生的。ROS可以說是目前機器人相關(guān)開源社區(qū)最流行的項目。每一種類型的機器人都需要以硬件的實際情況編寫符合用戶需要的功能,起初代碼的復(fù)用率很低,大大阻礙了機器人的發(fā)展。

ROS便是為機器人在研發(fā)的過程中的代碼復(fù)用提供支持的開源框架,大量的機器人開源項目,從感知到控制、從定位到構(gòu)圖、從導航到可視化,幾乎都使用ROS作為基礎(chǔ)。

Micro-ROS從何而來?

Micro-ROS實際上是從ROS2優(yōu)化而來的輕量級ROS系統(tǒng),用于在各種機器人應(yīng)用中在MCU上實現(xiàn)第二代機器人操作系統(tǒng)ROS 2,通過使用通用框架,它可以實現(xiàn)與傳統(tǒng)機器人、物聯(lián)網(wǎng)傳感器和設(shè)備的互操作性。ROS2基于ROS升級而來,如果說ROS為機器人研究和機器人原型開發(fā)提供了良好?態(tài)的話,那么ROS2就是?于機器人部署環(huán)境的開發(fā)架構(gòu)和相應(yīng)的工具鏈。

傳統(tǒng)機器人ROS實質(zhì)上是仍舊停留在MCU邊界的,再通過串行協(xié)議或者舊版ROS中的工具與MCU集成在一起。Micro-ROS則允許在硬件級別附近運行ROS2節(jié)點,所有硬件外設(shè)都可用于該應(yīng)用程序,從而使其能夠直接與低級總線系統(tǒng)進行交互,亦與傳感器和執(zhí)行器接口互通。

(Micro-ROS,Micro-ROS開源社區(qū))


ROS2解決了ROS在很多層面上無法滿足的性能升級的短板,諸如:實時性、對MCU的支持、網(wǎng)絡(luò)通信的依賴程度、多機器人的支持等等。原生的ROS其實只支持單個機器人,對于多機器人的支持是不足的,而且大型機器人項目的構(gòu)建、開發(fā)和部署這些需求ROS逐漸不能滿足。實時性、安全性、嵌?式移植等方面,在工業(yè)領(lǐng)域也讓時常無法匹配某系性能的要求。

Micro-ROS在解決了多機器人支持、非理想網(wǎng)絡(luò)環(huán)境支持、實時系統(tǒng)支持之外,最重要的就是對MCU直接的支持。Micro-ROS將不再停留在MCU的邊界通過串行協(xié)議集成。ROS2采?RTSP(Real-Time Publish-Subscribe)協(xié)議的DDS作為中間層,DDS作為?種?于實時和嵌?式系統(tǒng)發(fā)布-訂閱式通信的?業(yè)標準,在系統(tǒng)容錯和靈活性上會更加完善。Micro-ROS同時可以利用其中間件可插拔性來使用針對MCU進行了優(yōu)化的DDS-XRCE。

基于Micro-ROS的機器人控制MCU

Micro-ROS旨在將ROS2引入廣泛的微控制器,主要目標就是中檔32位微控制器系列。一般來說,Micro-ROS 需要具有幾萬字節(jié)RAM內(nèi)存的MCU和能夠?qū)崿F(xiàn)Micro-ROS客戶端到代理通信的通信外圍設(shè)備。Micro-ROS支持的硬件目前分為官方支持的板和社區(qū)板。這里挑幾個官方支持的Micro-ROS機器人本體控制MCU。

瑞薩RA6M5 Micro-ROS

瑞薩電子與Micro-ROS框架供應(yīng)商eProsima合作,開發(fā)了基于RA6M5的ROS機器人本體控制器,將Micro-ROS完全集成到了EK RA6M5 MCU中。該系統(tǒng)能夠基于ROS控制多個伺服系統(tǒng)。

(瑞薩)


32位的RA6M5 MCU是高性能Arm Cortex-M33內(nèi)核,521KB內(nèi)存,閃存高達2MB。集成了能夠用于在ROS節(jié)點之間進行 Pub/Sub信息傳遞的通信接口,可以通過單線 UARTRS-485 控制多個伺服系統(tǒng)。該官方板支持的實時操作系統(tǒng)為FreeRTOS、ThreadX和裸機。

樂鑫ESP32 Micro-ROS

Xtensa雙核32位LX6微處理器,最高240 MHz,520KB的內(nèi)存以及高達4MB的閃存,在外設(shè)支持上是官方板中最多的,以太網(wǎng) MAC、Wi-Fi 802.11 b/g/n、藍牙 v4.2 BR/EDR、BLE、SPI、I2C、I2S、UART、SDIO、CAN、GPIO、ADC/DAC、PWM全部覆蓋。對實時操作系統(tǒng)的支持目前僅支持應(yīng)用最廣泛的FreeRTOS。

(樂鑫)


STM32L4 Micro-ROS

ARM Cortex-M4的內(nèi)核,128KB的內(nèi)存,1MB的閃存,相當?shù)臉銓崯o華。但在機器人應(yīng)用外設(shè)的集成上很亮眼,溫濕度傳感器、3軸IMU、ToF傳感器等等。在社區(qū)自制的Micro-ROS
板上,ST的32位MCU仍然是最常見的,呈壓倒性優(yōu)勢。

(ST)


Micro-ROS運用在MCU上的內(nèi)存限制

在Micro-ROS與硬件結(jié)合上,還有一個問題,即在嵌入式平臺中運行Micro-ROS的最大的制約來自于內(nèi)存的限制。由于Micro-ROS 中的內(nèi)存使用是一個很復(fù)雜的問題,所以如何調(diào)整Micro-ROS 中間件的內(nèi)存消耗是比較棘手的。

因為Micro-ROS的目標是MCU這一類內(nèi)存資源低的設(shè)備。優(yōu)先使用靜態(tài)內(nèi)存而不是動態(tài)內(nèi)存,并優(yōu)化應(yīng)用程序的內(nèi)存占用是一個較為可行的辦法。上面我們也提到了,Micro-ROS同時可以利用其中間件可插拔性來使用針對MCU進行了優(yōu)化的DDS-XRCE。

Micro-ROS的中間件通常被形容成“資源極度受限但極度靈活”,為了與Micro-ROS堆棧中的ROS中間件接口集成,DDS-XRCE引入了靜態(tài)內(nèi)存池,以避免在運行時動態(tài)分配內(nèi)存。這些都是為了消除Micro-ROS與硬件結(jié)合時的內(nèi)存限制。解決這一限制后,Micro-ROS與MCU這類硬件的結(jié)合,可以說是相當可靠的機器人控制解決方案。

寫在最后

“將ROS2放在MCU上”,這是Micro-ROS的社區(qū)宣言。純硬件訪問、低延遲的實時性、低功耗是Micro-ROS將ROS2放在MCU上的原因,Micro-ROS也的確開始在機器人應(yīng)用中彌合資源受限的MCU和更強大的處理器之間的差距。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機器人
    +關(guān)注

    關(guān)注

    210

    文章

    28103

    瀏覽量

    205851
  • ROS
    ROS
    +關(guān)注

    關(guān)注

    1

    文章

    276

    瀏覽量

    16942
  • 機器人應(yīng)用
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    2147
收藏 人收藏

    評論

    相關(guān)推薦

    ZMC900E控制器之ROS2環(huán)境安裝指南

    ZMC900E是致遠電子研發(fā)的最新一代高性能EtherCAT控制器,支持ROS2系統(tǒng),兼?zhèn)鋸姶蠊δ芎蛯崟r性,為工業(yè)應(yīng)用帶來新的可能。本文將詳述ROS2特點和安裝,助力用戶在機器人的二次開發(fā)
    的頭像 發(fā)表于 04-29 08:24 ?511次閱讀
    ZMC900E控制器之<b class='flag-5'>ROS2</b>環(huán)境安裝指南

    系統(tǒng)鏡像Ubuntu_ROS2ROS2是什么意思,帶有ROS2開發(fā)環(huán)境嗎?

    請問一下,百度文庫資料里面,下圖所示的系統(tǒng)鏡像Ubuntu_ROS2ROS2是什么意思,帶有ROS2開發(fā)環(huán)境嗎?與前面4GB版本的鏡像有什么區(qū)別?
    發(fā)表于 03-01 23:06

    移動機器人與ROS操作系統(tǒng)原理與應(yīng)用

    ROS1不同的是,ROS2誕生的目的就是為了讓更多機器人使用,所以在設(shè)計更加符合技術(shù)的發(fā)展方向,也運用了很多最近的技術(shù)框架。
    發(fā)表于 01-02 12:28 ?515次閱讀
    移動機器人與<b class='flag-5'>ROS</b>操作系統(tǒng)原理與應(yīng)用

    ros怎么設(shè)置環(huán)境變量

    設(shè)置ROS環(huán)境變量是使用ROS的重要步驟之一。本文將詳細介紹如何設(shè)置ROS環(huán)境變量,包括什么是環(huán)境變量、為什么要設(shè)置ROS環(huán)境變量、如何設(shè)置ROS
    的頭像 發(fā)表于 12-28 13:52 ?1886次閱讀

    【米爾-TIAM62開發(fā)板-接替335x-試用評測】(一)基于TIAM62開發(fā)板的ROS2交叉編譯

    【米爾-TIAM62開發(fā)板-接替335x-試用評測】(一)ROS2交叉編譯 1. 前言 該測試報告詳細介紹了TIAM62開發(fā)板的交叉編譯環(huán)境、ROS2編譯的步驟以及遇到的問題和解決方案、簡單的測試
    發(fā)表于 12-05 20:58

    在TogetherROS中如何安裝ROS2功能包

    安裝ROS2功能包 接下來,還有一個很重要的配置,那就是安裝ROS2功能包,我們說TogetherROS是基于ROS2深度優(yōu)化的,很多模塊還是會復(fù)用ROS2中的功能,所有
    的頭像 發(fā)表于 12-01 16:02 ?900次閱讀
    在TogetherROS中如何安裝<b class='flag-5'>ROS2</b>功能包

    ROS系統(tǒng)是什么?ROS系統(tǒng)主要特點有哪些?創(chuàng)龍RK3568J+Debian的ROS2系統(tǒng)案例

    ? ? ? Tronlong創(chuàng)龍科技ROS讓機器人開發(fā)更便捷;我們來看看具體的。 ROS系統(tǒng)是什么 ROS(Robot Operating System)是一個適用于機器人的開源的元操作系統(tǒng)。它提供
    的頭像 發(fā)表于 11-30 14:41 ?4373次閱讀
    <b class='flag-5'>ROS</b>系統(tǒng)是什么?<b class='flag-5'>ROS</b>系統(tǒng)主要特點有哪些?創(chuàng)龍RK3568J+Debian的<b class='flag-5'>ROS2</b>系統(tǒng)案例

    ROS2中自帶例程測試

    如果你是一個ROS2的開發(fā)者,可能對剛才我們使用的ROS2命令比較熟悉,這時你可能也會產(chǎn)生一個問題:我們之前也安裝了ROS2系統(tǒng),那ROS2的原生功能還可以正常運行么? 我們再來試一試
    的頭像 發(fā)表于 11-28 16:29 ?882次閱讀
    <b class='flag-5'>ROS2</b>中自帶例程測試

    ros1和ros2的通信模型

    數(shù)據(jù) ROS2: 參與者(DomainParticipant):一個參與者Participant就是一個容器,對應(yīng)于一個使用DDS的用戶,任何DDS的用戶都必須通過Participant來訪問全局
    的頭像 發(fā)表于 11-27 11:26 ?734次閱讀
    <b class='flag-5'>ros</b>1和<b class='flag-5'>ros2</b>的通信模型

    ros的基本概念是什么

    基本概念: ROS是一個用于在不同進程間匿名的發(fā)布、訂閱、傳遞信息的中間件。 ROS2系統(tǒng)的核心部分是ROS網(wǎng)絡(luò)(ROS Graph)。 ROS
    的頭像 發(fā)表于 11-27 11:21 ?1722次閱讀

    DDS在ROS2中的應(yīng)用

    DDS在ROS2中的應(yīng)用 DDS在ROS2系統(tǒng)中的位置至關(guān)重要,所有上層建設(shè)都建立在DDS之上。在這個ROS2的架構(gòu)圖中,藍色和紅色部分就是DDS。 剛才我們也提到,DDS是一種通信的標準,就像4G
    的頭像 發(fā)表于 11-24 17:54 ?845次閱讀
    DDS在<b class='flag-5'>ROS2</b>中的應(yīng)用

    ROS中的TF該如何使用

    -py ros-humble-tf2-tools** sudo pip3 install transforms3d 具體運行的效果如何?我們來試一試。 ** ros2 launch turtle_tf2_py turtle_tf
    的頭像 發(fā)表于 11-22 17:24 ?1022次閱讀
    <b class='flag-5'>ROS</b>中的TF該如何使用

    ROS的擴展有哪些方法

    也是毫不夸張的。 ROS的擴展即ROS universe,是全球范圍的代碼,有不同國家的ROS社區(qū)組織開發(fā)和維護。 有的是庫代碼,如OpenCV、PCL等;庫的一層是從功能角度提供的
    的頭像 發(fā)表于 11-21 18:12 ?662次閱讀

    Unity與ROS鏈接介紹

    對于ROS而言,其最常用的就是Topic話題以及Service兩個了。之前我們在了解Unity Robotics Hub時候就了解到基本的Unity和ROS的通訊,下面我們來詳細介紹一下Unity
    的頭像 發(fā)表于 11-17 17:22 ?919次閱讀
    Unity與<b class='flag-5'>ROS</b>鏈接介紹

    如何初始化ROS并創(chuàng)立鏈接

    的主題(如/odometry)來發(fā)送消息。其他組件通過訂閱該主題來接收消息。本文內(nèi)容基于慕羽★大佬文章進行了增刪。 同時由于Simulink的使用在ROS1和ROS2中沒有太多的改動,所以我們就僅對
    的頭像 發(fā)表于 11-15 17:26 ?472次閱讀
    如何初始化<b class='flag-5'>ROS</b>并創(chuàng)立鏈接