ROS入门_1.10 理解ROS服务和参数
目錄
本教程假設從前一教程啟動的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 clearstd_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服务和参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为鸿蒙与佳华,华为鸿蒙系统发布,带来三
- 下一篇: 云计算底层技术-虚拟网络设备(Bridg