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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS入门_1.10 理解ROS服务和参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • ROS Services
  • 使用rosservice
  • rosservice list
  • rosservice type
  • rosservice call
  • Using rosparam
  • rosparam list
  • rosparam set and rosparam get
  • rosparam dump and rosparam load
  • 本教程假設從前一教程啟動的turtlesim_node仍在運行,現在我們來看看turtlesim提供了什么服務:

    1. ROS Services

    服務(services)是節點之間通訊的另一種方式。服務允許節點發送請求(request)?并獲得一個響應(response)


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

    使用方法:

    rosservice list 輸出可用服務的信息 rosservice call 調用帶參數的服務 rosservice type 輸出服務類型 rosservice find 依據類型尋找服務find services by service type rosservice uri 輸出服務的ROSRPC uri

    1.1 rosservice list

    $ rosservice list

    list?命令顯示turtlesim節點提供了9個服務:重置(reset),?清除(clear),?再生(spawn),?終止(kill),?turtle1/set_pen,?/turtle1/teleport_absolute,?/turtle1/teleport_relative,?turtlesim/get_loggers, and?turtlesim/set_logger_level. 同時還有另外兩個rosout節點提供的服務:?/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命令更進一步查看clear服務:

    1.2 rosservice type

    使用方法:

    rosservice type [service]

    我們來看看clear服務的類型:

    $ rosservice type clear

    std_srvs/Empty

    服務的類型為空(empty),這表明在調用這個服務是不需要參數(比如,請求不需要發送數據,響應也沒有數據)。下面我們使用rosservice?call命令調用服務:

    1.3 rosservice call

    使用方法:

    rosservice call [service] [args]

    因為服務類型是空,所以進行無參數調用:

    $ rosservice call clear

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

    通過查看再生(spawn)服務的信息,我們來了解帶參數的服務:

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

    這個服務使得我們可以在給定的位置和角度生成一只新的烏龜。名字參數是可選的,這里我們不設具體的名字,讓turtlesim自動創建一個。

    $ rosservice call spawn 2 2 0.2 ""

    服務返回了新產生的烏龜的名字:

    • name: turtle2

    現在我們的烏龜看起來應該是像這樣的:

    2. Using rosparam

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

    使用方法:

    rosparam set 設置參數 rosparam get 獲取參數 rosparam load 從文件讀取參數 rosparam dump 向文件中寫入參數 rosparam delete 刪除參數 rosparam list 列出參數名

    我們來看看現在參數服務器上都有哪些參數:

    2.1 rosparam list

    $ rosparam list

    我們可以看到turtlesim節點在參數服務器上有3個參數用于設定背景顏色:

    • /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]

    現在我們修改背景顏色的紅色通道:

    $ rosparam set background_r 150

    上述指令修改了參數的值,現在我們調用清除服務使得修改后的參數生效:

    $ rosservice call clear

    現在 我們的小烏龜看起來應該是像這樣:

    現在我們來查看參數服務器上的參數值——獲取背景的綠色通道的值:

    $ rosparam get background_g
    • 86

    我們可以使用rosparam?get?/來顯示參數服務器上的所有內容:

    $ 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

    你可能希望存儲這些信息以備今后重新讀取。這通過rosparam很容易就可以實現:

    2.3 rosparam dump and rosparam load

    使用方法:

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

    現在我們將所有的參數寫入params.yaml文件:

    $ rosparam dump params.yaml

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

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

    至此,我們已經了解了ROS服務和參數服務器的使用,接下來,我們一同試試使用 rqt_console 和 roslaunch

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。