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

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

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

ROS是如何設(shè)計(jì)的 ROS客戶端庫(kù)

麥辣雞腿堡 ? 來源:古月居 ? 作者:古月居 ? 2023-09-14 17:29 ? 次閱讀

實(shí)現(xiàn)通信的代碼在ros_comm包中,如下。

其中clients文件夾一共有127個(gè)文件,看來是最大的包了。

現(xiàn)在我們來到了ROS最核心的地帶。

圖片

圖片

客戶端這個(gè)名詞出現(xiàn)的有些突然,一個(gè)機(jī)器人操作系統(tǒng)里為什么需要客戶端。

原因是,節(jié)點(diǎn)與主節(jié)點(diǎn)master之間的關(guān)系是client/server,這時(shí)每個(gè)節(jié)點(diǎn)都是一個(gè)客戶端(client),而master自然就是服務(wù)器端(server)。

那客戶端庫(kù)(client libraries)是干什么的?就是為實(shí)現(xiàn)節(jié)點(diǎn)之間通信的。

雖然整個(gè)文件夾中包含的文件眾多,但是我們?nèi)绻凑找欢ǖ拿}絡(luò)來分析就不會(huì)眼花繚亂。

節(jié)點(diǎn)之間最主要的通信方式就是基于消息的。為了實(shí)現(xiàn)這個(gè)目的,需要三個(gè)步驟,如下。

弄明白這三個(gè)步驟就明白R(shí)OS的工作方式了。這三個(gè)步驟看起來是比較合乎邏輯的,并不奇怪。

消息的發(fā)布者和訂閱者(即消息的接收方)建立連接;

發(fā)布者向話題發(fā)布消息,訂閱者在話題上接收消息,將消息保存在回調(diào)函數(shù)隊(duì)列中;

調(diào)用回調(diào)函數(shù)隊(duì)列中的回調(diào)函數(shù)處理消息。

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

    關(guān)注

    18

    文章

    5880

    瀏覽量

    135314
  • 客戶端
    +關(guān)注

    關(guān)注

    1

    文章

    287

    瀏覽量

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

    關(guān)注

    1

    文章

    276

    瀏覽量

    16882
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在Android中使用ROS

    由于ROS提供了Android的對(duì)應(yīng)的開發(fā)庫(kù),我們可以方便的在Android中開發(fā)相應(yīng)的ROS客戶端程序。下面介紹一下在Android中使用ROS
    發(fā)表于 05-16 19:16

    超詳細(xì) ROS安裝教程

    ROS Kinetic Kame博主分別用過 Indigo 和 Kinetic,其實(shí)在使用過程中差距并不大,除了極少數(shù)第三方庫(kù),只支持 Indigo版本,畢竟 Kinetic 剛剛發(fā)布,存在一些
    發(fā)表于 05-16 19:35

    ROS與STM32是如何進(jìn)行通信的

    角速度、實(shí)際線速度STM32ROS之前運(yùn)行的ROS項(xiàng)目都是在終端編譯,用vim或者gedit修改代碼,很不方便,函數(shù)跳轉(zhuǎn)查看都沒辦法實(shí)現(xiàn)。所以今天先安裝一個(gè)IDE試試
    發(fā)表于 08-11 07:25

    ROS與樹莓派進(jìn)行通信

    成了兩個(gè)類而已。asio_server類運(yùn)行于樹莓派上作為服務(wù)器,asio_client運(yùn)行于PC上作為客戶端。剛開始寫的代碼僅僅是客戶端發(fā)送,服務(wù)器端接收這么簡(jiǎn)單。但后來一想,樹莓派不是還要返回?cái)?shù)據(jù)給R...
    發(fā)表于 09-06 07:26

    什么是ROS?如何學(xué)習(xí)ROS?

    什么是ROS?如何學(xué)習(xí)ROS
    發(fā)表于 11-11 07:21

    ROS簡(jiǎn)介

    目錄一、ROS簡(jiǎn)介1、什么是ROS2、ROS產(chǎn)生、發(fā)展和壯大的原因和意義二、在Ubuntu系統(tǒng)中,安裝對(duì)應(yīng)版本的ROS軟件1、確定Ubuntu配置2、添加
    發(fā)表于 12-17 08:24

    什么是ROS?ROS產(chǎn)生、發(fā)展和壯大的原因和意義

    機(jī)器人操作系統(tǒng)(ROS)入門(嵌入式系統(tǒng)應(yīng)用開發(fā))一、ROS 基本問題1. 什么是 ROS2. ROS 產(chǎn)生、發(fā)展和壯大的原因和意義二、安裝 ROS
    發(fā)表于 12-17 06:08

    你知道ROS客戶端Client的編程該怎樣去編寫嗎

    你知道ROS客戶端Client的編程該怎樣去編寫嗎?
    發(fā)表于 02-14 07:12

    怎樣通過ROS Arduino程序去點(diǎn)亮LED燈呢

    roscore:然后,運(yùn)行rosserial客戶端應(yīng)用程序, 其中為你安裝rosserial的工作空間,確保使用正確的串口:最后,你可以使用rostopic轉(zhuǎn)換你的LEd狀態(tài)。原作者:liuyu-419812
    發(fā)表于 07-07 10:43

    基于FreeRTOS的micro(微型)ROS

    。 一、關(guān)于ROS ROS:Robot Operating System,,即機(jī)器人操作系統(tǒng)。 和普通OS不一樣的是,ROS主要是針對(duì)機(jī)器人,是基于操作系統(tǒng)之上,提供一系列程序庫(kù)和工具
    的頭像 發(fā)表于 09-25 14:16 ?2211次閱讀
    基于FreeRTOS的micro(微型)<b class='flag-5'>ROS</b>

    ROS與STM32通信

    角速度、實(shí)際線速度STM32ROS之前運(yùn)行的ROS項(xiàng)目都是在終端編譯,用vim或者gedit修改代碼,很不方便,函數(shù)跳轉(zhuǎn)查看都沒辦法實(shí)現(xiàn)。所以今天先安裝一個(gè)IDE試試
    發(fā)表于 12-24 19:00 ?11次下載
    <b class='flag-5'>ROS</b>與STM32通信

    深度解析開源無(wú)人機(jī)ROS開發(fā)方案

    rospy 是 ROS 的純 Python 客戶端庫(kù)。rospy 客戶端 API 使 Python 程序員能夠快速與 ROS主題、服務(wù)和參數(shù)
    發(fā)表于 07-08 17:02 ?2552次閱讀

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

    ROS1完成了介紹。 對(duì)ROS的Simulink支持包括一個(gè)Simulink塊庫(kù),用于為指定的主題發(fā)送和接收
    的頭像 發(fā)表于 11-15 17:26 ?408次閱讀
    如何初始化<b class='flag-5'>ROS</b>并創(chuàng)立鏈接

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

    也是毫不夸張的。 ROS的擴(kuò)展即ROS universe,是全球范圍的代碼,有不同國(guó)家的ROS社區(qū)組織開發(fā)和維護(hù)。 有的是庫(kù)代碼,如OpenCV、PCL等;
    的頭像 發(fā)表于 11-21 18:12 ?582次閱讀

    ros的基本概念是什么

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