延續上一篇,在寫C++版本的時候我發現service的message格式其實是一個結構體,裏面包含了兩個類別物件,分別是Request和Response。官方文件中關於整個結構體的定義如下:
namespace package_name
{
struct service_name
{
class Request
{
...
};
class Response
{
...
};
Request request;
Response response;
};
}
我覺得其實這樣寫起來就蠻直觀的,因為一個service就是包含了一組request和response的訊息,讓人在寫的時候直接呼叫這個物件底下的屬性就可以了。
講完結構體,又來到了我們最輕鬆的單元(?
大概介紹一下rosservice提供了哪些好用指令吧~
$ rosservice list
第一個就是我們最常見的list啦! 不得不說真的是蠻好用的 XD
$rosservice info <service_name>
也是一個很常見的查看某個特定service的相關資訊,由下圖可以看到在呼叫這個指令的時候,可以看到這個service是哪個node提供的,還有使用什麼樣的訊息格式、吃幾個參數等等。
$ rosservice call <service_name> [arg1 arg2 ...]
好的這個call就是打API的意思啦! 在測試階段的時候很好用喔! 執行畫面被我一樣包在上面的圖裡面了,大家也可以自己玩看看囉!
ROS wiki - roscpp Services
ROS wiki - rosservice