0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ROS2 オレ的記録

Last updated at Posted at 2024-07-28

やりたいこと

PC-AとPC-BでNodeを動かして、PCをまたいで通信させたい

作業段取り

PC-A機

  • ROS2インストール
  • ROS2で、sender・receiverモジュールを実装する
    • sender module
      • メッセージを送信し続ける
    • receiver module
      • メッセージを受信し続ける
  • ROS2でpackage化する

PC-B機

  • ROS2インストール
  • Reciver module packageをインストール

PC-A機/PC-B機

  • ROS2通信をセットアップ
  • Sender/Receiver moduleで通信させる

インストール

  • Ubuntu22.04を用意する
  • ROS2をaptでインストール

プログラム確認

実質、send moduleとreceive moduleの確認

demo_nodes_py として、サンプルが存在している。

送信側

ros2 run demo_nodes_py talker

受信側

ros2 run demo_nodes_py listener

実行結果
上段がtalker、下段がlistnerの出力結果

[INFO] [1722148649.885563864] [talker]: Publishing: "Hello World: 43"
[INFO] [1722148650.885543004] [talker]: Publishing: "Hello World: 44"
[INFO] [1722148651.885587654] [talker]: Publishing: "Hello World: 45"
[INFO] [1722148649.888894554] [listener]: I heard: [Hello World: 43]
[INFO] [1722148650.888615317] [listener]: I heard: [Hello World: 44]
[INFO] [1722148651.888136696] [listener]: I heard: [Hello World: 45]

これで、想定していた送受信の準備が整った。ちなみに、プログラム本体は以下のところに配置

/opt/ros/humble/lib/python3.10/site-packages/demo_nodes_py/topics

Pythonなので、listner.pyやtalker.pyをエディタで開けば、プログラムを確認できる

DDSの設定

インストールした状態だと、RTPSが設定済

書かれている通り、ROS_DOMAIN_IDを設定すれば、同一サブネット内で通信される

export ROS_DOMAIN_ID=11

PC-AとPC-BからTalkerを動かして、PC-AでListnerを動かすと、このような出力

PC-A Talker

[INFO] [1722152977.610636752] [talker]: Publishing: "Hi, I am PC-A: 79"
[INFO] [1722152978.610479115] [talker]: Publishing: "Hi, I am PC-A: 80"
[INFO] [1722152979.611647554] [talker]: Publishing: "Hi, I am PC-A: 81"

PC-B Talker

[INFO] [1722152978.198109339] [talker]: Publishing: "Hello, I am PC-B: 21"
[INFO] [1722152979.198202274] [talker]: Publishing: "Hello, I am PC-B: 22"
[INFO] [1722152980.198333266] [talker]: Publishing: "Hello, I am PC-B: 23"

PC-A Listener

[INFO] [1722152977.612724374] [listener]: I heard: [Hi, I am PC-A: 79]
[INFO] [1722152978.203141011] [listener]: I heard: [Hello, I am PC-B: 21]
[INFO] [1722152978.612624961] [listener]: I heard: [Hi, I am PC-A: 80]
[INFO] [1722152979.202909262] [listener]: I heard: [Hello, I am PC-B: 22]
[INFO] [1722152979.613337310] [listener]: I heard: [Hi, I am PC-A: 81]
[INFO] [1722152980.203578031] [listener]: I heard: [Hello, I am PC-B: 23]

とりあえず、やりたいことの前半はできた感じ。何もしなくても通信するのは、想定外の結果。ただ、サブネット上に影響を与えそうなところが気になった(気にしない)。と、思ったら、ROS_LOCALHOST_ONLYがあった。1を設定すると、localhostに絞られる模様

export ROS_LOCALHOST_ONLY=1

今日はここまで

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?