ホームサービスロボットにおける FPGA の応用例 (3): ロボットと FPGA の統合その2

ロボットとFPGA

前回は、ロボットのシステムの核となる ROS と FPGA の統合方法の1つを紹介しました。今回は、前回の方法とは異なる ROS と FPGA の統合方法、およびそのアプリを紹介します。

ROS と FPGA の統合その2

ROS と FPGA の統合方法[1]について紹介します。以下に図示するこの方法は、前回紹介した hw/sw 複合体 (ここではXilinx Zynq) と 開発環境 (ここでは Xilinx Vivado HLS、 SDSoC) を用い、計算処理の一部を FPGA にオフロードした ROS ノードまで構築します。

ROSとFPGAの統合方法の概要
ROSとFPGAの統合方法の概要

この方法を図中の番号と対応付けて解説します。

(1) まず、回路エンジニアが、高位合成ツール Vivado HLS を用いて、 FPGA にオフロードしたい計算処理を記述します (ハードウェア関数)。

(2) 次に、この統合方法が、ハードウェア関数のディレクティブおよび引数を参照し、ハードウェア関数のソフトウェアラッパー関数を自動生成します。また、 Zynq の開発環境 SDSoC を用いて、ハードウェア関数及びソフトウェアラッパー関数をビルドします。この時、ハードウェア関数は FPGA  のコンフィギュレーション情報である bitstream とし、ソフトウェアラッパー関数は共有ライブラリとし出力します。また、この統合方法が、ソフトウェアラッパー関数を参照し、 ROS インタフェースと互換性がある、 ROS-like hw interface を自動生成します。この時、 SDSoC でビルドしたソフトウェアラッパー関数は、同期動作をとるため、 ROS action interface と互換性を持たせます。

(3) 最後に、ロボットエンジニアが、 ROS ノードを記述します。この時、 ROS ノード内で ROS-like hw interface を用いることで、 ROS action interface と互換性を持ったコード記述でハードウェア関数を使用できます。

あとは、ホームサービスロボット上に搭載されている PC の ROS master と統合するだけです。今回の方法は、前回の方法に比べ、回路エンジニアが記述する領域がハードウェア関数のみに絞られており、より分業を意識した設計になっています。

ROS と FPGA の統合でできること・併せて考えるべきこと

今回の方法では、 Vivado HLS、SDSoC を用いて、FPGA にオフロードしたい計算処理を実装しました。近年では、このような FPGA の開発環境で使えるライブラリが多く発表され、特にニューラルネットワーク向け技術は日進月歩で進化しており[2]、 ロボットに高速処理かつ低消費電力なアクセラレータが搭載され始めています。

しかし、ただ計算機やニューラルネットワークが進化すれば、ロボットの振る舞いは変わるのでしょうか?いいえ、ロボットにとっては、操作対象のモノを、環境から正しく検出・認識することが併せて重要で、そのため近年では、データセット作りも重要とされ議論の対象とされています。

我々、九州工業大学 大学院 生命体工学研究科の脳型計算機システム研究室、および、ロボットプロジェクトチーム Hibikino-Musashi@Home でも、ホームサービスロボットが働く環境、すなわち家や店に特化した画像データセットの半自動生成法[3]を提案しています。これは、以下の図のように、背景 (家具など) と前景 (ロボットが操作するモノ) を画像処理により自動的に合成し、データセットを生成する手法です。大量の学習用画像を半自動生成し、転移学習と組み合わせて運用することで、データセット生成からニューラルネットワークの構築までを、競技会会場の現場で半日程度で完成させることが可能です。

データセットの半自動生成法
データセットの半自動生成法

以下の動画に、それを応用したホームサービスロボットの働きを掲載しています。我々はこの提案手法を基にしたモノの操作技術の高さを武器に、ホームサービスロボットの国際競技会である RoboCup 2017 Nagoya および 2018 Montreal 、そして World Robot Summit 2018 で3つの世界一を獲得することが出来ました。 FPGA へのアルゴリズムの実装から始まり、ロボットと FPGA の統合、そしてロボットへ応用するために必要なことまで一貫して考え、開発していることが我々の強みです。

WRS2020 Qualification

まとめ

今回は、2つ目のロボットと FPGA の統合方法を紹介しました。また、計算機以外の要素技術も併せて考慮し、ロボットへ応用することを言及しました。我々は画像処理とは異なるターゲットへ応用可能な FPGA 搭載計算機についても引き続き研究開発し、ロボットに応用したいと考えています。なお、ここまでの3回分の内容については、我々Hibikino-Musashi@Homeチームを長らく率いてきた石田氏の博士論文[4]に詳細がまとまっております。ご興味あれば是非こちらもご覧ください。

九州工業大学大学院生命体工学研究科
准教授 田向 権 (Hakaru Tamukoh)、Hibikino-Musashi@Home

参考文献

[1] Y. Ishida and H. Tamukoh, “High-Level Synthesis System to Integrate SoC and ROS,” Asia Pacific Conference on Robot IoT System Development and Platform 2019 (APRIS2019), November 1-4 (2), 2019.

[2] H. Nakahara, H. Yonekawa, T. Fujii, M. Shimoda and S. Sato, “GUINNESS: A GUI based Binarized Deep Neural Network Framework for Software Programmers,” IEICE Transactions on Information and Systems, Vol.E102-D, No.5, 2019, pp.1003-1011.

[3] Y. Ishida and H. Tamukoh, “Semi-Automatic Dataset Generation for Object Detection and Recognition and its Evaluation on Domestic Service Robots,” Journal of Robotics and Mechatronics, Vol. 32, No. 1, pp. 245-253, 2020.

[4] 石田 裕太郎, “ホームサービスロボットのための基盤システムの確立: 知的処理の実装および組み込みアクセラレータの統合,” 九州工業大学博士学位論文, 2020. http://hdl.handle.net/10228/00007806

タイトルとURLをコピーしました