日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ROS入门_1.10 理解ROS服务和参数

發(fā)布時(shí)間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS入门_1.10 理解ROS服务和参数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • ROS Services
  • 使用rosservice
  • rosservice list
  • rosservice type
  • rosservice call
  • Using rosparam
  • rosparam list
  • rosparam set and rosparam get
  • rosparam dump and rosparam load
  • 本教程假設(shè)從前一教程啟動(dòng)的turtlesim_node仍在運(yùn)行,現(xiàn)在我們來(lái)看看turtlesim提供了什么服務(wù):

    1. ROS Services

    服務(wù)(services)是節(jié)點(diǎn)之間通訊的另一種方式。服務(wù)允許節(jié)點(diǎn)發(fā)送請(qǐng)求(request)?并獲得一個(gè)響應(yīng)(response)


    rosservice可以很輕松的使用 ROS 客戶端/服務(wù)器框架提供的服務(wù)。rosservice提供了很多可以在topic上使用的命令,如下所示:

    使用方法:

    rosservice list 輸出可用服務(wù)的信息 rosservice call 調(diào)用帶參數(shù)的服務(wù) rosservice type 輸出服務(wù)類型 rosservice find 依據(jù)類型尋找服務(wù)find services by service type rosservice uri 輸出服務(wù)的ROSRPC uri

    1.1 rosservice list

    $ rosservice list

    list?命令顯示turtlesim節(jié)點(diǎn)提供了9個(gè)服務(wù):重置(reset),?清除(clear),?再生(spawn),?終止(kill),?turtle1/set_pen,?/turtle1/teleport_absolute,?/turtle1/teleport_relative,?turtlesim/get_loggers, and?turtlesim/set_logger_level. 同時(shí)還有另外兩個(gè)rosout節(jié)點(diǎn)提供的服務(wù):?/rosout/get_loggers?and?/rosout/set_logger_level.

    • /clear /kill /reset /rosout/get_loggers /rosout/set_logger_level /spawn /teleop_turtle/get_loggers /teleop_turtle/set_logger_level /turtle1/set_pen /turtle1/teleport_absolute /turtle1/teleport_relative /turtlesim/get_loggers /turtlesim/set_logger_level

    我們使用rosservice?type命令更進(jìn)一步查看clear服務(wù):

    1.2 rosservice type

    使用方法:

    rosservice type [service]

    我們來(lái)看看clear服務(wù)的類型:

    $ rosservice type clear

    std_srvs/Empty

    服務(wù)的類型為空(empty),這表明在調(diào)用這個(gè)服務(wù)是不需要參數(shù)(比如,請(qǐng)求不需要發(fā)送數(shù)據(jù),響應(yīng)也沒(méi)有數(shù)據(jù))。下面我們使用rosservice?call命令調(diào)用服務(wù):

    1.3 rosservice call

    使用方法:

    rosservice call [service] [args]

    因?yàn)榉?wù)類型是空,所以進(jìn)行無(wú)參數(shù)調(diào)用:

    $ rosservice call clear

    正如我們所期待的,服務(wù)清除了turtlesim_node的背景上的軌跡。

    通過(guò)查看再生(spawn)服務(wù)的信息,我們來(lái)了解帶參數(shù)的服務(wù):

    $ rosservice type spawn| rossrv show
    • float32 x float32 y float32 theta string name --- string name

    這個(gè)服務(wù)使得我們可以在給定的位置和角度生成一只新的烏龜。名字參數(shù)是可選的,這里我們不設(shè)具體的名字,讓turtlesim自動(dòng)創(chuàng)建一個(gè)。

    $ rosservice call spawn 2 2 0.2 ""

    服務(wù)返回了新產(chǎn)生的烏龜?shù)拿?#xff1a;

    • name: turtle2

    現(xiàn)在我們的烏龜看起來(lái)應(yīng)該是像這樣的:

    2. Using rosparam

    rosparam使得我們能夠存儲(chǔ)并操作ROS?參數(shù)服務(wù)器(Parameter Server)上的數(shù)據(jù)。參數(shù)服務(wù)器能夠存儲(chǔ)整型、浮點(diǎn)、布爾、字符串、字典和列表等數(shù)據(jù)類型。rosparam使用YAML標(biāo)記語(yǔ)言的語(yǔ)法。一般而言,YAML的表述很自然:1?是整型,?1.0是浮點(diǎn)型,?one是字符串,?true是布爾,?[1,?2,?3]是整型列表,?{a:?b,?c:?d}是字典.?rosparam有很多指令可以用來(lái)操作參數(shù),如下所示:

    使用方法:

    rosparam set 設(shè)置參數(shù) rosparam get 獲取參數(shù) rosparam load 從文件讀取參數(shù) rosparam dump 向文件中寫(xiě)入?yún)?shù) rosparam delete 刪除參數(shù) rosparam list 列出參數(shù)名

    我們來(lái)看看現(xiàn)在參數(shù)服務(wù)器上都有哪些參數(shù):

    2.1 rosparam list

    $ rosparam list

    我們可以看到turtlesim節(jié)點(diǎn)在參數(shù)服務(wù)器上有3個(gè)參數(shù)用于設(shè)定背景顏色:

    • /background_b /background_g /background_r /roslaunch/uris/aqy:51932 /run_id

    Let's change one of the parameter values using?rosparam?set:

    2.2 rosparam set and rosparam get

    Usage:

    rosparam set [param_name] rosparam get [param_name]

    現(xiàn)在我們修改背景顏色的紅色通道:

    $ rosparam set background_r 150

    上述指令修改了參數(shù)的值,現(xiàn)在我們調(diào)用清除服務(wù)使得修改后的參數(shù)生效:

    $ rosservice call clear

    現(xiàn)在 我們的小烏龜看起來(lái)應(yīng)該是像這樣:

    現(xiàn)在我們來(lái)查看參數(shù)服務(wù)器上的參數(shù)值——獲取背景的綠色通道的值:

    $ rosparam get background_g
    • 86

    我們可以使用rosparam?get?/來(lái)顯示參數(shù)服務(wù)器上的所有內(nèi)容:

    $ rosparam get /
    • background_b: 255 background_g: 86 background_r: 150 roslaunch: uris: {'aqy:51932': 'http://aqy:51932/'} run_id: e07ea71e-98df-11de-8875-001b21201aa8

    你可能希望存儲(chǔ)這些信息以備今后重新讀取。這通過(guò)rosparam很容易就可以實(shí)現(xiàn):

    2.3 rosparam dump and rosparam load

    使用方法:

    rosparam dump [file_name] rosparam load [file_name] [namespace]

    現(xiàn)在我們將所有的參數(shù)寫(xiě)入params.yaml文件:

    $ rosparam dump params.yaml

    你甚至可以將yaml文件重載入新的命名空間,比如說(shuō)copy空間:

    $ rosparam load params.yaml copy $ rosparam get copy/background_b
    • 255

    至此,我們已經(jīng)了解了ROS服務(wù)和參數(shù)服務(wù)器的使用,接下來(lái),我們一同試試使用 rqt_console 和 roslaunch

    總結(jié)

    以上是生活随笔為你收集整理的ROS入门_1.10 理解ROS服务和参数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。