ROS學習(八)—— 理解ROS服務和參數


一、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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM