Topics
特點:
1.單向,分工明確,處理連續數據流,topic是一種多對多的形式,一個Node可以訂閱多個Topic,可以publish到多個topic上。
2.topic中的數據只要准備好了,就可以被回調函數調用。而發送端的topic的發送時機由publisher自己決定。
場景:
1.連續
比如收發傳感器數據,收發控制指令
Service
特點:
1.雙向,有反饋
2.往往不是固定頻率發送,處理不連續數據,需要時才發送請求和處理
場景:
1.離散
2.少量時間
用於那些快速停止的程序,如查詢一個node的狀態,做數學運算,機械臂的運動學反解(action也可以)等。
Actions
特點:
升級版service
場景:
1.離散
2.需要反饋 / 狀態跟蹤
3.需要花費大量時間
4.運行過程中可以被中斷(中斷通常是靠Action server來實現)
如讓小車前進一段時間,並在運行過程中提供反饋。比如《ROS by Example》書中想讓小車走1米,運行過程中需要不斷檢測是否走了1米,走到了就中斷它,讓它停下來。
即使在同一個Action Server上運行不同的兩個action goal, 它們的狀態也能夠利用各自的ID被區分開來。像視覺處理等需要較多時間來啟動或終止的程序也是利用action來實現的一個不錯的例子。
用Topic和Action能完成大部分操作