国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

基于FreeRTOS的micro(微型)ROS

strongerHuang ? 來源:Francesca Finocchiaro ? 作者:Francesca Finocchiaro ? 2020-09-25 14:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

編輯整理:strongerHuang 作者:Francesca Finocchiaro

關注我的讀者中應該有部分是做ROS相關的工作,今天就來分享一個基于FreeRTOS的micro(微型)ROS。

一、關于ROS

ROS:Robot Operating System,,即機器人操作系統。

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

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

二、micro-ROS

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

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

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

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

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

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

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

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

三、為什么選擇FreeRTOS?

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

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

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

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

四、任務和計劃程序

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

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

使用FreeRTOS調度程序,micro-ROS能夠管理其主要任務以及負責傳輸層的任務的優先級。通常,負責網絡堆?;虼薪涌诘娜蝿毡仨殐炏扔趍icro-ROS應用程序。

五、內存管理

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

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

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

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

六、傳輸資源

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

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

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

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

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

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

七、Posix擴展

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

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

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

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

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

八、教程

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

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

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

九、最后

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

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

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

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

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

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

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

文章出處:【微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    147

    文章

    18924

    瀏覽量

    398050
  • RTOS
    +關注

    關注

    25

    文章

    866

    瀏覽量

    122977
  • ROS
    ROS
    +關注

    關注

    1

    文章

    293

    瀏覽量

    18723

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

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    初識ros2 功能包建立與可執行文件的配置

    本文介紹了ROS2程序的兩種啟動方式:直接運行可執行文件(ros2 run)和使用啟動文件(ros2 launch)。重點講解了Python軟件包的結構,包括package.xml、setup.py
    的頭像 發表于 01-22 13:41 ?234次閱讀

    米爾RK3576成功上車!ROS2 Humble生態系統體驗

    當RK3576的強勁“大腦”(四核A72+四核A53)與強大的GPU、VPU、NPU加速模塊相遇,一場高性價比的機器人開發革命正在悄然發生。我們成功將完整的Ubuntu 22.04與ROS
    發表于 01-15 18:30

    兆易創新GD32H7系列MCU適配Micro-ROS的完整技術指南

    本文將從開發板介紹、環境搭建、適配開發、測試驗證四個維度,提供GD32H7系列MCU適配Micro-ROS的完整技術指南。
    的頭像 發表于 12-31 10:09 ?7947次閱讀
    兆易創新GD32H7系列MCU適配<b class='flag-5'>Micro-ROS</b>的完整技術指南

    創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—ROS2系統使用說明

    本文圍繞創龍科技研發的評估板,詳解 ROS2 系統使用方法。涵蓋 ROS2 環境搭建、核心概念講解、節點通信測試、功能包創建與編譯,以及可視化工具 RViz 的使用,還包括基于評估板的 ROS2 應用案例演示,幫助開發者快速掌握
    的頭像 發表于 10-30 13:46 ?462次閱讀
    創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—<b class='flag-5'>ROS</b>2系統使用說明

    一體化ROS智能駕駛小車及實訓教學平臺解決方案

    一體化ROS智能駕駛小車及實訓教學平臺解決方案
    的頭像 發表于 09-26 17:34 ?1605次閱讀
    一體化<b class='flag-5'>ROS</b>智能駕駛小車及實訓教學平臺解決方案

    如何使用menuconfig添加配置micro-ros軟件包?

    請問有沒有最新的rtthread移植micro-ros移植使用教程,使用menuconfig添加配置micro-ros軟件包?
    發表于 09-25 06:37

    請問mirco ros2的lib庫怎么生成?

    想使用MDK開發mirco_ros2,但是網上怎么找都沒有相應的lib庫及生成教程,想問下有沒有人能解決這個問題,因為項目開始就用MDK開發,也習慣了,改用其他功能可能會很費時。
    發表于 09-22 07:28

    如何基于翼輝信息SylixOS開發ROS 2應用

    ROS 2(Robot Operating System 2)是機器人操作系統(ROS)的升級版,是一套開源的專為機器人開發而設計的軟件庫與工具集。作為構建機器人應用的強大框架,提供從硬件驅動到先進
    的頭像 發表于 08-14 15:44 ?2003次閱讀
    如何基于翼輝信息SylixOS開發<b class='flag-5'>ROS</b> 2應用

    硬核上車!RK3576基于Ubuntu部署ROS機器人系統詳細攻略(上)

    本文適用于瑞芯微RK3562、RK3566、RK3568、RK3576、RK3588等Arm64位SoC,適配開發ROS2系統。各型號觸覺智能均有配套核心板及開發板,實現了百分百全國產。ROS
    的頭像 發表于 07-03 18:45 ?2729次閱讀
    硬核上車!RK3576基于Ubuntu部署<b class='flag-5'>ROS</b>機器人系統詳細攻略(上)

    詳解FreeRTOS與SAFERTOS的區別

    開源免費的FreeRTOS由Richard Barry在WHIS工作時創建,WHIS基于FreeRTOS的功能模型,通過完整的HAZOP分析,確定了功能模型和API中的所有的弱點,減輕所有薄弱環節,并采用IEC 61508 SIL 3的開發生命周期,重新設計實現了SAFE
    的頭像 發表于 06-04 16:58 ?908次閱讀
    詳解<b class='flag-5'>FreeRTOS</b>與SAFERTOS的區別

    Micro OLED 陽極像素定義層制備方法及白光干涉儀在光刻圖形的測量

    ? 引言 ? Micro OLED 作為新型顯示技術,在微型顯示領域極具潛力。其中,陽極像素定義層的制備直接影響器件性能與顯示效果,而光刻圖形的精準測量是確保制備質量的關鍵。白光干涉儀憑借獨特
    的頭像 發表于 05-23 09:39 ?756次閱讀
    <b class='flag-5'>Micro</b> OLED 陽極像素定義層制備方法及白光干涉儀在光刻圖形的測量

    ros2教程

    電子發燒友網站提供《ros2教程.pdf》資料免費下載
    發表于 05-23 09:12 ?1次下載

    【「# ROS 2智能機器人開發實踐」閱讀體驗】視覺實現的基礎算法的應用

    閱讀心得體會:ROS2機器人視覺與地圖構建技術 通過對本書第7章(ROS2視覺應用)和第8章(ROS2地圖構建)的學習,我對機器人視覺感知和自主導航的核心技術有了更深入的理解。以下是我的心得體會
    發表于 05-03 19:41

    【「# ROS 2智能機器人開發實踐」閱讀體驗】+ROS2應用案例

    的應用。書中詳細介紹了如何在ROS 2中實現二維碼識別,包括二維碼掃描庫Zbar的使用,以及如何通過相機識別二維碼。 通過學習這一部分,我了解到二維碼識別的基本原理和實現步驟。首先,需要通過相機獲取環境圖像
    發表于 04-27 11:42

    【「# ROS 2智能機器人開發實踐」閱讀體驗】+內容初識

    ROS 2智能機器人開發實踐》內容閱讀初體驗 《ROS 2 智能機器人開發實踐》是一本針對 ROS 2(Robot Operating System 2)這一先進機器人開發框架的實用指南。隨著
    發表于 04-27 11:24