(3)ROS学習-ROSメッセージとROSサービスを作成します

ROS学習-ROSメッセージとROSサービスを作成します

1つ、msgおよびsrvの紹介

1. msg(メッセージ):msgファイルは、ROSメッセージのフィールドを説明するために使用されるテキストファイルです。これらは、さまざまなプログラミング言語で記述されたメッセージのソースコードを生成するために使用されます。

2. srv(サービス):srvファイルはサービスを記述します。これは、要求と応答の2つの部分で構成されています。

3. msgファイルはソフトウェアパッケージのmsgディレクトリに保存され、srvファイルはsrvディレクトリに保存されます。

次に、msgを使用します

次に、以前に作成したパッケージに新しいメッセージを定義します。

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を開き、次の2行が含まれていて、コメントが付いていないことを確認します。
これらの2行の<!-、->を削除します(行全体が削除されないことに注意してください)

< !--    <build_depend>message_generation</build_depend> -- >

< !--   <exec_depend>message_runtime</exec_depend> -- >

4. catkin_ws / src / Learning_communicationの下にあるCMakeLists.txtを開き、
message_generation依存関係をfind_package関数に追加して、メッセージを生成できるようにします。
以下に示すように、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

表示は次のとおりです。
メッセージタイプには2つの部分があります。

  • Learning_communication / msg-メッセージの場所

  • int64 num
    string first_name
    string last_name
    uint8 age
    uint32スコア–消息名。

3、srvを使用します

以前に作成したパッケージを使用してサービスを作成しましょう。

1. catkin_ws / src / Learning_communicationファイルで、フォルダーを作成してsrvという名前を付けます。このsrvフォルダーで、.srvファイルを作成し、AddTwoInts.srvという名前を付けます。

2. AddTwoInts.srvを開き、次のコンテンツをコピーします。srv
ファイルは、要求と応答の2つの部分に分かれており、「」で区切られていますここで、aとbは要求で、sumは応答です。

int64 a
int64 b
---
int64 sum

3.srvファイルをC ++、Python、その他の言語のソースコードに変換できることを確認する必要があります。(このステップは上記のメッセージを使用して実行されました。ここでは必要ありません)

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

おすすめ

転載: blog.csdn.net/m0_46278925/article/details/113487303