Comments
Description
Transcript
プログラマブル SoC を用いた画像処理ハードウェアの ROS 準拠
一般社団法人 電子情報通信学会 一般社団法人 電子情報通信学会 THE INSTITUTE OF ELECTRONICS, THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS 信学技報 信学技報 IEICE Technical Report IEICE RECONF2015-8(2015-06) Technical Report INFORMATION AND COMMUNICATION ENGINEERS プログラマブル SoC を用いた画像処理ハードウェアの ROS 準拠コンポーネント化 山科 和史† 大川 猛† 大津 金光† 横田 隆史† †宇都宮大学大学院工学研究科 〒321-8585 栃木県宇都宮市陽東 7-1-2 E-mail: †[email protected] あらまし 近年,ロボットには自律性が求められ,制御ソフトウェアは高度化・複雑化している.こうしたロボッ トはバッテリー駆動が望ましく,高性能なマイクロプロセッサは搭載できないため処理性能が不足する問題がある. 一方,FPGA を用いて特定のロボット向け処理専用のハードウェアを実現することで,ロボットシステムの性能向 上を見込める.しかしソフトウェア開発に比べて FPGA の開発コストが高く,ロボットシステムへの導入は容易で はない.したがって本研究では,FPGA を容易にロボットシステムへ導入可能とするため,FPGA を用いたハードウ ェアのコンポーネント化を提案する.この際,ロボットシステムの開発支援のソフトウェアプラットフォームとし て主流となりつつある ROS に準拠する.本稿ではプログラマブル SoC を用いた ROS 準拠コンポーネント化手法の 検討を行なう.そのケーススタディとしてラベリング処理を FPGA に実装したハードウェアを,ROS に準拠したコ ンポーネントとして扱う事例を示す. キーワード ROS,プログラマブル SoC,コンポーネント指向開発,FPGA,ラベリング処理 ROS Compliant Componentizing of Image Processing Hardware on a Programmable SoC Kazushi YAMASHINA†, Takeshi OHKAWA†, Kanemitsu OOTSU† and Takashi YOKOTA† †Graduate School of Engineering, Utsunomiya University 7-1-2 Yoto, Utsunomiya, Tochigi, 321-8585 Japan E-mail: †[email protected] Abstract In recent years, robots are expected to be autonomous, and their control software become complex and highly functional. The robots have a problem of processing performance shortage because they are not able to equip with a high performance processor due to battery operation. On the other hand, by realizing hardware dedicated for a robot processing using an FPGA, it is expected to improve the performance of robot systems. But, it is difficult to introduce an FPGA into a robot system since development of FPGA has high cost compared to software development. In this study, we propose componentizing of FPGA hardware in order to promote the introduction of an FPGA into a robot system. The component is compliant to ROS, which is becoming mainstream of a software platform for development assistance of a robot system. This paper reports a study of ROS compliant componentizing using programmable SoC. As a case study, an example of ROS compliant component of labeling hardware implemented an FPGA is described. Keywords ROS,programmable SoC, component oriented development, FPGA, labeling 1. は じ め に ロセッサを搭載できない.一方,画像処理やネットワ 近年,世界中でロボット構築するための設計技術が ー ク 処 理 の 分 野 に お い て は FPGA (Field Programmable 盛んに研究されている .たとえば,災害救助ロボット Gate Array) を 用 い る こ と で ,処 理 の 高 性 能 化 が 盛 ん に や無人ドローン,パートナーロボットなどのロボット 行 わ れ て い る . FPGA は 開 発 者 が 任 意 の プ ロ グ ラ ミ ン は,ロボット自身が周りの環境を認識し,状況判断し グによって回路の機能や仕様の変更が可能である集積 て動作する自律性が求められ,それらの処理のための 回路である.また,ソフトウェアでは汎用的な逐次処 ソフトウェアは高度化・複雑化している.こうしたロ 理 で あ る の に 対 し , FPGA を 用 い た ハ ー ド ウ ェ ア の 処 ボットはバッテリー駆動で運用されることが望まれて 理では,目的に特化した並列処理や制御向けの専用回 いるため,低消費電力化のために高性能なマイクロプ 路をプログラムして実現することが可能である.しか - 41 This Thisarticle articleisisa atechnical technicalreport reportwithout withoutpeer peerreview, review,and anditsitspolished polishedand/or and/orextended extendedversion versionmay maybebepublished publishedelsewhere. elsewhere. ©2015 by byIEICE Copyright Copyright ©2015 IEICE し , 一 般 的 に FPGA の 開 発 に お い て は ハ ー ド ウ ェ ア 記 表 1 述言語による実装が必要であり,普通のソフトウェア ロボット向け 設計プラットフォー ムの登録 パ ッ ケ ー ジ と 論 文 引 用 の 数 (2015 年 5 月 現 在 ) と比べると開発が難しいという問題がある. ロボット工学は非常に多岐にわたる専門分野の上 プラットフォーム名 パッケージ数 論文引用数* ROS 3699 4610 に成り立ち,これは各開発者の能力において開発が可 RT-middleware [3] 321 1090 能 な 範 囲 を は る か に 凌 駕 す る [1].し た が っ て ロ ボ ッ ト OROCOS [4] 不明 1540 シ ス テ ム へ FPGA を 導 入 す る た め に は FPGA の 開 発 * googl e schol ar 2015/ 05/ 27 コストを削減し,ロボットシステムへの統合を容易に 4000 できることが必要である.ロボット向けのソフトウェ パ ッ ケ ー ジ 数 ア開発にかかるコストを削減するためには,コンポー ネ ン ト 指 向 開 発 が 有 効 で あ る [1].コ ン ポ ー ネ ン ト 指 向 開発の一環として,ロボット用のソフトウェア開発プ ラ ッ ト フ ォ ー ム で あ る ROS (Robot Operating System) 3699 3000 2573 2000 1643 1000 0 が 提 案 さ れ て い る [2]. ROS と は 通 信 レ イ ヤ ー の フ レ 301 1 2007 ームワークとロボットソフトウェアのためのビルドシ 2008 706 2009 2010 2011 2012 年代 ステムを提供する. 図 1 本 研 究 で は FPGA を 用 い た ハ ー ド ウ ェ ア を ,ROS に 準 拠 し た コ ン ポ ー ネ ン ト 化 す る こ と に よ っ て , FPGA ROS の ソ フ ト ウ ェ ア パ ッ ケ ー ジ 数 の 推 移 2.2. ROS のシステムモデル をロボット技術者が容易にロボットシステムへ導入で ROS 上 で の シ ス テ ム 開 発 で は ,機 能 や 処 理 の ま と ま きるような 設計基盤を提案 する.これはすなわち,ロ り ご と に ROS プ ロ セ ス を つ く る . こ の 際 , 各 ROS プ ボ ッ ト 開 発 者 の 開 発 生 産 性 を 下 げ る こ と な く , FPGA ロセスがどのような処理を行うか,またどのような機 によってロボットシステムの性能,その開発に貢献す 能 を 持 た せ る か は ユ ー ザ に 委 ね ら れ る .こ の ROS プ ロ るということである. セスを複数 作成し,プロセス同士で通信を することで 本稿ではコンポーネント化のケーススタディとし ロボットの 処理や制御を行う. て,画像処理の一種であるラベリング処理を行うハー ROS に お け る 通 信 モ デ ル は Publish (配 信 ) / Subscribe ドウェア回路をコンポーネント化し, プログラマブル (購 読 )通 信 モ デ ル で あ る . Publish / Subscribe 通 信 モ デ SoC 上 に 実 装 す る . ま た , ROS プ ロ セ ス( ソ フ ト ウ ェ ル (図 2)は ,プ ロ セ ス と プ ロ セ ス 同 士 が ト ピ ッ ク を 介 し ア ) の み に よ る ラ ベ リ ン グ 処 理 と ROS + FPGA( ソ フ て Publish(配 信 ) / Subscribe(購 読 ) を 行 う 非 同 期 メ ッ セ ト ウ ェ ア + ハ ー ド ウ ェ ア )に よ る 処 理 を 比 較 し ,処 理 ー ジ ン グ モ デ ル で あ る .Publish / Subscribe 通 信 モ デ ル 性能を検証する. の最大の利点は,サーバ・クライアント通信モデルと 2. ロ ボ ッ ト 向 け フ レ ー ムワ ー ク ROS 比べて,通信対象となるプロセス同士の結合性が低い 2.1. ROS の概 要 ため,動的なネットワーク構成が可能となることであ ROS は OSRF (Open Source Robotics Foundation)に よ る .す な わ ち ,必 要 に 応 じ て , 「システムへの機能の追 っ て オ ー プ ン ソ ー ス で 公 開 さ れ て い る [2],通 信 レ イ ヤ 加 = ROS プ ロ セ ス の 導 入 」 が 容 易 に 行 え る 点 で あ る . ーのフレームワークとロボットソフトウェアのための プ ロ セ ス に は 2 つ の 役 割 が 存 在 し ,Publisher(配 信 者 ) ビルドシステムを提供 するソフトウェアプラットフォ と Subscriber(購 読 者 )が あ り , Publisher は ト ピ ッ ク へ ー ム で あ る .主 な 動 作 プ ラ ッ ト フ ォ ー ム は Linux で あ メ ッ セ ー ジ の 配 信 を 行 い , Subscriber は ト ピ ッ ク か ら る .ROS の 目 的 は ロ ボ ッ ト 工 学 分 野 の 研 究・開 発 に お メッセージの内容 を購読する.またトピックとは,各 けるソフトウェアの“再利用”を支援するとともに, プ ロ セ ス が Publish/Subscribe す る メ ッ セ ー ジ の 内 容 を 処理や制御のソフトウェアコンポーネントによってシ 区別するための名前であると同時に,メッセージの通 ス テ ム の 構 築 を す る こ と で あ る .図 1 に ROS の 公 式 サ 信経路の名前である. トピックの中にはトピック自身 イ ト [2]に 登 録 さ れ て い る ソ フ ト ウ ェ ア パ ッ ケ ー ジ 数 の名前に属するメッセージのみが存在する.各プロセ の 推 移 を 示 す . ROS の 初 期 リ リ ー ス を し た 2007 年 か スは自分のプロセスに関連したメッセージが存在する らパッケージ数は急激に伸びている.表 1 に示したロ ト ピ ッ ク へ の Publish / Subscribe を 行 う . こ の よ う な ボット向けソフトウェアプラットフォーム別のパッケ Publisher と Subscriber と な る ROS プ ロ セ ス が そ れ ぞ ー ジ 数 と 論 文 引 用 数 を 比 較 し て も ,ROS は ロ ボ ッ ト 向 れ ト ピ ッ ク に 対 し て Publish/Subscribe す る こ と に よ っ けのソフトウェアプラットフォームの中でも主流とな て ROS プ ロ セ ス 同 士 の デ ー タ の や り 取 り を 行 う . メ りつつある ことがわかる. ッ セ ー ジ の Publisher(配 信 者 )は 特 定 の Subscriber(購 読 - 42 - 者) を想定せずにメッセージをトピックに配信するた FPGA に お い て ハ ー ド ウ ェ ア 化 の 対 象 と な る 処 理 は , め ,各 プ ロ セ ス 同 士 は 通 信 相 手 の 情 報 は 持 た な い (持 つ たとえば知的画像処理などの大量の計算を必要と 必 要 が な い ). こ の よ う に ROS プ ロ セ ス 同 士 は 結 合 性 する処理である. コンポーネント化する上で実装す が低く,動的なネットワーク構成が可能である . るソフトウェアは大きく分けて 2 種類に分けられる. 1 種類目は,コンポーネントへの入力データを取得 Subscri be Publish するプロセスと,コンポーネント外へ処理結果の出 Topic Ms g 力を行なう 2 つの入出力用のプロセスである.2 種 Ms g 類 目 は 入 出 力 プ ロ セ ス と FPGA と の デ ー タ の 整 合 と 通信を担うインターフェイスとなるプロセスであ Process Process る .以 上 の 構 成 に す る こ と で ,ハ ー ド ウ ェ ア (HW)の Process 処 理 と ソ フ ト ウ ェ ア (SW) の 処 理 が 混 在 す る HW / SW 協 調 処 理 を 行 う シ ス テ ム が 構 築 可 能 と な る . 図 2 Publish / Subscribe 通 信 モ デ ル ROS Compliant Components Data Data 3. ROS 準 拠 の FPGA コ ン ポ ー ネ ン ト Process Interface Process 本 章 で は ,ROS 準 拠 の FPGA コ ン ポ ー ネ ン ト を 実 現 する上での要求,実装すべき機能,また実装するハー Communication Prepare input data ドウェアプラットフォームについて説明する. FPGA 3.1. ROS 準 拠 コンポーネントの要 求 本 研 究 に お け る ROS 準 拠 と は ,ROS に お け る Publish Integration / Subscribe 通 信 モ デ ル の メ ッ セ ー ジ 形 式 に 対 応 し , ほ ROS system か の ROS プ ロ セ ス と 相 互 に 接 続 可 能 で あ る と い う こ 図 3 と と 定 義 す る .ROS 準 拠 コ ン ポ ー ネ ン ト を 実 現 す る 上 ROS 準 拠 コ ン ポ ー ネ ン ト に よ る 処 理 は ROS プ ロ ROS 準 拠 コ ン ポ ー ネ ン ト の 処 理 と , 従 来 の ROS プ セスのみで処理した場合と等しい処理結果であ ロ セ ス の み に よ る 処 理 の 最 大 の 違 い は ,ROS プ ロ セ ス ること と FPGA 上 に 実 装 し た 回 路 が 混 在 す る こ と で あ る . ROS で 構 成 さ れ た シ ス テ ム に お け る コ ン ポ ー ネ ン ROS で 使 用 す る メ ッ セ ー ジ 形 式 と FPGA で 使 用 ROS 準 拠 コ ン ポ ー ネ ン ト の モ デ ル 3.3. プログラマブル SoC の選 択 で求められる要求を以下の 2 点にまとめた. Send data to other ROS process ト の 導 入 に は , Publish/Subscribe 通 信 が 必 要 で あ る . するデータ形式が統一されていること ROS で 構 成 さ れ た シ ス テ ム に FPGA を 導 入 す る に は , ROS 準 拠 コ ン ポ ー ネ ン ト で は FPGA を 用 い た ハ ー ド ウ ソ フ ト ウ ェ ア の み で 構 成 さ れ た ROS プ ロ セ ス と 交 換 ェ ア に よ る 処 理 を HW/SW 混 在 の コ ン ポ ー ネ ン ト に す し た 際 に ,機 能 的 に 等 価 で あ る こ と が 第 一 条 件 で あ る . る こ と で ,ソ フ ト ウ ェ ア の み の ROS プ ロ セ ス と 同 等 に そ の た め , ROS 準 拠 コ ン ポ ー ネ ン ト は ROS プ ロ セ ス Publish/Subscribe 通 信 モ デ ル を 行 い , ROS シ ス テ ム へ と FPGA 間 の 通 信 に お い て , FPGA で 使 用 す る デ ー タ の導入を容易にする. 形 式 と ROS プ ロ セ ス で 使 用 し て い る メ ッ セ ー ジ に お そ こ で ,ROS 準 拠 コ ン ポ ー ネ ン ト を 実 装 す る ハ ー ド けるデータ形式の統一を行う必要がある.これらの要 ウ ェ ア プ ラ ッ ト フ ォ ー ム と し て , プ ロ グ ラ マ ブ ル SoC 求 を 満 た し つ つ FPGA の ハ ー ド ウ ェ ア 回 路 に よ る 処 理 を 用 い る . プ ロ グ ラ マ ブ ル SoC 上 に 実 装 す る ROS 準 性能の向上も満たすシステムを目指す. 拠コンポーネント の処理の 割り当てを図 4 に示した. 3.2. ROS 準 拠 コンポーネントの機 能 SoC (System on Chip)と は 1 枚 の 半 導 体 チ ッ プ に シ ス テ ムに必要な一連の機能を集積する方式である.一般的 実 現 す る ROS 準 拠 コ ン ポ ー ネ ン ト の モ デ ル を 図 3 に 示す.前節で示した要求を元に実装すべき機能は以下 に ,FPGA に よ る ハ ー ド ウ ェ ア 処 理 は 低 消 費 電 力 か つ , の 4 点である. 高 速 で あ る と い う 特 徴 が あ る .先 行 研 究 [5]で は ロ ボ ッ FPGA を 用 い た 処 理 ト の 処 理 を , FPGA を 用 い た ハ ー ド ウ ェ ア 回 路 に よ る FPGA と ROS プ ロ セ ス 間 の 通 信 を 行 う イ ン タ 省電力化と処理性能の向上に試みている.本研究では ー フ ェ イ ス と な る ROS プ ロ セ ス SoC の 中 で も ARM プ ロ セ ッ サ と FPGA を 同 時 に 集 積 入 力 デ ー タ の 用 意 を 行 う ROS プ ロ セ ス し た プ ロ グ ラ マ ブ ル SoC を 用 い る . ARM プ ロ セ ッ サ 出 力 デ ー タ の 配 信 (他 プ ロ セ ス へ ) を 行 う ROS で は Linux + ROS が 動 作 し , FPGA で は ロ ボ ッ ト 向 け プロセス の処理を行う.ソフトウェアに適した処理はソフトウ - 43 - ェアに,ハードウェア に適した処理は ハードウェアに FPGA の ハ ー ド ウ ェ ア 回 路 が デ バ イ ス フ ァ イ ル と し て 割り当てて,ハードウェア開発の負担を最小限にする アクセスできる.その通信の仕組みを図 6 に示す. ことで,コンポーネントの開発効率を保ったまま,処 FPGA と ARM 間 の 通 信 は ARM 上 の ソ フ ト ウ ェ ア か ら 理性能の向上を図る. デ バ イ ス ド ラ イ バ を 通 じ て FIFO に 書 か れ た デ ー タ を , FPGA(ラ ベ リ ン グ の 回 路 )側 か ら rd_en を 制 御 し て 任 意 1 枚 の FPGA チップ ARM プロセ ッサ Lin ux +ROS 通信 のタイミングで読み込む. FPGA ロジック 画像認識処理の ハー ドウェア 回 路 empty rd_en data 図 4 プ ロ グ ラ マ ブ ル SoC 上 の full Application FIFO wr_en data Labeling ROS 準 拠 コ ン ポ ー ネ ン ト full wr_en data empty Application FIFO Xillybus IP core AXI bus ARM Processoer Core rd_en data 4. 実 装 事 例 : ラ ベ リ ン グ処 理 を 行 う ROS 準 拠 コンポーネント 図 6 前 章 で 説 明 し た ROS 準 拠 コ ン ポ ー ネ ン ト の モ デ ル Xillinux に お け る 通 信 の 仕 組 み 4.2.2. 各 モ ジ ュ ー ル の 機 能 に基づいて ラベリング処理を行う コンポーネントを実 ラベリング処理の回路を構成する要素とその機能 装した.本章では,その詳細について説明する. を表 2 に示す. 回路を構成する要素は大きく分けて 5 4.1. ラベリング処 理 つある. ラベリング処理とは二値化画像に対して,連続した 白色の画素の集合体にラベル番号を付与する処理であ memory_img, label_data0, label_data1 は 処 理 に 必 要 る.処理の用途としては,同一の番号の集合体の画素 な BRAM モ ジ ュ ー ル で あ る .回 路 は ま ず 画 像 デ ー タ 1 数や幅,高さなどの特徴量を求め,欠陥検査や分類処 ラ イ ン 分 を memory_img に 格 納 し , 格 納 が 終 わ っ た と 同 時 に label_generator へ 画 像 の 画 素 デ ー タ を 入 力 す る . 理などに用いることが出来る.二値化した画像に 画素データともに,ラベリング処理では前ラインのラ 対してラベリング処理を施した様子を図 5 に示す. ベル番号を必要とするため,ラベリング処理結果を格 納 す る BRAM と 前 ラ イ ン 分 の 結 果 を 読 み 込 む た め の BRAM と し て label_data0,label_data1 を 用 意 し た .す 処理後 な わ ち , label_data0 の 前 ラ イ ン の ラ ベ リ ン グ 処 理 結 果 を 読 み 出 し つ つ , label_data1 に 現 ラ イ ン の 処 理 結 果 を 書 き 込 む .ま た ,次 ラ イ ン で は label_data1 を 読 み 出 し , label_data0 に 書 き 込 む . 図 5 FIFO buffer は FPGA と ARM 間 の 通 信 を 担 う . FIFO ラベリング処理の様子 buffer を 入 力 と 出 力 に 用 い る こ と で ,入 出 力 時 は 回 路 4.2. ハードウェア実 装 の概 要 の任意のタイミングでデータの送受信ができる. ハードウェア全体図を図 7 に示す.処理のターゲッ な お , label_generator の 詳 細 な 動 作 は 次 項 で 説 明 す ト と す る 画 像 サ イ ズ は 1920×1080(幅 ×高 さ )の 2Mbyte る. 程 度 の 画 像 と し た .こ の 際 , FPGA 上 の BRAM に は , 表 2 画像 1 枚分のデータを保存 できないで,画像の 1 ライ 各モジュールの機能 モジュール名 機能 memory_img 入力画像データを 1 ライン分保存 label_generator 1 画素のラベリング処理 label_data0 ラベリング番号を 1 ライン分保存 Xillybus 社 [6]が 無 償 で 公 開 し て い る ,Zynq 向 け の 開 発 label_data1 ラベリング番号を 1 ライン分保存 プ ラ ッ ト フ ォ ー ム で あ る Xillinux 試 用 版 を 使 用 し た . FIFO buffer データの入出力バッファ ンごとに処理を行う. 性能向上のため 1 画素あたりの ラベリング処理を 1 クロックで行えるように設計した. 4.2.1. FPGA- ARM 間 の 通 信 FPGA と ARM プ ロ セ ッ サ と の 通 信 に つ い て は , Xillinux は Zynq の ARM プ ロ セ ッ サ 上 で 動 作 す る Linux(Ubuntu) で あ る . Zynq 上 で 動 作 す る Linux で は , - 44 - 8 Label result Pixel data 8 Image data memory_img w_adr 32 32bit x 1024 8 Label_ generator r_adr Label data we r_adr w_adr label_data0 8bit x 4096 11 8 r_adr label_data1 we Input image Label result 8 11 8bit x 4096 8 W_DATA R_DATA W_ADR R_ADR WE FULL w_adr RE FIFO EMPTY 11 R_DATA W_DATA R_ADR W_ADR WE FIFO FULL input_controller RE output_controller state_controller 11 EMPTY 図 7 ラベリング処理を 1 ライン分行う回路 のブロック図 入 力 画 像 (bmp イ メ ー ジ )を 読 み 込 み , 画 素 デ ー タ の 取 4.2.3. ラ ベ リ ン グ 回 路 (label_generator)の 詳 細 FPGA を 用 い て ラ ベ リ ン グ 処 理 を 最 適 に 行 う た め , 得 を 行 い ,ト ピ ッ ク data_input へ 配 信 を 行 な う .ま た , 1 画素あたりの処理を 1 クロックで行う方針で回路を FPGA と ROS プ ロ セ ス 間 の イ ン タ ー フ ェ イ ス と な る の 設 計 し た . la bel_ genera tor の ブ ロ ッ ク 図 を 図 8 に 示 す . が ,write2fpga,read4fpga で あ る .た と え ば ,FPGA へ 入 力 は 5 つ あ り ,い ず れ も 8 bit で あ る .ま た そ の 内 訳 の 入 力 用 の ROS プ ロ セ ス で あ る write2fpga は , FPGA は入力画像のピクセルデータのポートと 1 つ,ラベリ の FIFO を デ バ イ ス フ ァ イ ル と し て ア ク セ ス し , デ ー ング処理に必要な過去のラベル番号用のポート 4 つで タ を 送 信 す る .read4fpga も 同 様 に 読 み 込 む デ バ イ ス フ ある.白色の画素に対して,参照した 4 つのラベル番 ァ イ ル を FIFO に 指 定 し ,デ ー タ を 取 得 す る .write2fpga 号がすべて 0 ならば,直前につけたラベル番号+1 の で 購 読 し た ROS メ ッ セ ー ジ は , 画 像 デ ー タ と し て 値をラベル番号として出力する.この際,参照し た 4 FPGA へ 送 信 す る . ラ ベ リ ン グ 処 理 後 , read4fpga で つのラベル番号に 0 以外の数字があった場合,その中 FPGA か ら 受 け 取 っ た ラ ベ ル 番 号 を ,同 様 の ROS メ ッ で 0 以 外 の 最 小 値 を ラ ベ ル 番 号 と し て 出 力 す る .な お , セ ー ジ の デ ー タ 形 式 に し て ト ピ ッ ク data_input に 配 信 出 力 ポ ー ト も 8 bit で あ る . す る .他 の ROS プ ロ セ ス ラ ベ リ ン グ 処 理 の 結 果 を 必 要 と す る 際 は , ト ピ ッ ク data_output を 購 読 す れ ば よ い . 8 input 7 0 Pixel (0 or 1) 8 0 0 Label data 8 input 7 8 8 0 Label LeftUp Label Up Label RightUp Label Left 8 8 8 8 Label data ROS に お け る プ ロ セ ス 間 通 信 の メ ッ セ ー ジ 形 式 は , FLAG_WHITE 1 Select MinNum 8 FLAG_ All ZERO 8 1 0 8 7 0 図 10 に 示 す よ う な メ ッ セ ー ジ フ ァ イ ル に デ ー タ 形 式 8 Label Out output を宣言することによって定義する .本研究では 画像デ ー タ を 格 納 す る た め の 32bit 整 数 配 列 と , フ レ ー ム 番 8 号 を 格 納 す る た め の 32bit 整 数 型 変 数 で 構 成 し た . 8 +1 8 Publish Current Label Image 図 8 label_generator の ブ ロ ッ ク 図 data_input Subscribe Topic input_image Publish data_output write2fpga read4fpga Other Process communication 4.3. ROS プロセス(ソフトウェア)実 装 の概 要 ROS process 実 装 し た ROS 準 拠 コ ン ポ ー ネ ン ト の シ ス テ ム の 全 体 ROS Compliant Components 像 を 図 9 に 示 す .ま た ROS 準 拠 コ ン ポ ー ネ ン ト を 構 成 図 9 す る ROS プ ロ セ ス を 以 下 に ま と め た . input_ image : 入 力 画 像 デ ー タ を data_input に 配 信 wr ite 2fpga: data_ input か ら 購 読 し た デ ー タ を FPGA に送信 Processing by FPGA read4fpga:FPGA か ら 受 信 し た デ ー タ を data_o utput ROS 準 拠 コ ン ポ ー ネ ン ト の シ ス テ ム 全 体 i nt32 val ue i nt32 [] d ata 図 10 に配信 ROS プ ロ セ ス は 3 つ あ り , 1 つ 目 の input_image は - 45 - メッセージファイルの内容 5. 性 能 評 価 0.900 ROS 準 拠 コ ン ポ ー ネ ン ト の 性 能 評 価 を 行 な っ た .評 0.8361 0.800 (1) ROS 準 拠 コ ン ポ ー ネ ン ト (ARM+FPGA) 0.100 time(s) 価は 3 つの条件で行った. 0.120 (2) ソ フ ト ウ ェ ア の み に よ る 処 理 (SW only:ARM) (3) PC 環 境 上 (SW only:PC) 0.0746 0.080 0.060 0.040 (1) お よ び (2) に お け る 評 価 環 境 は Xilinx 社 製 0.020 ZC7Z020 搭 載 Zedboard 上 の ARM Cortex-A9 プ ロ セ 0.000 0.0045 ARM+FPGA ッ サ (666MHz), OS は Ubuntu 12.04 LTS で あ る . ま た 図 11 (3)の PC 環 境 は Intel Core i7 870(2.93GHz),OS は Ubuntu SW only(PC) SW only(ARM) ラベリング処理時間比較 12.10 で あ る . 図 11 に ラ ベ リ ン グ 処 理 時 間 の 評 価 結 果 を 示 す .測 定 SW only : PC(0.308s) は 10 フ レ ー ム 行 い ,そ の 平 均 値 を 示 し た .入 力 画 像 の SW only : ARM(3.331s) 解 像 度 は 1920×1080 で あ る . (1)は 1 フ レ ー ム あ た り ARM + FPGA(1.871s) 4.5 ms(ARM-FPGA 間 の 通 信 時 間 を 含 む )で あ り , も っ 0.000 とも時間が短いことがわかる.この際,処理時間の最 ()は 全 体 の 経 過 時 間 大 値 は 6.0 ms, 最 小 値 は 2.0 ms で あ っ た . す な わ ち 図 12 FPGA を 用 い た 最 適 な 専 用 ハ ー ド ウ ェ ア の 実 装 に よ り , ARM 上 で の ソ フ ト ウ ェ ア の み の 処 理 時 間 と 比 べ 約 185 1.000 1 2.000 time (s) 2 3 3.000 4 4.000 5 ROS 準 拠 コ ン ポ ー ネ ン ト の 経 過 時 間 比 較 6. お わ り に 倍 ,PC 環 境 上 と 比 べ て も 約 16 倍 の 高 速 化 に 成 功 し た . 本 稿 で は ,プ ロ グ ラ マ ブ ル SoC を 用 い た 画 像 処 理 ま た ROS 準 拠 コ ン ポ ー ネ ン ト と ソ フ ト ウ ェ ア の み ハ ー ド ウ ェ ア の ROS 準 拠 コ ン ポ ー ネ ン ト 化 に つ い て に よ る 処 理 で の 全 体 の 経 過 時 間 を 図 12 に 示 す . 図 12 述 べ た . ROS 準 拠 コ ン ポ ー ネ ン ト の 開 発 は ARM プ ロ 中の凡例と番号が表す時間は以下のとおりである. 1: ROS の プ ロ セ ス 間 の デ ー タ 通 信 時 間 2: デ ー タ を 購 読 後 ,ラ ベ リ ン グ 処 理 を 行 う ま で の 時間 3: ラ ベ リ ン グ 処 理 の 時 間 (通 信 時 間 含 む ) 4: ラ ベ リ ン グ 処 理 終 了 後 ,他 の ROS プ ロ セ ス へ 結 果を出力するまでの時間 5: ROS の プ ロ セ ス 間 の デ ー タ 通 信 時 間 (1)の 処 理 の 経 過 時 間 は ,1.871 s で あ り ,(2)の 処 理 と セ ッ サ と FPGA が 同 時 に 搭 載 さ れ た プ ロ グ ラ マ ブ ル SoC に 実 装 し , ソ フ ト ウ ェ ア と ハ ー ド ウ ェ ア の 協 調 処 理を行うことによって,開発生産性を維持しつつ処理 性能向上が可能であることを示した. ROS 準 拠 コ ン ポ ー ネ ン ト の 処 理 時 間 の 多 く は ROS プ ロ セ ス 間 の 通 信 時 間 が 占 め る .今 後 ,プ ロ グ ラ マ ブ ル SoC 上 で ROS プ ロ セ ス 間 通 信 の 時 間 を 削 減 す るための検討が必要である. 比 べ ,約 1.7 倍 の 高 速 化 で あ っ た .(1),(2)に お け る 経 謝辞 過 時 間 の 多 く を 占 め る の は ROS プ ロ セ ス 間 に お け る 本 研 究 は ,一 部 JSPS 科 研 費 (基 盤 研 究 (C)24 500055 ,同 (C ) 通 信 時 間 で あ る .ま た ,(3)の 経 過 時 間 に お い て ROS プ 15 K00068 , 同 (C)2 5330055 , 若 手 研 究 (B)2573002 6) の 援 助 に ロ セ ス 間 通 信 が 占 め る 時 間 は ,(1),(2)に 比 べ て 大 幅 に よる. 短い.ラベリング処理 に要する処理時間の構成比とし 文 ては,どの環境下においても同様である.そのうえで (1), (2)の ROS プ ロ セ ス 間 通 信 に 大 き な 時 間 が か か る 原 因 と し て ,PC の プ ロ セ ッ サ と ARM プ ロ セ ッ サ の 性 能 の 差 が あ げ ら れ る . (1) , (2) で は 動 作 周 波 数 は 666MHz の ARM プ ロ セ ッ サ 上 で あ る が , (3)に お け る 環 境 で は プ ロ セ ッ サ は 動 作 周 波 数 が 2.93GHz で あ る . こ の プ ロ セ ッ サ の 性 能 差 が ROS プ ロ セ ス 間 に お け る 通信に大きく影響したと考えられる. 以 上 の こ と か ら , プ ロ グ ラ マ ブ ル SoC 上 に お け る ROS 準 拠 コ ン ポ ー ネ ン ト で は ,ハ ー ド ウ ェ ア 化 し た ラ ベリング処理の性能向上が処理全体の性能向上に大き く貢献していることがわかる. - 46 - 献 [1] 日 本 ロ ボ ッ ト 学 会 (編 ) : “ ロ ボ ッ ト テ ク ノ ロ ジ ー ”, オ ー ム 社 , 2011. [2] Open Source Robotics Foundation: : http ://wiki.ros.org/. [3] OpenRTM-aist: http://www.openrtm.org/openrtm/ja. [4] OROCOS: http://www.orocos.org/. [5] 鈴 木 拓 也 , 山 崎 優 作 , 田 向 権 , 関 根 優 年: “移動型 ロ ボ ッ ト に 統 合 す る 知 能 処 理 回 路 ”, 電 子 情 報 通 信 学 会 技 術 研 究 報 告 , VLD2011−105, CPSY2011−68, RECONF2011−64, pp.83 ~ 88, 2012. [6] Xillybus: http://xillybus.com/. [7] 山 科 和 史 , 大 川 猛 , 大 津 金 光 , 横 田 隆 史 :“ ロ ボ ッ ト 応 用 の た め の ROS 準 拠 FPGA 画 像 処 理 コ ン ポ ー ネ ン ト の 基 礎 設 計 ”, 情 報 処 理 学 会 第 77 回 全 国 大 会 講 演 論 文 集 , pp.1-169~ 1-170, 2015.