...

プログラマブル SoC を用いた画像処理ハードウェアの ROS 準拠

by user

on
Category: Documents
1

views

Report

Comments

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.
Fly UP