2、srv(服務):乙個srv檔案描述乙個服務。它由兩部分組成:請求(request)和響應(response)。
3、msg檔案存放在軟體包的msg目錄下,srv檔案則存放在srv目錄下。
下面,我們將在之前建立的軟體包裡定義乙個新的訊息。
1、在 catkin_ws/src/learning_communication 檔案中,建立乙個資料夾,命名為 msg,在這個msg資料夾裡面,建立乙個 .msg 檔案,命名為msg.msg
2、開啟msg.msg,複製如下內容,當然,你可以仿造上面的形式多增加幾行以得到更為複雜的訊息
int64 num
string first_name
string last_name
uint8 age
uint32 score
3、我們要確保msg檔案能被轉換為c++、python和其他語言的源**。
開啟package.xml, 確保它包含以下兩行且沒有被注釋。
把這兩行的 刪除(注意不是整行刪除)
< !-- message_generation -- >
< !-- message_runtime -- >
4、開啟 catkin_ws/src/learning_communication 下的cmakelists.txt
在find_package函式中新增message_generation依賴項,這樣就能生成訊息了。
直接將message_generation新增到components列表中即可,如下所示:
#不要直接複製這一大段,只需將message_generation加在括號閉合前即可
find_package(catkin required components
roscpp
rospy
std_msgs
message_generation
)
5、找到如下**塊,加入新訊息名稱:
## generate messages in the 'msg' folder
# add_message_files(
# files
# message1.msg
# message2.msg
# )
刪除#符號來取消注釋,然後將message*.msg替換為你的msg.msg檔名,就像下邊這樣:
## generate messages in the 'msg' folder
add_message_files(
files
msg.msg
)
6、編譯
cd ~/catkin_ws/
catkin_make
7、使用 rosmsg
以上就是建立訊息的所有步驟。讓我們通過rosmsg show命令看看ros能否識別它。
rosmsg show msg
顯示如下:
訊息型別包含兩部分:
讓我們使用之前建立的包再來建立服務:
1、在 catkin_ws/src/learning_communication 檔案中,建立乙個資料夾,命名為 srv,在這個srv資料夾裡面,建立乙個 .srv 檔案,命名為 addtwoints.srv
2、開啟 addtwoints.srv,複製如下內容
srv檔案分為請求和響應兩部分,由』—'分隔,其中 a 和 b 是請求, 而sum 是響應。
int64 a
int64 b
---int64 sum
3、我們要確保srv檔案能被轉換為c++、python和其他語言的源**。(這一步在上面使用msg已經做好了,這裡不需要了)
4、在find_package函式新增message_generation依賴項()(這一步在上面使用msg已經做好了,這裡不需要了)
5、找到如下**塊,加入新服務名稱:
## generate services in the 'srv' folder
# add_service_files(
# files
# service1.srv
# service2.srv
# )
刪除#符號來取消注釋,然後將service*.srv替換為srv.srv檔名,就像下邊這樣:
## generate services in the 'srv' folder
add_service_files(
files
addtwoints.srv
)
6、編譯
cd ~/catkin_ws/
catkin_make
7、使用 rosmsg
以上就是建立服務的所有步驟。讓我們通過rossrv show命令看看ros能否識別它。
rossrv show learning_communication/addtwoints
ROS學習(3) ROS通訊架構
ros有三個層級的概念,分別是 檔案系統級 計算圖級和開源社群級。ros計算圖 主要是指程序之間 節點之間 的通訊。ros建立了乙個連線所有程序的網路,通過這個網路節點之間完成互動,獲取其他節點發布的資訊。圍繞計算圖級和節點,一些重要的概念也隨即產生 節點,節點管理器,引數伺服器,訊息,服務,主題 ...
建立ROS訊息和ROS服務
1.1在工作空間下的功能包下新建名為msg的資料夾 新建person.msg檔案 int64 num1.2為確保msg檔案被轉換成python或者其他語言的源 需要修改功能包下package.xml檔案,以新增功能包依賴 message generation build depend message...
學習3 ROS檔案系統
本次學習主要為掌握很多ros終端命令。這些終端命令非常接近於linux本身的終端命令,只不過命令前面加上了 ros 這3個字母。想象一下,我們現在是乙個ros作業系統。其他的系統檔案我們都不感興趣,我們只對ros感興趣。所以只使用roscd,來進入ros系統目錄下的某個包,用rospack find...