宇都宮大学 大学院地域創生科学研究科 工農総合科学専攻 横田・大津研究室

PearLab, Utsunomiya Univ.

Japanese/ English

FPGAによるロボット向けリアルタイム制御処理

背景

ロボットはセンサ(位置測定・回転角度・速度測定など)からの情報を基にアクチュエータ(モータなど)による制御を行うシステムです。
アクチュエータを動かすためには、何らかの数値を計算して電圧等の値を設定する必要があるわけですが、「どの様に動かすか」について、従来マイコンなどでソフトウェアを用いて計算・処理を行っていました。しかし、複雑な処理を行うためには処理性能が足らない事が問題になります。またロボットに組み込む為には消費電力が大きいLSIチップは使用することが難しいという問題があります。

また、ここでいうリアルタイムとは、は「予定した時間までに計算処理を終わらせる」という意味です。アクチュエータを動かすための値の計算は、一定の周期時間(数ms)で行う必要がありますので、その時間までに終わらないと期待通りの制御が出来ないわけです。

今後、このようなロボットに用いる制御が高度化・複雑化していくことが予想され、その為の処理のリアルタイム化・高速化・低消費電力化・低コスト化のために、FPGAの活用が期待されます。また、ロボットにおいては多くのセンサや、計算のためのプロセッサ(FPGAやマイコンなど)がネットワークで組み合されて作られますので、「ネットワークでつながったセンサ・プロセッサが協調して目的を達成する」システムの構築技術が必要になります。

分散オブジェクト(ORB)によるロボット制御

図1は、FPGAの先にセンサがついている状況を示しています。通常、1つのFPGAだけでロボット全体の制御処理を行うのは難しいので、マイクロプロセッサ上のソフトウェアと連携して動作するシステムにすることが必須です。ここでは、FPGAとPCはネットワークで接続されていることとします。

一般に離れたシステム(分散システム・リモートシステム)の開発においては、それぞれのシステムが独立して動くため、正しく動作させることが難しいことが多いです。そのため、PCはFPGAにセンサの値を通信により問い合わせる事が出来る、という仕掛けを作ることで、センサとプロセッサが協調動作するシステムの構築が容易になると考えられます。

図1 ロボットアームをFPGA(ORBエンジン)を通じてオブジェクトとして扱う

さて、図1の例を改めて見ると、FPGA上のセンサの入力回路(ここではQuadCounter)はそのままではPCと通信できません。そのため、通信を行う為の枠組みをFPGA上に設ける必要があります。

この際、通信をどのようにやるか、つまり通信メッセージの意味をどのように定めるか、という事を毎回独自に決めていると開発の時間がかかるという問題があります。また、同じようなセンサであっても、メッセージの意味合いが、毎回違うとなると、開発は混乱します。こうした問題に対して、分散オブジェクトという考え方で設計開発の生産性を向上するという考え方があります。分散オブジェクトとは、オブジェクト指向言語のオブジェクトを、分散して配置し、その間を通信を通じたネットワークつなぐシステムとして設計開発する、という事です。

分散オブジェクトにおいては、ORB(Object Request Broker)という枠組みを使う事で、標準的なオブジェクト指向言語のメソッド呼出し(関数呼び出し)とメッセージの意味を対応させるという事が可能になります。更に、システム開発者は、オブジェクトのメソッドを呼ぶ記述を書くだけで良く、それに対応した通信はORBの枠組みが行うため通信を意識する必要がありません。そのため、開発の生産性は大幅に向上します。(ORBについては別途説明します。また標準的なORBとしては、CORBAという物があります)

しかし現在、FPGAをORBの枠組みに参加させることは一般的ではありません。その為、私たちは、FPGAをORBの枠組みに参加させ、FPGA上の回路(ハードウェア)を、分散オブジェクトにおけるオブジェクトとして扱う事が可能とするための技術として、「ORBエンジン」を開発しています。

FPGAとPCをORBで連携したリモート倒立振子システム

ORBエンジンのリアルタイム応用の可能性を示すために、ORBエンジンを用いたネットワーク制御による倒立振子システムを開発しました。

本システムについては、国際会議HEART2013(2013/6/13)で発表しました。詳細な技術的データについては、予稿集をご覧いただくか、お問い合わせください。

動画


構成

動作シーケンス(役割分担)

倒立振子システムの構成(写真)