理解ROS 建立並使用自己的msg和srv

2021-10-12 02:18:50 字數 2329 閱讀 1826

在包的src同一級建立msg和srv資料夾,並在裡面建立自己的訊息和服務。如:

my_msg.msg

header header

string child_frame_id

geometry_msgs/posewithcovariance pose

geometry_msgs/twistwithcovariance twist

my_srv.srv

注意:虛線以上為請求(request),虛線下面為相應(response)

int64 a

int64 b---

int64 sum

find_package

(catkin required components

roscpp

rospy

message_generation

)add_message_files

(files my_msg.msg)

add_service_files

(files my_srv.srv)

generate_messages

(dependencies std_msgs)

catkin_package()

include_directories

(include $

)

實際上,如果在建立包的時候加上message_generation,就沒必要新增下面的配置了,同理cmakelist.txt也可以不用加message_generation。在這裡我還是加上了,以避免忘記加。

message_generation<

/build_depend>

message_generation<

/build_export_depend>

message_generation<

/exec_depend>

普通資訊和自己建立的訊息使用情況一樣,在發布器和訂閱器已經使用過訊息,這裡不再贅述。下面開始講服務。

直接貼**和自己的注釋:

#include

"ros/ros.h"

#include

"test_service/my_srv.h"

//建立srv的標頭檔案

bool

add(test_service::my_srv::request &req, test_service::my_srv::response &res)

//求和服務

intmain

(int argc,

char

**ar**)

#include

"ros/ros.h"

#include

"test_service/my_srv.h"

#include

intmain

(int argc,

char

**ar**)

ros::nodehandle n;

ros::serviceclient client = n.serviceclient

("add_two_ints");

//建立client

test_service::my_srv srv;

srv.request.a =

atoll

(ar**[1]

);//利用終端傳入兩個引數

srv.request.b =

atoll

(ar**[2]

);if(client.

call

(srv)

)//呼叫service,呼叫成功返回true

else

return0;

}

add_executable

(node_server src/server_main.cpp)

target_link_libraries

(node_server $

)add_dependencies

(node_server $_exported_targets} $

)add_executable

(node_client src/client_main.cpp)

target_link_libraries

(node_client $

)add_dependencies

(node_client $_exported_targets} $

)

ros 建立自己的msg

在使用ros訂閱話題訊息的時候,有些時候為了能夠進行資料型別的轉換或者想實現訊息的傳輸問題時,需要用到自己定義的.msg訊息型別。建立乙個msg檔案,再建立乙個.msg檔案 mkdir msg vi test.msg如下定義 float32 data uint16 size header heade...

ROS2學習 建立自己的ROS2功能包

建立資料夾 mkdir p ros2 ws src cd ros2 ws colcon build1 建立功能包 建立乙個pubsub的包 ros2 pkg create build type ament cmake cpp pubsub改xml檔案裡的郵箱 2 寫發布節點 建立ros2 talke...

gitee建立自己的倉庫並建立新分支

之前一直用github,最近有點小需求,需要用一下碼雲,第一次提交過程中,遇到點小問題,記錄一下!按照官方文件的步驟操作,執行到第三步的時候報錯,第一次報錯資訊忘記儲存了,解決辦法是公升級git到最新版本,公升級方法見部落格 1 首先保證自己的git版本為最新版本 2 按照官方文件的步驟進行 3 執...