4.ROS2服務(wù)入門
寫(xiě)在前面
- 當(dāng)前平臺(tái)文章匯總地址:ROS2機(jī)器人從入門到實(shí)戰(zhàn)
- 獲取完整教程及配套資料代碼,請(qǐng)關(guān)注公眾號(hào)<魚(yú)香ROS>獲取
- 教程配套機(jī)器人開(kāi)發(fā)平臺(tái):兩驅(qū)版| 四驅(qū)版
- 為方便交流,搭建了機(jī)器人技術(shù)問(wèn)答社區(qū):地址 fishros.org.cn
大家好,帥魚(yú)又蹬蹬蹬的游回來(lái)了。本節(jié)小魚(yú)將要帶大家一起了解一下什么是服務(wù)。
1.服務(wù)通信介紹
服務(wù)分為客戶端和服務(wù)端,平時(shí)我們用的手機(jī)APP都可以成為客戶端,而APP服務(wù)器對(duì)于軟件來(lái)說(shuō)就是服務(wù)端。
客戶端發(fā)送請(qǐng)求給服務(wù)端,服務(wù)端可以根據(jù)客戶端的請(qǐng)求做一些處理,然后返回結(jié)果給客戶端。
所以服務(wù)-客戶端模型,也可以成為請(qǐng)求-響應(yīng)模型。
不知道你有沒(méi)有感覺(jué)到服務(wù)和話題的不同之處,話題是沒(méi)有返回的,適用于單向或大量的數(shù)據(jù)傳遞。而服務(wù)是雙向的,客戶端發(fā)送請(qǐng)求,服務(wù)端響應(yīng)請(qǐng)求。
同時(shí)服務(wù)還是有一些注意事項(xiàng):
- 同一個(gè)服務(wù)(名稱相同)有且只能有一個(gè)節(jié)點(diǎn)來(lái)提供
- 同一個(gè)服務(wù)可以被多個(gè)客戶端調(diào)用
放兩張官方形象的動(dòng)圖:
2.體驗(yàn)服務(wù)
在我們安裝ROS2的時(shí)候其實(shí)系統(tǒng)為我們安裝了一些樣例程序,其中就有服務(wù)使用樣例,我們可以先來(lái)體驗(yàn)一下。
2.1 啟動(dòng)服務(wù)端
打開(kāi)終端,運(yùn)行下面的命令,這個(gè)命令用于運(yùn)行一個(gè)服務(wù)節(jié)點(diǎn),這個(gè)服務(wù)的功能是將兩個(gè)數(shù)字相加,給定a,b兩個(gè)數(shù),返回sum也就是ab之和。
ros2 run examples_rclpy_minimal_service service
2.2 使用命令查看服務(wù)列表
ros2 service list
2.3手動(dòng)調(diào)用服務(wù)
再啟動(dòng)一個(gè)終端,輸入下面的命令(注意a:、b:后的空格)。
ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts "{a: 5,b: 10}"
我們可以看到客戶端請(qǐng)求兩個(gè)數(shù)字5+10,服務(wù)端返回15。
3.ROS2服務(wù)常用命令
ROS2的命令行工具,小魚(yú)覺(jué)得還是非常值得一學(xué)的,畢竟確實(shí)很實(shí)用(裝X),之前已經(jīng)給大家講過(guò)了關(guān)于節(jié)點(diǎn)、話題、接口相關(guān)的命令了,現(xiàn)在小魚(yú)說(shuō)一下關(guān)于服務(wù)的那些命令行。
3.1查看服務(wù)列表
ros2 service list
3.2手動(dòng)調(diào)用服務(wù)
ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts "{a: 5,b: 10}"
如果不寫(xiě)參數(shù)值調(diào)用會(huì)怎么樣?比如下面這種,大家可以嘗試下。
ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts
3.3 查看服務(wù)接口類型
ros2 service type /add_two_ints
3.4查找使用某一接口的服務(wù)
這個(gè)命令看起來(lái)和4.3剛好相反。
ros2 service find example_interfaces/srv/AddTwoInts
4.總結(jié)
本節(jié)大家和小魚(yú)一起又多認(rèn)識(shí)了一個(gè)小伙伴,ROS2的服務(wù)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-722712.html
下一節(jié)我們將學(xué)習(xí)使用RCL在節(jié)點(diǎn)里創(chuàng)建服務(wù)端和客戶端。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-722712.html
到了這里,關(guān)于【ROS2機(jī)器人入門到實(shí)戰(zhàn)】ROS2服務(wù)入門的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!