2009年12月18日金曜日

メッセージとサービスを作る

いよいよROSっぽくなってきましたね。

msgとsrvの作成
http://www.ros.org/wiki/ROS/Tutorials/CreatingMsgAndSrv

ここで出てくるコマンド
rosmsg, rossrv, roscp, rosmake

msgファイル:ROSのメッセージを定義するファイル
ROSのメッセージとは公開構造体みたいな感じかな?

srvファイル:ROSのサービスを定義するファイル
こっちは返り値ありのAPIかな?

チュートリアルはそんな詳しい説明もなくつづきます。

$ roscd beginner_tutorials
$ mkdir msg
$ echo "int64 num" > msg/Num.msg

CMakeLists.txtの20行目の
#rosbuild_genmsg()
のコメントをはずして
rosbuild_genmsg()
とします。

この段階ですでに
$ rosmsg show [message type]
を使って

$ rosmsg show beginner_tutorials/Num
とすると
int64 num
と中身が見れます.

パッケージ名は省略できて

$ rosmsg show Num
とすると
 [beginner_tutorials/Num]:
int64 num

次はサービス。

$ roscd beginner_tutorials
$ mkdir srv

srvは作るんじゃなくてコピーして持ってきます。
コピーはroscpを使うと便利。


$ roscp [package_name] [file_to_copy_path] [copy_path]

$ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
中身は

int64 a
int64 b
---
int64 sum

なんだ、簡単じゃん。

CMakeLists.txtの22行目の
#rosbuild_gensrv()
のコメントを外しましょう。

次はrossrv。文法はrosmsgとまったく同じですね。
$ rossrv show


$ rossrv show beginner_tutorials/AddTwoInts
で中身が見れます。

で、もういちどmakeします。
$ rosmake beginner_tutorials
最後に復習。



  • rospack = ros+pack(age) : provides information related to ROS packages
  • rosstack = ros+stack : provides information related to ROS stacks
  • roscd = ros+cd : changes directory to a ROS package or stack
  • rosls = ros+ls : lists files in a ROS package
  • roscp = ros+cp : copies files from/to a ROS package
  • rosmsg = ros+msg : provides information related to ROS message definitions
  • rossrv = ros+srv : provides information related to ROS service definitions
  • rosmake = ros+make : makes (compiles) a ROS package

0 件のコメント:

コメントを投稿