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

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

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

ROS核心框架介紹

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

ROS核心框架

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

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

sudo apt install ros-melodic-ros-base

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

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

圖片

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

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

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

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

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

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

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

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

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

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

    關(guān)注

    210

    文章

    27986

    瀏覽量

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

    關(guān)注

    2

    文章

    28

    瀏覽量

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

    關(guān)注

    1

    文章

    276

    瀏覽量

    16919
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Micro-ROS:把ROS2放在MCU上

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

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

    、在ROS小車?yán)锩嬗袃蓚€(gè)核心控制器,一個(gè)是ROS主控,一個(gè)是stm32控制器3、ROS主控是樹莓派等,只要能在ROS上面將
    發(fā)表于 06-28 07:49

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

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

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

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

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

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

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

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

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

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

    ROS基本介紹

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

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

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

    ROS/ROS 2 介紹

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

    Unity與ROS鏈接介紹

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

    ROS的擴(kuò)展有哪些方法

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

    ros的基本概念是什么

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

    ROS通信接口機(jī)制介紹

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

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

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