一、ROS 服務
服務(services)是節點之間通訊的另一種方式。服務允許節點發送請求(request) 並獲得一個響應(response)
二、rosservice
1、用途
rosservice可以很輕松的使用 ROS 客戶端/服務器框架提供的服務。
2、語法:
rosservice list print information about active services 輸出可用的服務信息
rosservice call call the service with the provided args 調用服務
rosservice type print service type 打印服務參數類型
rosservice find find services by service type
rosservice uri print service ROSRPC uri
3、rosservice list
rosservice list
4、rosservice type
(1)語法:
rosservice type [service]
(2)demo
rosservice type /clear
返回std_srvs/Empty
5、rosservice call
(1)語法:
rosservice call [service] [args]
(2)demo:
rosservice call /clear
正如我們所期待的,服務清除了turtlesim_node的背景上的軌跡。
(3)demo2:
rosservice type /spawn| rossrv show
返回:
float32 x float32 y float32 theta string name --- string name
然后我們再創建一個烏龜,命令為:
rosservice call /spawn 2 2 0.2 ""
返回給我們新的烏龜的名字:
name: turtle2
三、rosparam
rosparam使得我們能夠存儲並操作ROS 參數服務器(Parameter Server)上的數據。參數服務器能夠存儲整型、浮點、布爾、字符串、字典和列表等數據類型。rosparam使用YAML標記語言的語法。一般而言,YAML的表述很自然:1 是整型, 1.0 是浮點型, one是字符串, true是布爾, [1, 2, 3]是整型列表, {a: b, c: d}是字典. rosparam有很多指令可以用來操作參數,如下所示:
1、用法:
rosparam set set parameter rosparam get get parameter rosparam load load parameters from file rosparam dump dump parameters to file rosparam delete delete parameter rosparam list list parameter names
2、rosparam list
rosparam list
我們可以看到服務器參數上的參數:
/background_b /background_g /background_r /roslaunch/uris/aqy:51932 /run_id
3、使用rosparam set和rosparam get
(1)語法:
rosparam set [param_name] rosparam get [param_name]
(2)demo:改變背景顏色
rosparam set /background_r 150 rosservice call /clear
(3)得到全部參數
rosparam get /
4、參數保存和載入
(1)語法:
rosparam dump [file_name] [namespace] rosparam load [file_name] [namespace]
(2)demo:
保存:
rosparam dump params.yaml
載入:可以載入到另一個名字空間(好像可以隨便取,即可生成新的名字空間)
rosparam load params.yaml copy rosparam get /copy/background_b