色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

一個基于FreeRTOS的micro(微型)ROS

Q4MP_gh_c472c21 ? 來源:嵌入式ARM ? 2020-09-20 10:59 ? 次閱讀

今天分享一個基于FreeRTOS的micro(微型)ROS

一、關(guān)于ROS

ROS:Robot Operating System,,即機器人操作系統(tǒng)

和普通OS不一樣的是,ROS主要是針對機器人,是基于操作系統(tǒng)之上,提供一系列程序庫和工具以幫助軟件開發(fā)者創(chuàng)建機器人應用軟件。它提供了硬件抽象、設備驅(qū)動、庫函數(shù)、可視化、消息傳遞和軟件包管理等諸多功能。ROS遵守BSD開源許可協(xié)議。

ROS設計者將ROS表述為“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通訊機制、工具軟件包、機器人高層技能以及機器人生態(tài)系統(tǒng)的集合體。

二、micro-ROS

本文說的micro-ROS,是基于ROS2進行優(yōu)化的一套輕量級ROS系統(tǒng),它提供了完全部署的ROS 2生態(tài)系統(tǒng)的大多數(shù)吸引人的工具和功能,并具有入式和低資源設備的卓越能力,可以運行在MCU硬件平臺。

傳統(tǒng)上,即使機器人包含許多ROS,ROS仍停留在微控制器邊界。它們通常通過串行協(xié)議與舊版ROS中的ROS-serial之類的工具集成在一起。

在微控制器中擁有所有ROS2的功能和相同的API會不是很好嗎?這正是micro-ROS提供的-機器人系統(tǒng)嵌入式部分內(nèi)部的ROS開發(fā)生態(tài)系統(tǒng)。micro-ROS允許開發(fā)人員在硬件級別附近運行ROS 2節(jié)點。這使所有硬件外設都可用于該應用程序,從而使其能夠直接與SPI或I2C等低級總線進行交互,以與傳感器和執(zhí)行器接口

微型ROS是一組分層的庫,它們可以直接重用ROS 2的庫,也可以使其適應資源受限設備的功能和需求。具體來說,如果我們轉(zhuǎn)向ROS 2體系結(jié)構(gòu),則由微型ROS維護的層是ROS客戶端庫(RCL)和ROS中間件接口(RMW)。同樣,RCLCPP是RCL之上的C ++抽象層,即使大多數(shù)與RCL直接接口,它也可以被微型ROS應用程序組件使用。該層在RCLC中提供了相對于ROS 2的附加功能,RCLC是用C99編寫的庫,其中專門設計和開發(fā)了與RCLCPP提供的功能類似的功能,例如便利功能或執(zhí)行程序,以適合微控制器。

通常,ROS是基于 Linux系統(tǒng)之上的運行的一套系統(tǒng),而本文這套微型ROS基于FreeROS運行。

這使micro-ROS在硬件和軟件級別上都能與大多數(shù)嵌入式平臺兼容。

但是,最終構(gòu)成micro-ROS體系結(jié)構(gòu)的是RMW實現(xiàn),該實現(xiàn)基于稱為Micro XRCE-DDS的中間件庫。Micro XRCE-DDS是由對象管理組(OMG)定義和維護的DDS-XRCE(用于極端資源受限環(huán)境的DDS)協(xié)議的C / C ++實現(xiàn)。

顧名思義,DDS-XRCE是一種有線協(xié)議,允許引入以數(shù)據(jù)為中心的發(fā)布者-訂閱者DDS模型進入嵌入式世界。DDS-XRCE依賴于客戶端-服務器體系結(jié)構(gòu),其中客戶端是用C99編寫的輕量級實體,可在低資源設備中運行,而代理(C ++ 11應用程序)則充當客戶端與DDS世界之間的橋梁。DDS-XRCE協(xié)議負責在這兩個實體之間傳遞請求和消息。相應地,該代理能夠通過標準DDS有線協(xié)議與DDS全局數(shù)據(jù)空間進行通信。在DDS世界中,代理通過與其他DDS參與者進行通信來代表客戶。該通信由客戶端代理,能夠通過所有標準DDS實體與DDS進行交互的模擬DDS應用程序進行協(xié)調(diào)。代理將客戶端的狀態(tài)保存在其內(nèi)存中,這樣,即使代理斷開連接,代理也可以存活。代理與客戶端之間的通信遵循請求-響應模式,即雙向并基于操作和響應。

三、為什么選擇FreeRTOS?

由于它們的輕巧性,XRCE-DDS客戶端庫和microROS都易于在實時操作系統(tǒng)之上運行,這使它們能夠滿足其典型目標應用程序所提出的對時間要求嚴格的要求,其中涉及的任務包括要求時限或確定性響應。

具體來說,F(xiàn)reeRTOS已成為micro-ROS項目支持的首批RTOS之一,因此已集成到其軟件堆棧中。這允許重用FreeRTOS社區(qū)和合作伙伴提供的所有工具和實現(xiàn)。由于微型ROS軟件堆棧是模塊化的,因此期望并期望交換軟件實體。

FreeRTOS是開發(fā)micro ROS和Micro XRCE-DDS應用程序的理想選擇。首先,它為許多不同的體系結(jié)構(gòu)和開發(fā)工具提供了一個獨立的解決方案,它以非常清晰和透明的方式編寫,并且擁有非常龐大的用戶群,從而確保了大量FreeRTOS用戶將能夠?qū)⑵鋺贸绦蚺c微型ROS應用程序集成。而且,它是眾所周知的高度可靠的RTOS。至關(guān)重要的是,F(xiàn)reeRTOS具有最小的ROMRAM和處理開銷。通常,RTOS內(nèi)核二進制映像的大小在6K到12K字節(jié)之間。由于要與RTOS進行資源競爭,因此,當要最小化MCU上的微型ROS應用程序的內(nèi)存占用量時,這些內(nèi)存是理想的選擇。

在下文中,我們將討論FreeRTOS提供的幾種功能,以及微型ROS如何利用它們來獲利,以優(yōu)化其堆棧中組成的不同庫的所需功能。

四、任務和計劃程序

FreeRTOS提供了一組最少的任務實體,這些實體與調(diào)度程序的使用一起,為在應用程序中實現(xiàn)確定性提供了必要的工具。微型ROS客戶端庫(RCL,RCLC和RCLCPP)訪問RTOS的資源,以控制調(diào)度和電源管理機制,從而為開發(fā)人員提供了優(yōu)化應用程序的可能性。

FreeRTOS提供的任務有兩種:標準任務和空閑任務。前者由用戶創(chuàng)建,可以視為RTOS上的應用程序。至關(guān)重要的是,將微型ROS應用程序集成到RTOS中作為具有給定優(yōu)先級的此類任務之一。空閑任務另一方面,優(yōu)先級較低的任務只有在沒有其他任務在運行時才進入運行模式。由于microROS主要針對低功耗和IoT設備,因此這些空閑任務和相關(guān)的空閑掛鉤非常適合在MCU中啟用深度睡眠狀態(tài)。由于將無狀態(tài)XRCE-DDS客戶端實現(xiàn)為micro-ROS中間件,因此這些深度睡眠狀態(tài)可能是內(nèi)存易失的,也就是說,由于面向連接的中間件有線協(xié)議,可以使用沒有RAM持久性的深度睡眠模式。

使用FreeRTOS調(diào)度程序,micro-ROS能夠管理其主要任務以及負責傳輸層的任務的優(yōu)先級。通常,負責網(wǎng)絡堆棧或串行接口的任務必須優(yōu)先于micro-ROS應用程序。

五、內(nèi)存管理

FreeRTOS提供的最令人期望的功能(對于微型ROS開發(fā)人員和用戶而言非常有趣)是堆棧管理和靜態(tài)堆棧創(chuàng)建能力。在處理micro-ROS的任務創(chuàng)建時,通常,堆棧分配是關(guān)鍵的設計決策。FreeRTOS允許進行細粒度的堆棧大小管理,這又使程序員可以知道在程序執(zhí)行期間正在使用多少堆棧內(nèi)存,或例如確定堆棧內(nèi)存分配是否存在于靜態(tài)或動態(tài)內(nèi)存中,從而確定幫助正確使用MCU的內(nèi)存,這是嵌入式系統(tǒng)中的寶貴資源。至關(guān)重要的是,可以為微ROS提供繁重的堆棧使用方任務,并為其分配靜態(tài)分配的堆棧,從而防止將來出現(xiàn)堆和其他任務初始化問題。

在這方面,值得一提的是,這些內(nèi)存管理工具為基準化微型ROS和XRCE-DDS的內(nèi)存占用量提供了理想的框架。具體而言,已進行了徹底的堆棧消耗分析,以評估XRCE-DDS客戶端內(nèi)存消耗。堆棧是程序員在運行應用程序之前未知的內(nèi)存塊。為了對其進行度量,可以使用FreeRTOS uxTaskGetStackHighWaterMark()函數(shù),該函數(shù)返回在執(zhí)行過程中XRCE-DDS任務堆棧達到最大值時未使用的堆棧量。通過將此值減去總堆棧,可以得到XRCE-DDS應用程序使用的堆棧峰值。用這種方法獲得的結(jié)果匯總在此處發(fā)布的報告中。

我們還注意到,由于FreeRTOS中使用了可插拔的動態(tài)內(nèi)存管理方法,因此micro-ROS能夠完成所需的用于管理內(nèi)存的接口。通過這種方式,已經(jīng)使用heap_4作為參考實現(xiàn)了諸如calloc()或realloc()之類的函數(shù)。這些功能在饋入micro-ROS內(nèi)存管理API之前已被包裝,以便分析動態(tài)內(nèi)存消耗。

與靜態(tài)內(nèi)存情況類似,F(xiàn)reeRTOS的可交換動態(tài)內(nèi)存管理方法使在嵌入式系統(tǒng)中執(zhí)行動態(tài)內(nèi)存配置文件分析特別容易。的確,盡管在其他RTOS中,動態(tài)(取消)分配功能隱藏在RTOS或標準庫的深處,但在FreeRTOS中,它們暴露給用戶并易于定制,因此簡化了處理和控制動態(tài)內(nèi)存使用的過程。

六、傳輸資源

與客戶端支持庫訪問FreeRTOS的特定原語和功能(例如調(diào)度機制)的方式相同,中間件實現(xiàn)Micro XRCE-DDS要求訪問RTOS的傳輸和時間資源以使其正常運行。關(guān)于IP傳輸,在FreeRTOS的特定情況下,Micro XRCE-DDS使用在此RTOS上實現(xiàn)lwIP的附件。lwIP(輕型IP)是為嵌入式系統(tǒng)設計的,廣泛使用的開源TCP / IP堆棧,旨在減少資源使用,同時仍提供完整的TCP堆棧。這使得lwIP的使用特別適用于以micro-ROS為目標的嵌入式系統(tǒng)和資源受限的環(huán)境。

除了TCP / IP堆棧,lwIP還有其他幾個重要部分,例如網(wǎng)絡接口,操作系統(tǒng)仿真層,緩沖區(qū)和內(nèi)存管理部分。操作系統(tǒng)仿真層和網(wǎng)絡接口允許將網(wǎng)絡堆棧移植到操作系統(tǒng)中,因為它提供了lwIP代碼和操作系統(tǒng)內(nèi)核之間的通用接口。

FreeRTOS與lwIP 的集成是從頭開始設計的,具有標準且熟悉的接口(伯克利套接字),并且具有線程安全性,旨在使其盡可能易于使用。而且,它可以將緩沖區(qū)管理保留在可移植層中。

請注意,XRCE-DDS客戶端還支持FreeRTOS + TCP網(wǎng)絡堆棧。FreeRTOS + TCP是用于TCP / IP堆棧協(xié)議支持的官方FreeRTOS擴展庫。

還努力使FreeRTOS + TCP與micro-ROS兼容。這包括對TCP和UDP連接的支持,它們依靠FreeRTOS + TCP API來實現(xiàn)micro XRCE-DDS Client API所要求的抽象層,以便能夠使用這些協(xié)議與代理進行通信。

此外,還存在使用FreeRTOS的時間測量功能的可能性,從而使XRCE-DDS庫能夠執(zhí)行基于時間的任務,從而使用戶看不到實現(xiàn)。

七、Posix擴展

允許將FreeRTOS無縫和盈利地集成到micro-ROS中的另一個顯著原因是POSIX擴展的可用性。便攜式操作系統(tǒng)接口(POSIX)是IEEE計算機協(xié)會為維護操作系統(tǒng)之間的兼容性而指定的一系列標準。FreeRTOS Labs提供的FreeRTOS + POSIX層實現(xiàn)了POSIX API的子集。

確實,盡管micro-ROS中間件具有較低的POSIX依賴關(guān)系(只是clock_gettime()函數(shù)),但整個micro-ROS堆棧具有與功能和類型定義相關(guān)的更高依賴關(guān)系。另外,由于微型ROS項目的基本原理之一是移植或重用Linux(主要是POSIX兼容操作系統(tǒng))中本機編碼的ROS 2的代碼,因此使用了某種程度上可與Linux兼容的RTOS。POSIX顯然是有益的,因為代碼的移植工作量很小。

為此,使用了sleep()和usleep()之類的函數(shù)。micro-ROS的POSIX類型定義依賴項依賴于FreeRTOS內(nèi)核中未定義的某些結(jié)構(gòu),例如struct timeval或struct timespec。還需要諸如type.h,signal.h或unistd.h之類的文件來定義一些標準的類型定義和結(jié)構(gòu)。

對于errno.h,盡管在FreeRTOS + POSIX層中未實現(xiàn),但出于編譯目的,micro-ROS必須包括一些不可用的定義。

通過使用FreeRTOS + FAT庫,應在micro-ROS堆棧中重構(gòu)這些定義,以使FreeRTOS + POSIX具有完全的兼容性。這樣,可以完全支持依賴文件系統(tǒng)支持的高級micro-ROS功能,例如日志記錄機制。

八、教程

如何在FreeRTOS上使用Olimex STM32-E407評估板創(chuàng)建和運行第一個微型ROS應用程序:

https://micro-ros.github.io/docs/tutorials/core/first_application_rtos/freertos/

(公號不支持外部鏈接,請復制鏈接到瀏覽器打開)

九、最后

總而言之,F(xiàn)reeRTOS提供了運行Micro-ROS應用程序的輕量且理想的RTOS,因為它提供了廣泛的所需功能,實際上構(gòu)成Micro-ROS堆棧的所有模塊化層都在不同級別上使用了這些功能。

隨著micro-ROS和FreeRTOS的用戶群迅速擴展并且引人注目的用例激增,預計在不久的將來,micro-ROS與FreeRTOS和FreeRTOS + 提供的庫進一步集成。

其中,對FreeRTOS + FAT庫的利用顯得尤為可取,以便添加一個虛擬文件系統(tǒng)組件,該組件允許像在完全部署的ROS 2生態(tài)系統(tǒng)中一樣可視化和管理日志記錄操作。

還設想了專用部分中所述的內(nèi)存管理工具的進一步利用,以擴展XRCE-DDS客戶端的內(nèi)存配置文件,從而為micro-ROS客戶端提供類似的分析。

micro-ROS項目計劃的另一個未來行動是采用FreeRTOS的認證版本SafeRTOS。

最后但并非最不重要的一點是,似乎值得一提的是FreeRTOS與micro-ROS典型目標應用相關(guān)的硬件集成的兩個非常成功的案例,即功能強大的Crazyflie 2.1無人機ESP32 MCU的硬件。實際上,Crazyflie軟件可以利用FreeRTOS的幾種工具和功能來獲利。微ROS應用與FreeRTOS的有關(guān)此MAV工作的演示的例子可以理解這里。至于與FreeRTOS本機集成并提供現(xiàn)成的Wi-Fi天線藍牙功能的第二種硬件,則已經(jīng)在該系統(tǒng)上進行了最新的micro ROS端口

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

    關(guān)注

    211

    文章

    28380

    瀏覽量

    206918
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6801

    瀏覽量

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

    關(guān)注

    1

    文章

    278

    瀏覽量

    17001

原文標題:用于MCU,基于FreeRTOS的micro(輕量級)ROS

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    三星布局Micro LED,未來動向引關(guān)注

    在全球新代面板技術(shù)微型發(fā)光二極管(Micro LED)領(lǐng)域,中國臺灣廠商占據(jù)領(lǐng)先地位。盡管韓國大廠三星目前尚未涉足Micro LED的生產(chǎn),但已通過投資臺灣廠商的方式確保貨源穩(wěn)定。然
    的頭像 發(fā)表于 11-04 14:26 ?466次閱讀

    freertos最多支持多少任務

    FreeRTOS輕量級的實時操作系統(tǒng)(RTOS),其設計初衷就是為了提供簡單、可靠且高效的實時任務管理。關(guān)于FreeRTOS最多支持多少
    的頭像 發(fā)表于 09-02 14:21 ?847次閱讀

    freertos和rtos區(qū)別是什么

    FreeRTOS 和 RTOS(實時操作系統(tǒng))是兩不同的概念,但它們之間有緊密的聯(lián)系。FreeRTOS特定的開源實時操作系統(tǒng),而
    的頭像 發(fā)表于 09-02 14:18 ?1172次閱讀

    freertos和rtthread哪一個更好

    FreeRTOS FreeRTOS小型、可裁剪的實時操作系統(tǒng)內(nèi)核,由Richard Barry于2003年發(fā)布。它主要面向微控制器(MCU)和小型嵌入式系統(tǒng),以其輕量級、可預測
    的頭像 發(fā)表于 09-02 14:06 ?3019次閱讀

    ROS讓機器人開發(fā)更便捷,基于RK3568J+Debian系統(tǒng)發(fā)布!

    本帖最后由 Tronlong創(chuàng)龍科技 于 2024-7-19 17:18 編輯 ROS系統(tǒng)是什么 ROS(Robot Operating System)是適用于機器人的開源的
    發(fā)表于 07-09 11:38

    如何在ROS中調(diào)用.so文件

    設備 筆者有需求,需要結(jié)合ROS做模擬量采集。有種解決方法是ADC芯片+STM32主控,通過串口的方式與上位機通信,但串口通信速度很慢,達不到要求遂放棄。也考慮過使用NI的數(shù)據(jù)采
    發(fā)表于 07-02 14:44

    AG32 下使用 freeRTOS 的參考

    \\\\framework-agrv_freertos\\\\用戶使用時,不必關(guān)注該源碼,只需關(guān)注 API 使用即可。 、簡單驗證: 使用時,從 VSCODE 中直接打開工程:\\\\AgRV_pio\\\\platforms
    發(fā)表于 05-28 13:34

    用悟空派全志H3開發(fā)板做一個基于ROS系統(tǒng)的全向輪小車

    這個強大的開發(fā)板的些關(guān)鍵特性以及我是如何利用它來打造全向輪的小車的。 2、產(chǎn)品設計介紹 本次設計的全向輪小車是在圓形底盤上安裝
    發(fā)表于 05-06 11:15

    cubemx在配置的時候加上freertosfreertos配置為時間輪換,會在驅(qū)動調(diào)用半切換到另一個任務嗎?

    我想咨詢下貴司的cubemx在配置的時候加上freertosfreertos配置為時間輪換,會在驅(qū)動調(diào)用半切換到另一個任務嗎?另外驅(qū)動
    發(fā)表于 03-29 07:14

    創(chuàng)建了STM32H7+FreeRTOS+CubeIDE+FreeRTOS Task list的工程,沒有時間顯示怎么解決?

    如題,我創(chuàng)建了STM32H7+FreeRTOS+CubeIDE+FreeRTOS Task list的工程,但是沒有時間顯示。搜索網(wǎng)上的資料,說是需要添加
    發(fā)表于 03-28 07:24

    SLAMWARE ROS SDK的基礎架構(gòu)、部署方法和應用示例介紹

    ROS作為機器人行業(yè)應用最廣泛的基礎架構(gòu)之,是很多用戶開發(fā)機器人應用的首選框架,如果要在基于ROS開發(fā)的系統(tǒng)中集成思嵐科技的機器人底盤或者SLAMKit建圖定位解決方案,有什么最便捷的方法呢?
    的頭像 發(fā)表于 03-21 10:44 ?897次閱讀
    SLAMWARE <b class='flag-5'>ROS</b> SDK的基礎架構(gòu)、部署方法和應用示例介紹

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

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

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

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

    FreeRTOS內(nèi)存機制詳解

    FreeRTOS種實時操作系統(tǒng),它提供了多種內(nèi)存分配方式,包括動態(tài)內(nèi)存分配和靜態(tài)內(nèi)存分配。
    的頭像 發(fā)表于 12-31 16:49 ?2686次閱讀
    <b class='flag-5'>FreeRTOS</b>內(nèi)存機制詳解

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

    設置ROS環(huán)境變量是使用ROS的重要步驟之。本文將詳細介紹如何設置ROS環(huán)境變量,包括什么是環(huán)境變量、為什么要設置ROS環(huán)境變量、如何設置
    的頭像 發(fā)表于 12-28 13:52 ?2049次閱讀
    主站蜘蛛池模板: 97国产成人精品视频| 亚洲 综合 欧美在线 热| 蝴蝶中文娱乐| 高清AV熟女一区| 4480YY旧里番在线播放| 亚洲 小说 欧美 激情 另类| 欧美精品久久久久久久久大尺度| 国产在线视频在线观看| 办公室激情在线观看| 91精品乱码一区二区三区| 亚洲精品高清在线观看| 涩涩涩涩爱网站| 欧美熟妇互舔20p| 麻豆高清区在线| 九九热精品在线观看| 国产午夜理论片YY8840Y| 超级最爽的乱淫片免费| 3344永久在线观看视频免费| 野花香HD免费高清版6高清版| 天天狠狠弄夜夜狠狠躁·太爽了| 青青在线视版在线播放| 美女张开大腿| 看黄色片子| 久久兔费黄A级毛片高清| 久见久热 这里只有精品| 国语对白老女人8av| 国产午夜视频| 国产午夜三级一区二区三| 国产精品无码亚洲精品| 国产精品久久国产三级国不卡顿| 18和谐综合色区| 亚洲视频国产在线精品| 日本人xxxⅹ18hd19hd| 男人J进入女人P免费狂躁| 青青草A在在观免费线观看| 日韩亚洲人成在线| 午夜阳光影院在线观看视频| 亚洲中文无码永久免费| 一本色道久久综合亚洲精品| 97色伦图片97色伦图影院久久| www.精品视频|