【ROS2関係トップページへ】
【ROS2レクチャー:初級 -ROS1 style-】
【ROS2レクチャー:初級 -class style-】
【前:ROS2最小構成プログラム:初級 -ROS1 style-】
【前:ROS2最小構成プログラム:初級 -class style-】
【次:ROS2の最小構成subscriber:初級 -ROS1 style-】
【次:ROS2の最小構成subscriber:初級 -class style-】
subscriberとは
subscriberはpublisherが発信した情報を受け取るものであり,publisherが主,subscriberが従である.
基本的にpublisherとsubscriberの関係は1対多である.node内に複数のpublisher/subscriberを持つ場合,nodeとしては多対多となるが.
イメージとしてはSNSの配信者とフォロワーみたいなもの?
topicを説明する公式のアニメーション付き図がすごく分かりやすい.
関連情報
topic
topicとはpublisherとsubscriberのやりとりである.
ROSシステムでは同時に複数のtopicが存在するので区別するために名前が付けられる.これをtopic名と呼ぶ.
関係はpublisherが主でありsubscriberが従である.topic名もpublisherが指定し,subscriberはpublisherが公開しているtopic名を見ていて情報が発信されたら受け取り処理が生じるようになっている.
msg
やりとりするデータそのものはmsgなどと表記する.または,topic messageなど?
利用できる変数の種類はAbout ROS2 interfacesにある.
注意:std_msgsの廃止について
メッセージを「とりあえず」「簡単に」使用するためにこれまでstd_msgsが用意されていた.ROS1時代から,「ほんととりあえずだから!使用は非推奨だから!」と言っていたみたいだけど,とりあえずEloquent Elusorまでは使用できていたがFoxy Fitzroyからいよいよ廃止されるらしい. とは言っても自分のプログラムを作り始めたら内容に合わせて変数名も変えたほうがよいのでtutorialくらいでしか使用しない.std_msgsはexample_interfacesという名前になるらしいので,tutorialみたいなので使う場合には名前を変えれば使えるから問題なし?注意:std_msgsについて
結局,std_msgsについて再度実装された模様です.ただ,中身のコメントを見るとやっぱり「簡易使用で本番用じゃないから」と書いてあました.自分は使わない派.msgはmsgファイルというテキストファイルで記述する.変数の型と変数名を適切にテキスト形式で記述することで,ROS2が勝手にクラス化し使えるようにしてくれる.
ROS2がデフォルトで(とりあえずぱっと使えるように)提供するexample_interfacesプロジェクトにはmsgとして文字stringを扱うメッセージを使える.この時,
- example_interfacesの中のmsgディレクトリの中のString.msgを使う
と考え,利用のためにインクルードするファイルは
#include "example_interfaces/msg/string.hpp"
となる.大文字・小文字の扱いはROS2独自メッセージの作成にて説明する.
またソースの中では,
example_interfaces::msg::String
で表されるクラスとして利用する.
関連コマンド
トピックの表示やコンソールからのデータ取得・データ設定などのコマンドはROS2コマンド一覧のROS2状態確認を参照のこと.
【前:ROS2最小構成プログラム:初級 -ROS1 style-】
【前:ROS2最小構成プログラム:初級 -class style-】
【次:ROS2の最小構成subscriber:初級 -ROS1 style-】
【次:ROS2の最小構成subscriber:初級 -class style-】