3
Help us understand the problem. What are the problem?

posted at

updated at

ROS2のpublisher/subscriber概要

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-

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?