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

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

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

ROS核心框架介紹

麥辣雞腿堡 ? 來源:CSDN博客 ? 作者:lwlv ? 2023-11-21 18:07 ? 次閱讀

ROS核心框架

對于第一個問題,我也沒仔細研究過源碼,核心代碼基本由pythonC++組成,運用了xmlrpc機制,每個運行的節(jié)點可以理解成一個進程。進程間通訊有些是共享內(nèi)存的方式(比如message_filter),有些應(yīng)該是通過socket。

不過ROS的核心框架也就是ros-base主要由Willow Garage公司和一些開發(fā)者設(shè)計、提供以及維護,它提供了一些分布式計算的基本工具。

sudo apt install ros-melodic-ros-base

分布式計算框架可以理解為ROS的所有節(jié)點運行時需要一個主控制器ROS Master(通過roscore指令開啟),ROS Master通過RPC(Remote Procedure Call Protocol,遠程過程調(diào)用)提供了登記列表和對其他計算圖表的查找。

沒有控制器,節(jié)點將無法找到其他節(jié)點,交換消息或調(diào)用服務(wù)。節(jié)點與節(jié)點之間的連接是直接的,控制器就像一個DNS(Domain Name System)服務(wù)器。

圖片

ROS的框架還是挺復雜的,光看一些理論性的介紹可能還有點概念,但真正去實現(xiàn)里面肯定還有不少細節(jié)問題。

真正在應(yīng)用ROS框架時,其實也有一些不足的地方,比如:

1、ROS節(jié)點相互之間通信時如何知道另外一個節(jié)點的狀態(tài),是宕掉了還是正常,因為它強依賴于于中心節(jié)點ROS Master。本身在系統(tǒng)中頻繁創(chuàng)建話題就不是一件很好的事,會造成多少內(nèi)存碎片。

在使用ros::Subscriber sub = n.subscribe(“chatter”, 1000,chatterCallback)時,這個1000是隊列消息的緩存數(shù)目,如果是圖像或者點云比較大的數(shù)據(jù),就不要隨便寫1000了,不然內(nèi)存會被消耗光。

2、系統(tǒng)中存在大量話題和數(shù)據(jù)時,本地傳輸?shù)臄?shù)據(jù)延時大而不確定,遠程傳輸?shù)臄?shù)據(jù)更是受帶寬和處理性能的影響。對于機器人的控制而言,想要達到精確更多,通信延時就要做得更小,而ROS這種通信機制實時性和穩(wěn)定性不太好。

3、ROS的msg采用md5碼去進行校驗,如果一個人改了沒通知另外一個人,經(jīng)常導致另外一個人的包運行不起來的尷尬局面。

4、ROS與可視化界面通信時,有時不知道是界面還是ROS機制問題,界面會莫名閃退(rviz就經(jīng)常出現(xiàn)這樣的問題)。

5、關(guān)于ROS的動態(tài)參數(shù)保存問題,比如在rqt_reconfigure上調(diào)好的參數(shù)如何在重啟roscore后加載調(diào)試后的參數(shù)。我曾花費過很久的時間,參見《在ROS中處理yaml文件》和《ROS動態(tài)調(diào)參(dynamic
reconfigure)客戶端服務(wù)端之C++ Python實現(xiàn)》

但也沒有很好地解決。很多功能可能僅適用于給開發(fā)者用,但當作產(chǎn)品去使用還是有很多地方值得去優(yōu)化。

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

    關(guān)注

    210

    文章

    28103

    瀏覽量

    205853
  • 主控制器
    +關(guān)注

    關(guān)注

    2

    文章

    28

    瀏覽量

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

    關(guān)注

    1

    文章

    276

    瀏覽量

    16942
收藏 人收藏

    評論

    相關(guān)推薦

    Micro-ROS:把ROS2放在MCU上

    機器人的發(fā)展。 ? ROS便是為機器人在研發(fā)的過程中的代碼復用提供支持的開源框架,大量的機器人開源項目,從感知到控制、從定位到構(gòu)圖、從導航到可視化,幾乎都使用ROS作為基礎(chǔ)。 ? Micro-
    的頭像 發(fā)表于 04-07 07:13 ?7559次閱讀

    ROS與STM32之間的聯(lián)系

    、在ROS小車里面有兩個核心控制器,一個是ROS主控,一個是stm32控制器3、ROS主控是樹莓派等,只要能在ROS上面將
    發(fā)表于 06-28 07:49

    ROS RIKIBOT基礎(chǔ)--使用系列 第一章節(jié)】ROS機器人硬件系統(tǒng) 精選資料分享

    ROS RIKIBOT基礎(chǔ)–使用系列】ROS機器人硬件介紹1.RIKIBOT機器人硬件介紹1.1硬件框架
    發(fā)表于 07-30 06:59

    ROS2的安裝與使用 精選資料推薦

    ros2的烏龜仿真turtlesim,介紹topic,service,action等元素及其使用,介紹ros的基本操作
    發(fā)表于 08-30 08:24

    分享一份RK3308開發(fā)板ROS使用手冊指南

    OpenEmbedded/Yocto 框架下維護了meta-ros layer,使得我們可以將ROS集成到同樣基于 Openembedded 框架 的嵌入式Linux中運行。Open
    發(fā)表于 08-16 18:04

    ROS的含義與機器人操作系統(tǒng)ROS介紹

    為了說明講清楚 ROS,我就從 ROS 是什么,為什么使用 ROS,如何使用 ROS 三個方面展開。 △出自今年《機器人視覺與應(yīng)用》課程本人制作的課件 是什么
    發(fā)表于 09-26 14:08 ?12次下載

    AV開發(fā)人員所采用的ROS框架簡介

    汽車行業(yè)的多個部門一直在采用開源軟件,尤其是在過去十年中基于 Linux 的代碼。 在這里,我們專注于一個稱為機器人操作系統(tǒng)(ROS)的開放框架。Apex.AI 正在利用 ROS,添加下面討論
    的頭像 發(fā)表于 07-18 15:59 ?1595次閱讀
    AV開發(fā)人員所采用的<b class='flag-5'>ROS</b><b class='flag-5'>框架</b>簡介

    ROS基本介紹

    近來找到的實習主要是做智能車控制,用到的也就是ROS機器人操作系統(tǒng),ROS需要運行在一個操作系統(tǒng)上,這個操作系統(tǒng)常用的就是Linux,而公司用的就是Ubuntu,所以Ubuntu-ROS組合就是實習的主要學習內(nèi)容了。所以我就新開
    的頭像 發(fā)表于 05-19 17:07 ?7296次閱讀
    <b class='flag-5'>ROS</b>基本<b class='flag-5'>介紹</b>

    ROS1的通信架構(gòu)的基礎(chǔ)通信方式及相關(guān)概念

    ROS的通信架構(gòu)是ROS的靈魂所在,它包括數(shù)據(jù)處理,進程運行,消息傳遞等** 。這篇文章主要介紹ROS1的通信架構(gòu)的基礎(chǔ)通信方式和相關(guān)概念,因為RO
    的頭像 發(fā)表于 05-19 17:23 ?3353次閱讀
    <b class='flag-5'>ROS</b>1的通信架構(gòu)的基礎(chǔ)通信方式及相關(guān)概念

    ROS/ROS 2 介紹

    ROS是機器人操作系統(tǒng)(Robot Operating System)的英文縮寫。ROS是用于編寫機器人軟件程序的一種具有高度靈活性的軟件架構(gòu)。ROS的原型源自斯坦福大學的STanford
    的頭像 發(fā)表于 05-19 17:45 ?4229次閱讀
    <b class='flag-5'>ROS</b>/<b class='flag-5'>ROS</b> 2 <b class='flag-5'>介紹</b>

    Unity與ROS鏈接介紹

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

    ROS的擴展有哪些方法

    ROS的擴展 ROS除了本身框架性的東西以外,最大的特色就是能融合很多其他的東西,形成一個機器人開發(fā)生態(tài)圈,難怪ROS名為機器人操作系統(tǒng),使命是powering the world‘s
    的頭像 發(fā)表于 11-21 18:12 ?662次閱讀

    ros的基本概念是什么

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

    ROS通信接口機制介紹

    ROS通信接口 接口可以讓程序之間的依賴降低,便于我們使用別人的代碼,也方便別人使用我們的代碼,這就是ROS核心目標,減少重復造輪子。 ROS有三種常用的通信機制,分別是話題、服務(wù)、
    的頭像 發(fā)表于 12-01 15:03 ?761次閱讀
    <b class='flag-5'>ROS</b>通信接口機制<b class='flag-5'>介紹</b>

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

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