4. チュートリアルB: Data VisualizerでROSメッセージを表示する

このチュートリアルでは、intdashサーバーに送信されるROSメッセージをVisual M2M Data Visualizer(以下Data Visualizer)で可視化します。

可視化しやすくするため、このシナリオでは、ROSデータの送信時にRawデータではなくJSON形式を使用します。

注釈

この章は前章のチュートリアルから独立しており。この章のチュートリアルのみを実施することが可能です。

../_images/intdas-bridge-data-visualizer.ja.png

図 3 Data VisualizerでROSメッセージを表示

4.1. 送信側エッジを準備する

送信側の環境に、 使用方法 の手順に従ってintdash Edge Agentおよびintdash Bridgeをインストールしてください。 その上で、以下のように設定を行います。

4.1.1. ROSノードを設定する

  1. 以下のコマンドを実行し、ワークスペースとなるディレクトリを作成します

    $ mkdir -p ~/catkin_ws/src
    
  2. ワークスペース内に、beginner_tutorialsパッケージを作成します。

    $ cd ~/catkin_ws
    $ cd src/
    $ catkin_create_pkg beginner_tutorials
    
  3. ROS公式チュートリアルのtalkerノードのスクリプトをワークスペースにダウンロードします。

    $ cd beginner_tutorials/
    $ mkdir scripts
    $ cd scripts/
    $ wget \
      https://raw.github.com/ros/ros_tutorials/indigo-devel/rospy_tutorials/001_talker_listener/talker.py
    $ chmod +x talker.py
    
  4. ビルドを実行します。

    $ cd ~/catkin_ws/
    $ catkin_make
    
  5. launchファイル( ~/catkin_ws/sender.launch )を作成し、talkerノードとintdash_bridgeノードの起動を以下のように設定します。

    パラメーター fifo_tx_json では、intdash Bridgeからintdash Edge Agentにデータを渡すためのFIFO(logger_001.tx)を設定しています。

    sender.launch

    <launch>
        <node name="talker" pkg="beginner_tutorials" type="talker.py" />
        <arg name="paramsfile" default="/opt/vm2m/etc/params.yaml" />
        <group ns="intdash">
        <node pkg="intdash_bridge" name="intdash_bridge" type="intdash_bridge_node"
        output="screen" clear_params="true">
            <param name="fifo_tx_raw" value="" />
            <param name="fifo_rx_raw" value="" />
            <param name="fifo_tx_json" value="/opt/vm2m/var/run/intdash/logger_001.tx" />
            <rosparam command="load" file="$(arg paramsfile)" />
        </node>
        </group>
    </launch>
    

4.1.2. 送信側intdash Edge Agentを設定する

intdash Edge Agentの設定ファイルmanager.confで、以下のように設定します。

主な設定内容:

  • 送信側エッジの認証情報(クライアントシークレット)とUUID( my_secretmy_id

  • intdashサーバーのホスト名+ドメイン名(FQDN) ( host )

  • intdash Bridgeからデータを受け取るFIFO( logger_001.tx を使用し、チャンネル1を付与)

注釈

旧来のエッジの認証情報(トークン)を使用する場合は、 my_secret の代わりに my_token をご使用ください。

manager.conf

{
   "manager":{
      "workdirs":[
         "/opt/vm2m/var/lib/intdash/meas",
         "/opt/vm2m/var/run/intdash"
      ],
      "rawdir":"/opt/vm2m/var/lib/intdash/raw",
      "meas_root":"/opt/vm2m/var/lib/intdash/meas",
      "basetime":"/opt/vm2m/var/run/intdash/basetime",
      "stat":"/opt/vm2m/var/run/intdash/manager.stat",
      "system_stat":"/opt/vm2m/var/run/intdash/system.stat",
      "process_stat":"/opt/vm2m/var/run/intdash/process.stat",
      "wwan_stat":"/opt/vm2m/var/run/intdash/wwan.stat",
      "filters":[]
   },
   "clients":[
      {
         "protocol":"mod_websocket.v2",
         "type":"realtime",
         "my_secret":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
         "my_id":"XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
         "connection":{
            "host":"xxxxxxx.intdash.jp",
            "path":"/api/v1/ws/measurements"
         },
         "fifo_rx":"/opt/vm2m/var/run/intdash/client_realtime.rx",
         "fifo_tx":"/opt/vm2m/var/run/intdash/client_realtime.tx",
         "path":"/opt/vm2m/sbin/intdash-edge-client",
         "stat":"/opt/vm2m/var/intdash/client_realtime.stat",
         "fast_net_check_cmd":"/opt/vm2m/bin/intdash-edge-networkd.sh -q -t"
      },
      {
         "protocol":"mod_http",
         "type":"resend",
         "my_secret":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
         "my_id":"XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
         "connection":{
            "host":"xxxxxxx.intdash.jp",
            "path":"/api/v1/measurements"
         },
         "fifo_rx":"/opt/vm2m/var/run/intdash/client_resend.rx",
         "fifo_tx":"/opt/vm2m/var/run/intdash/client_resend.tx",
         "path":"/opt/vm2m/sbin/intdash-edge-client",
         "stat":"/opt/vm2m/var/run/intdash/client_resend.stat",
         "fast_net_check_cmd":"/opt/vm2m/bin/intdash-edge-networkd.sh -q -t"
      }
   ],
   "loggers":[
      {
         "devicetype":"intdash_bridge",
         "path":"",
         "connections":[
            {
               "fifo_tx":"/opt/vm2m/var/run/intdash/logger_001.tx",
               "channel":1
            }
         ],
         "details":{
            "plugin":"fifo"
         }
      }
   ]
}

4.1.3. 送信側intdash Bridgeを設定する

intdash Bridge用パラメーター設定ファイル( /opt/vm2m/etc/params.yaml )を以下のように作成します。

ここでは、トピック "/chatter"を、jsonモードでintdashに送信するように設定しています。

params.yaml

outgoing:
  enabled: true
  buffering: false
  advertise_interval: 5
  max_array_size: 500
  topics:
  - topic_name: "/chatter"
    send_mode: "json"
    queue_size: 100

incoming:
  enabled: false
  queue_size: 100
  suffix: ""

jsonモードを指定したことにより、ROSメッセージは、以下のようなデータポイントとしてintdashサーバーに送信されます。 hello world の後の数値は時刻です。

  • データタイプ: String

  • データID: /chatter

  • チャンネル: 1

{"msg":{"/chatter/data":"hello world 1624436069.38"}}

4.2. Data VisualizerでJSONデータを表示するためのデータ設定を準備する

intdashサーバーに送信されたJSONデータをData Visualizerで可視化するためには、Data Visualizerでデータ設定を行う必要があります。 JSONデータをパースしてメッセージを取り出す設定を以下のように作成します。

  1. Data Visualizer画面左側の[Data Settings]( data-settings )をクリックします。

  2. [Add Group]をクリックします。

    ../_images/data-viz-add-group.png

    図 4 グループの追加

    New Data Groupが追加されます。

  3. New Data Groupの[Add Data]をクリックします。

    ../_images/data-viz-add-data.png

    図 5 データの追加

  4. String型データをJSONとしてパースし、 msg 内の /chatter/data の値を文字列として取り出す設定をします。

    • Data Name: 分かりやすい任意の名前

    • Target Data:

      • Data Type: String

      • Data ID: /chatter

      • Channel: 1

    • Conversion Settings:

      • Conversion Type: As JSON

      • Field Path: msg./chatter/data

      • Value Type: String

    ../_images/data-viz-json-parse-setting.png

    図 6 データ設定

  1. [OK]をクリックし、[x]をクリックして、元の画面に戻ります。

以上で、データ設定の準備は完了です。

4.3. Data Visualizerでビジュアルパーツを配置する

  1. Data Visualizer上に、文字列を表示することができるビジュアルパーツを配置します。 ここでは例としてText Streamを使用します。

    ../_images/text-stream-visual-part.png

    図 7 Text Stream

  2. Data VisualizerでJSONデータを表示するためのデータ設定を準備する で作成した設定を使って、送信側エッジからのデータをビジュアルパーツにバインドします。

    ../_images/bind-data.png

    図 8 送信側エッジを選択し、パース設定を選択する

  3. ライブモードになっていることを確認し( live-mode アイコンがピンク色)、 play をクリックして、表示を開始します。

4.4. メッセージの送信を開始する

ワークスペースで setup.bash を実行することによりワークスペースの設定を有効にし、 roslaunch によりtalkerと送信側intdash Bridgeを起動します。

$ cd ~/catkin_ws
$ source devel/setup.bash
$ roslaunch sender.launch

別のターミナルで、以下のコマンドを実行してintdash Edge Agentを起動します。

$ sudo LD_LIBRARY_PATH=/opt/vm2m/lib /opt/vm2m/sbin/intdash-edge-manager -C manager.conf

Data Visualizerに、送信側エッジからのメッセージが表示されれば成功です。

../_images/chatter.png

図 9 Text Streamでのメッセージの表示