分散組込みシステム向き
Web
ベース開発環境
Blue-Sky
の
ROS
拡張
アモーン タ マ ウ ッ ト プラ ウ ィ ーン
1,a)早川 栄一
2,b)概要: 我々 が開発し ている 分散組込みシステム向きWebベース開発環境Blue-Skyから 、 ロ ボッ ト フ レ ー ムワ ークROS対応の各種デバイ スを 利用する ためにに拡張し た. Blue-Skyと ROSと では通信モデルが 異なる こ と から , Blue-Skyを 拡張し , ROSのpublish/subscribe通信を ハン ド リ ン グ可能にし た. ま た,
roscoreが持つ通信に関する 情報を 取得する こ と で, Blue-Skyと ROSのノ ード が混在し た環境において ,
両ノ ード の状態の監視や通信状態のト レ ースを 行う 事が可能にな っ た.
キーワ ード : CPS, IoT, Blue-Sky, Web, ROS,分散組込みシステム
ROS Extension of Blue-Sky Web based Development
Environment for Distributed Embedded Systems
Praween AMONTAMAVUT
1,a)Eiichi HAYAKAWA
2,b)Abstract: We extended Blue-Sky that we are developed, to support ROS that is a robotic framework, featuring the web based development environment for distributed embedded systems. The ROS is a framework based on publish/subscribe messaging model. Whereas, Blue-Sky has a different messaging model with ROS. In order to solve the problem, we extended Blue-Sky for enabling publish/subscribe messaging model of ROS , then we collect the messaging data from roscore in order to reduce the confusion among Blue-Sky and ROS nodes with tracing and monitoring the both nodes accessing status.
Keywords: CPS, IoT, Blue-Sky, Web, ROS, Networked Embedded System
1.
はじ めに
近年, CPS[1]やIoT[2]と いっ た, ネ ッ ト ワ ーク に 接続 さ れた複数の組込みデバイ スを 用いて セン サデータ の取得 や加工, 物理世界の操作な ど を 行う システムが数多く 登場 し て いる . こ れに伴い, 組込みシステムおよ びネ ッ ト ワ ー ク シス テム の両方に 精通し たエン ジニア の育成[3][4]が必 1 拓殖大学大学院工学研究科電子情報工学専攻Takushoku University, Graduate School of Engineering, Electronics and Information Sciences
2 拓殖大学工学部情報工学科
Takushoku University, Faculty of Engineering, Department of Computer Science a) praween@hykwlab.org b) hayakawa@cs.takushoku-u.ac.jp 要と さ れて いる . 特に , 従来のシ ン プ ルな セ ン サやア ク チュ エータ だけ ではなく , 複数のセン サが搭載さ れたセン サボード や, ロ ボッ ト と いっ たデバイ スを 遠隔から 操作す る こ と も 行われて いる . こ のよ う な 状況に対し て , 拓殖大学工学部早川研究室で は, 分散組込みシステムの教育や開発を 対象と し たフ レ ーム ワ ーク である Blue-Sky[5]の開発を 行っ て いる . Blue-Sky は, IoTを 主な 対象と し て , Linuxが動作する 組込み機器 のマ シン 管理およ び監視システム と , 通信状態やマ シン の 監視を 行う ゲート ウ ェ イ , およ びWebブラ ウ ザベース の 開発環境を 提供する こ と で, イ ン スト ールのコ スト を 下げ つつ, 多く のマ シン の操作およ び管理を 可能にする フ レ ー ムワ ーク である . こ れを 用いて , 演習室など でのIoTの教 2016/3/24
育環境[5]およ びシステム開発を 行う こ と を 想定し て いる . し かし , Blue-Skyでは, 組込み機器に 搭載する デバイ スは, GPIOやSPIと いっ た低レ ベルなイ ン タ フ ェ ースへ ア ク セ ス するAPIだけ を 提供し て いる . こ れは, 当初の タ ーゲッ ト デバイ ス がRaspberry Piな ど のCPUボード であり , シン プルなデバイ スだけ を 対象と し て いたためで ある . し かし , 最近のIoTシステムでは, セン サボード や ロ ボッ ト など 高機能かつ複雑な デバイ スプロ グラ ミ ン グを 必要と する デバイ スを 扱う こ と も 増え て き て いる . こ のこ と から , Blue-Skyにおいて も , こ のよ う なデバイ スに対応 する 必要が出て き た. こ のよ う な 問題に 対し て , 我々 はロ ボッ ト ア プ リ ケ ー ショ ン 開発のフ レ ームワ ーク であるROS[6][7]に着目し た. ROSは, ハード ウ ェ ア抽象化機構, デバイ スド ラ イ バ, ラ イ ブラ リ 群, 可視化ツ ール, pub/subの基づいたメ ッ セー ジ通信, およ びパッ ケージ管理を 提供し , 複数コ ン ポーネ ン ト に お け る ア プ リ ケ ーシ ョ ン 開発を サポート し て いる オープン ソ ースプロ ジェ ク ト である . 現在, 多く のデバイ ス ベン ダがROS対応のラ イ ブラ リ を 公開し て いる こ と か ら , デバイ スに関する 複雑な プロ グラ ミ ン グを 行う こ と な く , セン サやアク チュ エータ , さ ら にはロ ボッ ト など を 利 用する こ と ができ る . そ こ で, 本研究の目的は, IoTの学習者を 対象と し て , Blue-Skyから ROS対応の各種デバイ ス を 扱え る よ う に , システム を 拡張する こ と である . ROSと Blue-Skyでは通 信のモデルが異なる こ と から , こ れら の違いを 吸収する 機 構を 設計実装し た. ま た, ROSおよ びBlue-Skyのノ ード が混在する 環境において, Blue-Skyが提供する 監視およ び 可視化システムを 利用でき る よ う にする こ と で, Blue-Sky の開発環境内でシステム全体での動作を 理解し やすく する こ と が可能にな っ た.
2.
ROS
本章ではROSについて 述べる . ROSは, ロ ボッ ト ソ フ ト ウ ェ ア の開発を 目的と し た フ レ ーム ワ ーク であ る . ROSは, コ ン ピ ュ テ ーショ ン を 行 う プロ セ ス であ る 各ノ ード を XML-RPC[8]ベース に おけ る publish/subscribe (pub/sub)通信する こ と に よ っ て 動 作する . 本報告で対象と する ROSのコ ン ポーネ ン ト は次の三つ である . 1) プロ ジェ ク ト の作成ツ ール群 作成ツ ール群はCMake マ ク ロ のビルド パッ ケ ージであ る catkin[9]のコ マ ン ド 群によ っ て ワ ーク スペースや複数階層で作成可能な パッ ケ ージと し て 構成さ れる . ROSパッ ケ ージはこ のマ ク ロ 群で宣言さ れたパッ ケ ージラ イ ブラ リ を 指定 する こ と によ っ て catkinによ る ビルド が可能である . こ れら のツ ール群やラ イ ブラ リ はシステム開発を 行う OS上にイ ン スト ールする 必要がある . 2) ノ ー ド の 可 視 化 ツ ー ル 可 視 化 ツ ー ル と し て は rqt graph[10]を 提供し て いる . ROSのノ ー ド [7]は 実行さ れて いる プロ セスのこ と を 定義し て いる . さ ら に , ROSはモジュ ール化さ れて いて , ノ ード はソ フ ト ウ ェ ア のモ ジュ ールや実行自体そ のも のと する こ と も 可能である . こ れで, rqt graphは各ROSのコ ン ピ ュ ーテショ ン と いう ノ ード の状態や通信間の繋がり を 可視する プラ グイ ン である .3) pub/subの 通 信 を 処 理 す る publisher ROS は ,
roscore[11]と 呼ぶ基本的なプロ グラ ムやノ ード の集合 である . ノ ード 間で通信する 場合には,roscoreはROS のパッ ケージで作成さ れたプロ グラ ム やノ ード のデー タ を publish/subscribe(以下, pub/sub)のメ ッ セージ ン グ方式で収集し , “/rosout”[12]のト ピッ ク でロ グを publishする 機能を 持つ. ち な みに , pub/sub通信モ デルは, 非同期モデルであり メ ッ セージの送信者であ る publisherは受信者である subscriberの情報を 持た ずにメ ッ セージを 送る . subscriberは, publisherの情 報を 持たずに, 受信対象と なる ク ラ スだけを 指定し , そ のク ラ スのメ ッ セージだけ を 受け 取る . こ のため, 送 信者と 受信者と は疎結合であり , スケ ーラ ブルな シス テム を 作る こ と ができ る . 一つのROSの基に 作成さ れたすべて のプロ グラ ム群やノ ード の状態は, roscore から 取得する こ と が可能である .
3.
問題分析
我々 の開発し たフ レ ームワ ーク である Blue-Skyを ROS に適用する 場合の問題点は次のと おり である . 1) Blue-Skyと ROSと での提供する 機能の違い: ROSは, 各OSに 属する 言語のラ イ ブラ リ やそ のビ ルド シス テ ム ま で統合さ れた シス テ ム であ る . 一方,Blue-Skyは, サーバが提供する Blue-Sky APIを 用い
て デバイ スの機能を 呼び出すこ と で, アプリ ケ ーショ ン を 構築し , 実行する . ROSのロ ボッ ト ア プリ ケ ー ショ ン から Blue-Skyの機能を ア ク セ ス 可能に する に は, 低オーバヘッ ド でこ の二つの仕組みを 繋ぐ 必要が ある . 2) Blue-Skyと ROSと の通信: ROSのノ ード の状態を 取得する 場合, roscoreと の通 信が必要と な る . roscoreと の通信は, pub/sub通信 モデルによ る が, Blue-SkyはHTTPによ る 通信を 基 本と し て いる こ と から , こ の二つの通信モデルを 変換 する 必要がある . Blue-Skyの開発観葉は, ブラ ウ ザ上 でJSONベース で通信を 行う た めに , ROSがベース に し て いる XML-RPCのデータ 形式を そ のま ま 扱う こ と ができ な い. ま た , Blue-Skyの開発環境[5]は, Javascriptを 利用し たブラ ウ ザアプリ ケ ーショ ン な の 2016/3/24
で, roscoreのXMLデータ 形式を 利用する こ と が難 し い. 3) Blue-Sky上でのROSの可視化のための拡張: ROSはrqt graphと 呼ぶ可視化ツ ールを 備え て いる が, 単一のツ ールであり , システムのイ ン スト ールや 設定が必要であり , 複数台数を 管理し なけ ればいけ な い教室環境において は管理コ スト が上がる . ま た, 複 数のツ ールを ま たいで利用する こ と は, 利用者の利便 性を 阻害する こ と にな る .
4.
設計方針
前章の問題分析に 対し て , 我々 が開発し たBlue-Skyの 環境を ROSに 適用可能に 拡張する こ と で対応する . 拡張 する 部分は次の2 点である . 1) Blue-Skyの開発ラ イ ブラ リ のROS拡張:Blue-Skyで組んだIoTアプリ ケーショ ン から ROSの
ノ ード が提供する デバイ ス に 低オーバヘッ ド でア ク
セ ス でき る よ う に する . こ れに よ り , Blue-Skyから
ROSが提供する 高水準な APIを 備え たデバイ ス を 利
用する こ と が可能にな る .
2) Blue-Skyの可視ツ ールのROS可視ツ ール拡張:
Blue-SkyのWebベース開発環境でブラ ウ ザ上に
Blue-Skyのノ ード と ROSのノ ード の両方を 可視化可能に する. こ れによ り , 開発者や学習者は各ノ ード の状態 や通信を 監視する こ と ができ る . IoTでは, 多く の機 器の状態の監視や, 通信オーバヘッ ド によ る プロ グラ ムでの対応な ど が必要になる こ と から , そのよ う な課 題を 容易に行え る よ う にする .
5.
設計
5.1 全体構成 図1に シ ス テ ム の全体構成を 示す. 本報告では, 利用 者はBlue-Skyの開発環境およ びノ ード を 利用し , さ ら に そ こ から ROSが動作する ノ ード を 利用する こ と が可能に な る . Blue-Skyのサーバは, ROSと 通信を する た めに , Multi-purpose Handlerと 呼ぶプロ ト コ ル変換の機構を 実 装し た . こ の機構を 用いて , roscoreのト ピ ッ ク を ハン ド ルする こ と で, ROSノ ード のデータ を 取得する こ と が可能 にな る . そし て,ROSノ ード の状態は本システムのskycoder[5]で 可視化する . 可視化データ はJSON形式にする ため,Blue-Skyサー バのMulti-purpose Handlersで , XML-RPCを
JSON-RPC[13]に変換する 機能を 追加する こ と で行う .
5.2 ROS-Blue-Skyプロキシ
Blue-Skyから ,ROSの各ノ ード を 呼び出すために,roscore
が動作する シス テム 上でBlue-Skyと の通信を 行う プロ キ シを 起動する . プロ キシは次の役割を 持つ. An App (Skycoder) An App (Skycoder) An App (Skycoder) ROS ROS node1 ROS node2 Blue-Sky ROSCORE Blue-Sky servers with gateways Subscription Topic
ED node Private Cloud Storage
Handling ROS of Blue-Sky
Blue-Sky API (Public or Private) ED node ED node ED node Proxy node Multi-purpose Handlers 図1 Blue-SkyのROS拡張モデル Fig. 1 ROS Extensional Model of Blue-Sky
• Blue-Skyから のト ピ ッ ク ア ク セ ス 要求を ROSの各
ノ ード への通信に置き 換え る
• ROSから 生成さ れたデータ を Blue-Sky gatewayに中
継する • roscoreに対し て , 各ノ ード の操作を 依頼する • ノ ード 名の管理 • 通信オーバヘッ ド の測定 プロ キシは, ROSのノ ード の一つと し て 扱われて いる . こ のよ う な 設計にする こ と で, 他のノ ード やラ イ ブラ リ を 変更する こ と な く , その機能を 利用する こ と ができ る . ま た, プロ キシは, pub/sub通信の時間情報を 取得し , それ を Blue-Skyへ送信する こ と でノ ード の通信オーバヘッ ド を 測定する .
# F l a s h i n g LED and getting the light # sensor data for 10 times . loop 10
lsn 1 7 2 . 1 6 . 4 . 1 0 3 gpio set 22 1 # EDの利用node sleep 300
lsn 1 7 2 . 1 6 . 4 . 2 2 2 get a 3 0 # EDの利用node sleep 600
lsn ros :// node0 / onLed #ノ ード の利用ROS sleep 600
lsn ros :// node0 / offLed #ノ ード の利用ROS sleep 600
end
図2 コ マ ン ド ラ イ ン によ る ROSノ ード へのアク セス例 Fig. 2 Example to access ROS node in command line interface.
/**
* F l a s h i n g LED and getting the light sensor data * for 10 times with API o r i e n t e d f u n c t i o n . */ for ( var i = 0; i < 10; i ++) { l _ s e n s o r n e t w o r k ( " 1 7 2 . 1 6 . 4 . 1 0 3 " , " gpio " , " set " , "22" , "1"); Sleep (300); l _ s e n s o r n e t w o r k ( " 1 7 2 . 1 6 . 4 . 2 2 2 " , " get " , " a " , "3" , "0"); Sleep (600);
l _ s e n s o r n e t w o r k (" ros :// node0 / onLed "); Sleep (600);
l _ s e n s o r n e t w o r k (" ros :// node0 / offLed "); Sleep (600);
}
図3 Javascriptによ る ROSノ ード へのアク セス例 Fig. 3 Example to access ROS node in Javascript
図2はBlueSkyから ROSノ ード を 利用する 例であ る .
skycoderのコ マ ン ド ラ イ ン から 利用する 場合, ros://ノ ー
ド 名/ト ピ ッ ク 名で, rosのノ ード と ト ピ ッ ク を 指定する .
例では, node0に おいて onLedと offLedと いう ト ピ ッ ク
がすでに 定義さ れて いる 場合は, Blue-SkyのEDノ ード と 同じ アク セスメ ソ ッ ド によ っ て アク セスする こ と ができ る . skycoderでJavascriptを 用いたプロ グラ ムの例を 図3 に示す. こ れも , Blue-Skyのノ ード と 同じ メ ソ ッ ド によ っ て アク セスする こ と が可能である . 5.3 roscoreから の情報取得機能 roscoreから 通信に関する 情報取得を 行う ために,
Blue-Skyサーバ上に Multi-purpose Handlersと 呼ぶハン ド ラ
を 提供する . 本機能はroscoreのXML-RPCのメ ソ ッ ド を
Blue-Skyサーバから 呼び出すために用いる .
<? xml v e r s i o n = ’1.0 ’? > < methodCall > < methodName > g e t S y s t e m S t a t e </ methodName > < params > < param >
< value > < string >/ rosnode </ string > </ value > </ param > </ params > </ methodCall >
図4 Multi-purpose Handlersに追加し たroscoreに対する ハン ド リ ン グRPCの呼び出し メ ゾッ ド
Fig. 4 Calling Method of RPC Handling Roscore Added to Multi-purpose Handlers. 図4にROSで用いるXML-RPCの呼出し メ ソ ッ ド 例を 示す. こ のデータ を 本サーバのハン ド リ ン グでroscoreに 渡し , ROSのノ ード XMLデータ を 取得する . そし て , 図 5のよ う にJSONのロ グに変換し , Blue-Sky上のスト レ ー ジへ格納し たり , skycoderに提供する . XML-RPC response data: <?xml version=’1.0’?> <methodResponse><params><param><value> <array><data><value><int>1</int></value> <value><string>current system state</string> </value>...</param></params></methodResponse>
converted to JSON-RPC
{‘‘ETLog’’:{‘‘ros’’:{‘‘jsonrpc’’:{‘‘jsonrpc’’: ‘‘2.0’’,‘‘result’’:{{‘‘params’’:{‘‘param’’:
{‘‘value’’:{‘‘array’’:{‘‘data’’:{‘‘value’’:[{‘‘int’’:1}, {‘‘string’’:’’current system state’’}...}}}}}
図5 Serializing the Response Data to JSON-RPC Fig. 5 応答データ を JSON-RPCに変換する. 5.4 ROSノ ード 可視ツ ールの設計 ROSノ ード に ついて も , Blue-SkyのEDノ ード と 同じ よ う に可視化可能なよ う に, skycoder上の可視化ツ ールを 拡張し た. ROSのノ ード を ブラ ウ ザ上で可視化する には, 本システムのMulti-purpose Handlersによ っ て変換さ れた JSON形式のROSノ ード データ を 取得し , 本シス テム で 扱っ ている 可視化ラ イ ブラ リ である visjs[14]のdataset[15] にマ ッ ピ ン グし た後にNetwork[16]可視化モジュ ールで表 示する . マ ッ ピ ン グオーバヘッ ド を 減ら すた めに , ROS ノ ード が起動さ れな いかroscoreが起動し て いな い場合は 可視化の処理を し な いよ う に設計する . こ れに よ っ て , ROSノ ード に 対し て も , 従来の可視化 ツ ールのよ う に開発環境上にイ ン スト ールする 必要な く 利 用する こ と が可能にな っ た.
6.
評価
本節は実現およ び評価について 述べる . 表1 ROS実験環境Table 1 Environment for ROS Implement Experiment. System Name Specification Unit
ROS ・ indigo 1
GUEST OS ・ Ubuntu 14.04.3 LTS 1 HYPERVISOR ・ VMware Player v. “7.1.2” 1 NATIVE OS ・ Ubuntu 12.04.5 LTS 1
・ Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz.
表1に 本シス テム の実装実験に おけ る ROS実験環境を
示す. ROSはindigoを 仮想マ シン に イ ン ス ト ールし , 次
の二つのワ ーク スペースを 作成する .
図7 rqt graph of ROS Fig. 7 ROSのrqt graph
• ワ ーク スペース1: nodenameのパッ ケージを 作成し nodenameと いう ノ ード 名を 初期化する std msgの標 準出力にメ ッ セージを 送信する アプリ ケ ーショ ン • ワ ーク スペース2: rosjavaのパッ ケージを 作成し , デ フ ォ ルト に 提供さ れて いる Talkerと Listenerのア プ リ ケ ーショ ン roslunchや roscoreを 起動さ せて , 各ワ ー ク ス ペー ス 2016/3/24
40 50 60 Ro u n d T rip T im e d ela y (RT T ) [m sec ]
RTT of Extensional Library of Blue-Sky for ROS
0 10 20 30 0 50000 100000 150000 200000 250000 300000 350000 400000 450000 500000 Ro u n d T rip T im e d ela y (RT T ) [m sec ] 0 50000 100000 150000 200000 250000 300000 350000 400000 450000 500000
Flashing LED Time [msec]
図6 Blue-SkyのROS拡張ラ イ ブラ リ アク セスの往復遅延時間
Fig. 6 RTT of Flashing LED Execution of Extention Library of Blue-Sky for ROS
図8 Physical Embedded Device Nodes Fig. 8 物理的な 組込み機器のノ ード
のア プ リ ケ ーシ ョ ン を 起動する . こ こ で, 図7のよ う に
rqt graphでROSノ ード を 表示する .
Starting ROS
Starting ROS
図9 Blue-SkyのskycoderでROSノ ード の可視 Fig. 9 Visualizing the ROS Nodes with Skycode of Blue-Sky
そし て, 表2に示し たよ う にBlue-Skyのシステムを 起動
し,ワ ーク ス ペース2のア プリ ケ ーショ ン の初期化を 行っ
た後, 本拡張ラ イ ブラ リ を 用いて アプリ ケ ーショ ン を 作成 する .
1) Blue-SkyのROS拡張ラ イ ブラ リ を ROSのパッ ケ ー
ジにおけ る “lib”に入れる . 2) 表2に 示し た よ う に 100Base-TXで 接続し た Rasp-berry Pi上で動作する Blue-Skyの組込み機器ノ ード 上のLEDを 2秒ずつに 点滅する ア プリ ケ ーショ ン を 作成する . 表2 Blue-Sky実験環境 Table 2 Environment of Blue-Sky.
System Name Specification Unit
Skycoder
Browser ・ Google Chrome 1 v. “48.0.2564.103 m”
OS ・ Windows 7
・ Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
Blue-Sky servers
JAVA ・ java version “1.7.0 55” 2 OpenJDK Runtime Environment(IcedTea 2.4.7) OS ・ Ubuntu 13.10 ・ AMD Athlon(tm) II X2 260 Processor Raspberry Pi
JAVA ・ java version “1.8.0” 4 ・ Java(TM) SE Runtime Environment OS ・ Debian GNU/Linux 7.8 (wheezy) ・ Arm (BCM2708) Intel Edison
JAVA ・ java version “1.8.0 25” 1 ・ Java(TM) SE Runtime
OS ・ Linux 3.10.17-poky-edison+ ・ Genuine Intel(R)
CPU 4000 @ 500MHz
KZM-A9 Platform ・ Android v. “2.2” 1 ・ Linux Kernel v. “2.6.29” こ れによ っ て, 図8のよ う に物理的な組込み機器のLED が2秒ずつに点滅する こ と で動作を 確認し た. さ ら に, 本 シス テム のskycoder上に 図9はワ ーク ス ペース1と ワ ー ク ス ペース 2で作成し た ROSのノ ード を 表示する こ と が でき た. 2016/3/24
8分間実行し た場合のRTTは, 図6のよ う になっ た. 本 拡張ラ イ ブラ リ のRTTは平均19.897ミ リ 秒であり , 下限 値は12∼53ミ リ 秒と 小さ い値である . こ のこ と から , 拡張 ラ イ ブラ リ と し て は十分な 性能を 持っ て いる も のと 思われ る . 拡張ラ イ ブラ リ と し て 有効である と 考え る . さ ら に, ロ ーカ ルな マ シン でrqt graphを 利用不可能な ROSの開発環境においても , 本可視ツ ールを 利用する こ と に よ っ て , イ ン ス ト ールせずにROSノ ード を 起動する だ けで, ROSノ ード と 本システムのノ ード の同時に容易にト レ ースや監視を 行う こ と が可能にな っ た. こ れは遠隔地に 設置さ れたデバイ スの監視や, 教室のよ う に多く のデバイ スを 扱う 環境では有効である と 考え ら れる . その一方, 各 ノ ード の通信状態の表示は不十分であり , こ の部分には改 善が必要である こ と が明ら かにな っ た.
7.
関連研究
ROS[6][7]のrqt graph[10]はOS上のGUIでROSノ ー
ド を 可視する こ と で, そこ で開発し たROSアプリ ケーショ ン におけるroscore[11]のト ピッ ク を 解析し , ノ ード と し て 表示する も のである . 遠隔地に設置さ れたデバイ スなど のよ う にディ スプレ イ を 持たない環境では, rqt graphで可視する こ と が難し い. 遠隔地のロ ボッ ト やセン サ類を 操作する こ と で, IoTの効 果を 学ばせた い場合に はこ のよ う な 機能では不十分であ る . リ モート デスク ト ッ プ[17]を 用いる こ と も 可能である が, 台数が増え た場合には管理が難し いこ と や, データ 転 送に関する 負荷や遅延が高い. さ ら に , rqt graphはネ ッ ト ワ ーク に 接続する ノ ード を 想定し て いないため, ネ ッ ト ワ ーク 間に実施さ れる ノ ード 間の通信に関する 往復遅延時間の測定を 含めて , ト レ ース や監視が不可能であ る . こ れに 対し て , 本シス テ ム では, 通信時間を 含めた測定や, ノ ード の監視が可能であり , 組 込みシステムと ネ ッ ト ワ ーク の両面を 理解する 必要がある IoTの学習環境と し て は有効である と 考え ら れる .
8.
おわり に
本原稿は分散組込みシス テ ム 向き Webベース 開発環境Blue-SkyのROS拡張の方式と 実装について述べた.
Blue-Skyに 対し て , ROS上のデバイ ス を 扱う た めの拡張を 行 い, ROSの状態の可視化機能を 追加し た. こ れによ っ て , Blue-Skyが備え る Webブラ ウ ザベースの開発/実行環境 上で, ROSと Blue-Skyのノ ード の操作や, 状態監視, 通 信のト レ ースを 透過的に行う こ と が可能にな っ た. 今後の 課題は, 実利用における 評価と , 可視化の見やすさ の改善 およ びプロ グラ ミ ン グシステム の改善である . 参考文献
[1] Lee, E.: Cyber Physical Systems: Design Chal-lenges, Object Oriented Real-Time Distributed Computing (ISORC), 2008 11th IEEE Interna-tional Symposium on, pp. 363–369 (online), DOI: 10.1109/ISORC.2008.25 (2008).
[2] Gubbi, J., Buyya, R., Marusic, S. and Palaniswami, M.: Internet of Things (IoT): A Vision, Architec-tural Elements, and Future Directions, Future Gener. Comput. Syst., Vol. 29, No. 7, pp. 1645–1660 (online), DOI: 10.1016/j.future.2013.01.010 (2013).
[3] 岩野和夫, 高島洋典: サイ バー フ ィ ジ カ ルシ ス テ ム と
IoT(モノ のイ ンタ ネッ ト), 情報処理,Vol. 57, No. 11, pp. 826–834( オンラ イ ン),DOI: 10.1241/johokanri.57.826 (2015).
[4] Rajkumar, R. R., Lee, I., Sha, L. and Stankovic, J.: Cyber-physical Systems: The Next Computing Rev-olution, Proceedings of the 47th Design Automation Conference, DAC ’10, New York, NY, USA, ACM, pp. 731–736 (online), DOI: 10.1145/1837274.1837461 (2010).
[5] ア モーン タ マ ウ ッ ト プラ ウ ィ ーン , 早川栄一: 分散組込 みシステム向き Webベース開発環境, 組込みシステムシ ン ポジウ ム 2015論文集, Vol. 2015, pp. 34–39 (2015). [6] contributors, R.: About ROS, ROS (online), avail-able from hhttp://www.ros.org/about-rosi (accessed 2016-02-01).
[7] Quigley, M., Conley, K., Gerkey, B. P., Faust, J., Foote, T., Leibs, J., Wheeler, R. and Ng, A. Y.: ROS: an open-source Robot Operating System (2009). [8] Merrick, P., Allen, S. and Lapp, J.: XML remote
procedure call (XML-RPC) (2006).
[9] Troy Straszheim, Morten Kjaergaard, B. G.
and Thomas, D.: catkin, ROS (online), avail-able from hhttp://docs.ros.org/api/catkin/html/i (accessed 2015-12-08).
[10] Thomas, D. et al.: rqt graph, ROS (online), available from hhttp://wiki.ros.org/rqt graphi (accessed 2015-12-17).
[11] Thomas, D.: roscore, ROS (online), available from hhttp://wiki.ros.org/roscorei (accessed 2015-12-17). [12] Saito, I.: rosout, ROS (online), available from
hhttp://wiki.ros.org/rosouti (accessed 2015-12-27).
[13] Morley, M. et al.: JSON-RPC 2.0
Specifica-tion, JSON-RPC google group (online), avail-able from hhttp://www.jsonrpc.org/specificationi (accessed 2016-02-11).
[14] Almende, B. et al.: vis.js, visjs (online), available from hhttp://visjs.orgi (accessed 2015-01-11). [15] Almende, B. et al.: DataSet, visjs (online), available
from hhttp://visjs.org/docs/data/dataset.htmli (ac-cessed 2015-01-11).
[16] Almende, B. et al.: network, visjs (online), avail-able from hhttp://visjs.org/docs/network/i (accessed 2015-01-11).
[17] Bhogal, K., Peterson, R. and Seacat, L.: Bandwidth usage and latency reduction of remote desktop soft-ware based on preferred rendering of a user selected area (2011).