4. チュートリアルB: Data VisualizerでROSメッセージを表示する¶
このチュートリアルでは、intdashサーバーに送信されるROSメッセージをVisual M2M Data Visualizer(以下Data Visualizer)で可視化します。
可視化しやすくするため、このシナリオでは、ROSデータの送信時にRawデータではなくJSON形式を使用します。
注釈
この章は前章のチュートリアルから独立しており。この章のチュートリアルのみを実施することが可能です。
4.1. 送信側エッジを準備する¶
送信側の環境に、 使用方法 の手順に従ってintdash Edge Agentおよびintdash Bridgeをインストールしてください。 その上で、以下のように設定を行います。
4.1.1. ROSノードを設定する¶
以下のコマンドを実行し、ワークスペースとなるディレクトリを作成します
$ mkdir -p ~/catkin_ws/src
ワークスペース内に、beginner_tutorialsパッケージを作成します。
$ cd ~/catkin_ws $ cd src/ $ catkin_create_pkg beginner_tutorials
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
ビルドを実行します。
$ cd ~/catkin_ws/ $ catkin_make
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_secret
とmy_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データをパースしてメッセージを取り出す設定を以下のように作成します。
Data Visualizer画面左側の[Data Settings]( )をクリックします。
[Add Group]をクリックします。
New Data Groupが追加されます。
New Data Groupの[Add Data]をクリックします。
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
[OK]をクリックし、[x]をクリックして、元の画面に戻ります。
以上で、データ設定の準備は完了です。
4.3. Data Visualizerでビジュアルパーツを配置する¶
Data Visualizer上に、文字列を表示することができるビジュアルパーツを配置します。 ここでは例としてText Streamを使用します。
Data VisualizerでJSONデータを表示するためのデータ設定を準備する で作成した設定を使って、送信側エッジからのデータをビジュアルパーツにバインドします。
ライブモードになっていることを確認し( アイコンがピンク色)、 をクリックして、表示を開始します。
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に、送信側エッジからのメッセージが表示されれば成功です。