ロボットへのFPGA導入を
容易化する
コンポーネント技術
宇都宮大学 大学院工学研究科 情報システム科学専攻 助教 大川 猛従来技術とその問題点
FPGA(Field Programmable Gate Array)は、任意の ディジタル論理回路をプログラム可能なLSI →ソフトウェアでは時間がかかる画像認識処理等を、 ハードウェア化して、高速化・低消費電力化可能 問題点 ・FPGA上の回路設計が難しい ・ロボットソフトウェアシステムへの導入が困難
新技術の特徴・従来技術との比較
• 従来技術の問題点であった、FPGAをロボットシステ ムへ導入する開発を容易化することに成功した。 • 従来は、FPGAを使用できるのはハードウェア・ソフト ウェア両方の知識を持つ技術者に限られていたが、 FPGAをROS*ノードとして動作させイーサネット経由 でアクセス可能としたため、容易にロボットシステムに 導入することが可能となった。ROS (Robot Operating System)
• ロボットソフトウェア開発用の共通基盤 – 対象OS:Ubuntu Linux – ノード間の通信モデル:Publish/Subscribe(出版-購読)モデル • 利点:コンポーネントの追加・修正が容易 • 豊富なソフトウェアコンポーネントを利用可能 – 例) カメラ入力、モータ制御、画像処理 画像 認識 処理 行動 計画 カメラ 入力 センサ 入力 腕 モータ 脚 モータROS準拠FPGAコンポーネント技術の概要
提供可能な実装(Xilinx FPGA向け) 1.SoC版: Zynq-7020(ARM搭載) 2.Hardware版: Spartan-6
Application ROS node input output
Publisher Subscriber Publisher Subscriber
PS(ARM)
PL(FPGA)
ROS-Compliant FPGA Component(SoC)
interface for FPGA interface for FPGA Application ROS node input output Publisher Subscriber FPGA Subscriber HW Publisher HW Hardware ROS-Compliant FPGA Component
ROS準拠FPGAコンポーネン ト自動生成環境(cReComp) 入力: FPGAアプリケーション回路(Verilog) および設定ファイル 出力: ROSノード(Python/C++および FPGA回路) コンポーネント事例 画像処理: ラベリング(ARMプロセッサ上 ソフトの26倍高速) センサフュージョン: 9軸センサの情報を 統合した姿勢推定
FPGAコンポーネント事例
画像処理ラベリングROS準拠FPGAコンポーネント ターゲット:Xilinx社Zynq ARMプロセッサ+FPGA が1チップ化 →画像ラベリング処理 FPGA回路をROSノードと して実装 ラベリングのFPGA処理 1画素1クロック処理 →ARMより約26倍高速 解像度:1920x1080 ARM: Cortex-A9 666Mhz FPGA: Zynq-7020 PC: Core i7 870 2.93GHzFPGAコンポーネント化の課題
0 0.5 1 1.5 2 2.5 3 3.5
FPGA+ARM SW only(ARM)
time(s)
Application ROS node input output
Publisher Subscriber Publisher Subscriber PS(ARM)
PL(FPGA)
ROS-Compliant FPGA Component(SoC)
interface for FPGA interface for FPGA
全体性能:
約1.7倍
の高速化(ARMと比較)にとどまる
通信遅延時間がボトルネック
→ハードウェア化
通信のハードウェア化の検討
• ROSノード間の通信パケット内容の分析Pub/Sub通信は2ステップ
・XMLRPCを使用した登録処理 ・TCPROSによるデータ通信 Publishertopic name: “bar” hostname: foo
XMLRPC port number: 1234
TCPROS port number :2345
Subscriber subscribe to “bar” ①advertise (“bar”, foo:1234) ①subscribe (“bar”) ②{foo:1234} Publisher Subscriber master ③requestTopic(“bar”,TCP) ④ foo:2345 ⑤ connect(foo:2345) ⑥ data transmission XMLRPC TCPROS