ROS

ROS Topic, Service and Actionlib的用途與差別

最近逛ROS answer逛到一個不錯的問題,有人問到topic,service和actionlib的差異以及使用時機。
我歸納一下這三者的使用時機,

Topic主要用在連續的資料傳輸,例如camera的資料理論上是不斷傳進來,所以在ROS裡就會使用topic來接收camera資料,然後你如果需要就寫一個程式去這個topic接資料。

Service像是別人幫你寫好了一些功能強大的函式,你只要把這個函式需要的input丟給他,他就會幫你做很多事然後把結果傳回給你。舉例來說,你可以寫一個程式控制PR2的camera去做辨識,但你也可以啟動別人寫的辨識功能,只要將辨識要求送給別人寫的辨識service,他就會把辨識結果傳回給你,完全不用自己寫一個辨識系統。

Action lib的使用時機則是在於你的程式可能需要被中斷或是你需要知道這個功能執行的狀態。
需要被中斷的意思是說,如果你寫了一個讓手臂動的程式,當這個手臂已經規劃好路徑並開始動,這時在他路徑上可能突然出現一個人,理論上手臂應該要停止,如果手臂控制是用service的話,那麼在這種情況下是停不下來的,但是如果是用action lib可以被停止。需要知道執行的狀態也滿直觀,假想機器人要拿東西,從伸出手到拿到東西的過程如果不知道自己的手在哪是一件很恐怖的事,所以action lib提供狀態的確認。

問題連結

————————————

Topic, Service, Actionlib基本概念.

One thought on “ROS Topic, Service and Actionlib的用途與差別

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s