理解ROS服务和参数---ROS学习第6篇
文章目錄
- 1.ROS服務
- 2.使用rosservice
- 2.1 rosservice list
- 2.2 rosservice type
- 2.3 rosservice call
- 3. 使用rosparam
- 3.1 rosparam list
- 3.2 rosparam set和rosparam get
- 3.3 rosparam dump和rosparam load
1.ROS服務
服務時節點之間通訊的另一種方式。服務允許節點發送一個請求(request)并獲得一個響應(response)。
2.使用rosservice
rosservice可以很容易地通過服務附加到ROS客戶端/服務器框架上。rosservice有許多可用于服務的命令,如下所示:
rosservice list 輸出活躍服務的信息
rosservice call 用給定的參數調用服務
rosservice type 輸出服務的類型
rosservice find 按服務的類型查找服務
rosservice uri 輸出服務的ROSRPC uri
2.1 rosservice list
$ rosservice list
list命令顯示turtlesim接待您提供9個服務:reset, clear, spawn, kill, turtle1/set_pen, /turtle1/teleport_absolute, /turtle1/teleport_relative, turtlesim/get_loggers, turtlesim/set_logger_level。同時還有兩個與rosout節點相關的服務:/rosout/get_loggers和/rosout/set_logger_level。
我們使用rosservice type命令進一步查看clear(清除)服務
2.2 rosservice type
用法:
rosservice type [service]
查看clear服務的類型
kandi@ubuntu:~$ rosservice type /clear
std_srvs/Empty
服務的類型為Empty(空),這表明調用這個服務時不需要參數(即,它在發出請求時不發送數據,在接收響應時也不接收數據)。下面我們使用rosservice call命令調用此服務。
2.3 rosservice call
用法:
rosservice call [service] [args]
因為clear服務的類型是Empty,所以調用時無需帶參數
$ rosservice call /clear
跟想象的一樣,它清楚了turtlesim_node背景上的運動軌跡
我們看看服務具有參數的情況。查看spawn(產卵)服務的信息:
kandi@ubuntu:~$ rosservice type /spawn | rossrv show
這個服務讓我們可以在給定的位置和角度生成一只新的烏龜。name字段是可選的,這里我們不設具體的名字,讓turtlesim自動創造一個
kandi@ubuntu:~$ rosservice call /spawn 2 2 0.2 “”
name: “turtle2”
kandi@ubuntu:~$ rosservice call /spawn 10 10 0.2 “”
name: “turtle3”
3. 使用rosparam
rosparam能讓我們在ROS參數服務器(Parameter Server)上存儲和操作數據。參數服務器能夠存儲整形(integer)、浮點(float)、布爾(boolean)、字典(dictionaries)和列表(list)等數據類型。rosparam使用YAML標記語言的語法。一般而言,YAML的表述很自然:1是整形,1.0是浮點型,true是布爾型,[1,2,3]是整形組成的列表,[a:b,c:d]是字典。rosparam有很多命令可以用來操作參數,如下所示:
rosparam set 設置參數
rosparam get 獲取參數
rosparam load 從文件中加載參數
rosparam dump 向文件中轉儲參數
rosparam delete 刪除參數
rosparam list 列出參數名
3.1 rosparam list
kandi@ubuntu:~$ rosparam list
/rosdistro
/roslaunch/uris/host_ubuntu__46587
/rosversion
/run_id
/turtlesim/background_b
/turtlesim/background_g
/turtlesim/background_r
kandi@ubuntu:~$
可以看出turtlesim節點在參數服務器上有3個參數用于設定背景顏色
讓我們使用rosparam set來試著改變一個參數值。
3.2 rosparam set和rosparam get
用法:
rosparam set [param_name]
rosparam get [param_name]
現在我們修改背景顏色的藍色和紅色通道值:
kandi@ubuntu:~$ rosparam get /turtlesim/background_b
255
kandi@ubuntu:~$ rosparam get /turtlesim/background_r
69
kandi@ubuntu:~$ rosparam set /turtlesim/background_b 60
kandi@ubuntu:~$ rosparam get /turtlesim/background_b
60
kandi@ubuntu:~$ rosparam set /turtlesim/background_r 150
kandi@ubuntu:~$ rosservice call /clear
看到的turtlesim如下:
然后我們來查看參數服務器上其他參數的值,獲取背景的綠色通知的值:
kandi@ubuntu:~$ rosparam get /turtlesim/background_g
86
業可以用rosparam get /來顯示參數服務器上的多有內容:
你可能希望將其存儲在一個文件中,以便下次可以重新加載它。這通過rosparam
很容易就可以實現
3.3 rosparam dump和rosparam load
用法:
rosparam dump [file_name] [namespace]
rosparam load [file_name] [namespace]
在這里,我們將所有的參數寫入params.yaml文件:
$ rosparam dump params.yaml
甚至可以將yaml文件重載入新的命名空間,例如copy_turtle:
kandi@ubuntu:~$ rosparam load params.yaml copy_turtle
kandi@ubuntu:~$ rosparam get /copy_turtle/turtlesim/background_b
60
至此,我們已經了解ROS服務和參數的工作原理。
總結
以上是生活随笔為你收集整理的理解ROS服务和参数---ROS学习第6篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云迹科技:站在酒店场景服务机器人的风口
- 下一篇: 【图解】《“十四五”机器人产业发展规划》