サービスノードを書くさてここでは、("add_two_ints_server")という二つのintegerを受け取りその合計を戻り値にもつサービスノードを作っていきます。ディレクトリを以前のチュートリアル(ROSパッケージを作る)で作成したbeginner_tutorialsのパッケージの中に移動させましょう。beginner_tutorials以前catkinワークスペースで作成したbeginner_tutorialsパッケージに移動してください。~/catkin_ws/src/beginner_tutorialsこのチュートリアルで必要なサービスを作る以前のチュートリアル(ROSのmsgやsrvなどを作る)の指示に従ったことを確認してください。}コード解説さてコードを読み解いていきましょう。beginner_tutorials/AddTwoInts.hは以前作ったsrvファイルを作成したときに生成されたヘッダーファイルです。&amp;res)この関数は、2つのint型を足し合わせる働きのサービスで、srvファイルに定義されたリクエストとレスポンスのタイプを読み込み、booleanを返します。}ここでは、2つのintegerは加えられ、レスポンスの中に保管されます。その後、リクエストとレスポンスのいくらかの情報が、ログに残されます。最後に、サービスは完了したタイミングでtrueを返します。add);ここでは、サービスが生成され、ROSにこのサービスが登録されます。}コード解説さて、コードを読み解いていきましょう。n.serviceClient&lt;beginner_tutorials::AddTwoInts&gt;("add_two_ints");これは、add_two_intsサービスのためのクライアントを作成しています。ros::ServiceClientオブジェクトは、サービスを後で呼び出すために使用します。atoll(argv[2]);ここで、自動生成されたサービスのクラスをインスタンス化し、そのリクエストのフィールドに値を代入します。responseを持ちます。Responseも内包しています。(client.call(srv))これは、実際は、サービスを呼び出します。サービスの呼び出しは待機させられ、呼び出しが終わるとreturnします。サービスコールがうまくいけば、call()は、trueを返却し、srv.responseの中の値が使えます。呼び出しが失敗していたら、call()はfalseを返却し、srv.responseの中の値は、使えません。nodeをビルドするまた、beginner_tutorialsのCMakeLists.txtを編集しましょう。最後に以下を加えます。src/add_two_ints_client.cpp)これは、デフォルトでは、binディレクトリに格納される二つの実行ファイル"add_two_ints_server"と"add_two_ints_client"を生成します。ROSでCMakeを利用するに当たりさらに情報がほしい場合は、CMakeListsをご覧ください。makeをしましょう。makeサービスとクライアントのノードをビルドするまた、~/catkin_ws/src/beginner_tutorials/CMakeLists.txtにあるCMakeLists.txtを編集します。"add_two_ints_client"を生成します。"add_two_ints_client"を生成します。実行ファイルを直接実行することも、rosrunを使って実行することもできます。それらは、ROSのシステムにあなたのパッケージをインストールするときにPATHの邪魔になってしまうので、'<prefix>/bin'の中には、置かれていません。インストール時に、PATHのなかに実行ファイルを入れたい場合は、インストール対象を準備することもできます。方法についてはcatkin/CMakeLists.txtを確認してください。CMakeLists.txtファイルについて詳細を知りたい場合は、catkin/CMakeLists.txtを参照してください。