こんにちは。
Published to a Topic
2Hzで/counterにInt32の値をpublishするサンプルが書いてありました。
・topic_publisher.pyのパーミッション変えないと実行できないから注意。
Checking That Everything Works as Expected
サンプルがちゃんと動いてるか確認方法が載ってました。
$ rostopic hz counter
想定している頻度でpublishされているか確認するコマンド。
その他は$ rostopic -h で確認できる。
Subscribing to a Topic
/counterというtopicをsubscribeするサンプルが載ってました。
callbackでmsgを表示するだけ。
Checking That Everything Works as Expected
サンプルをrosrunして、rostopic pubでcounterをpublishして、rostopic info counterでpub/subともに想定通りか確認。
Latched Topics
頻繁にpublishしないtopicの場合、subscribe側がtopicを受け取れないことがある。
(例: mapトピックは基本的に変わらないので、map_serverがdiskから読み込む際に一度だけpublishされる)
Publisherを定義する際にlatchedオプションをTrueにすることで、Subscribe側が自動的に一番最後にPublishされたtopicを読むことができる。
pub = rospy.Publisher('map', nav_msgs/OccupancyGrid, latched=True )
Defining Your Own Message Types
・型に注意。
例えばUInt8がC++だとunsignedだがPythonはsignedで扱われるので、想定と異なる振る舞いをする可能性があるのでC++とPython共存するときは注意
・msgディレクトリのファイルはどの言語を使う場合でも参照される。
独自で定義した場合はPythonを使う場合でもcatkin_makeを実行すること。
独自で定義した場合はPythonを使う場合でもcatkin_makeを実行すること。
独自の型の作り方の例は、実数と虚数を持つComplex.msgをbasicsパッケージに作る
ケースを取り上げてました。
詳細は小倉さん本とかぶるので省略。
Using Your New Message
作ったComplex.msgを使ったサンプルが乗ってました。
使い方はいつものようにimportするだけなので省略。
When Should You Make a New Message Type?
Q:いつ作るか?
A:必要になったときだけ。以上
結構充実してるので使い回せないか確認してから作ろう。
Mixing Publisher and Subscriber
PublisherとSubscriber両方もつ例がここまでなかったのでサンプルを例示していた。
publishは新しいデータが来たときだけ送りたいのでcallbackで実行。
Summary
ROSの通信の基本中の基本topicsについてまとめたよ。
サンプル実際に使うとき使えるから参考にしてねとのこと。
あとはwiki参照とのこと。http://wiki.ros.org/Topics?distro=indigo
以上、3章を読んだメモでした。
サンプルとかは小倉さんの本とほぼ一緒ですが、細かい部分の話が参考になる部分もありました。
次は今までTopicで事足りてたので全然使ったことがないChapter4のServiceを読む予定。
あ、あとrostest使ってみたら意外と情報がググってもわからなかったので手探りでやったのをまとめる予定。
0 件のコメント:
コメントを投稿