ロボットのアーム位置制御や反射神経をFPGAに実装 ―― ハードウェアとソフトウェアを使い分けて処理の高速化を実現

前川 裕明

ここではFPGAを利用してロボットのアーム位置制御や反射神経を実現した事例を解説する.ロボット・アームの軌道制御をCPUではなくFPGAで行った.そのためCPUは動作開始点と終了点のパラメータをロボットに与えるだけで滑らかな軌道を生成できる.さらにアームが何らかの要因によって意図しない力を受けた場合,瞬間的(約20ms)にアームを所定の位置に移動する,いわゆる手を引っ込める動作をFPGAに搭載した. (編集部)

1.ロボットの概要と製作の動機

 筆者の所属する東京農工大学 電気電子工学専攻 関根研究室には,パソコンをホスト・コンピュータとするロボット(写真1)があります.本ロボットは主に複数のサーボモータおよびセンサ,A-D変換器で構成されます.本ロボットには運動制御を行うためのシステムが搭載されていなかったため,一から作成する必要がありました.


写真1 東京農工大学 関根研究室の研究開発用ロボット

本ロボットは主に複数のサーボモータおよびセンサ,A-D変換器で構成される.運動制御,画像認識,音声認識,音声合成などといった研究のための土台.

 

 本ロボットには運動制御のほかに画像認識,音声認識,音声合成などの機能を統合させる必要があります.そのためホスト・パソコンに負荷のかからない制御システムが必要となります.また,ホスト・パソコンはWindows 2000が搭載されているため,数μs単位の正確なタイミング制御が必要なサーボモータやA-D変換器の制御を行うことができません.そこで外部にハードウェア(FPGA)を実装し,FPGAをソフトウェアから制御することで,ソフトウェアへの負荷の軽減および高速なタイミング制御の問題点を解決することにしました.

 そしてソフトウェアとハードウェアの協調動作を実現するために,本研究室で開発したFPGAを搭載したハードウェア・モジュール「hwModule」(写真2)を使って,ハードウェア/ソフトウェア複合体による制御システムを作成しました.



写真2  FPGA4個を搭載したハードウェア・モジュールの外観
FPGA,SDRAM,PCIバス・コントローラにより構成される.

 

● 4個の FPGAで反射動作や軌道補間を実現

 hwModuleはFPGA,SDRAM,PCIバス・コントローラによって構成されます.図1にhwModuleのブロック図を示します.hwModuleはボード制御のPCIバス・コントローラ用FPGAを1個,仮想回路用FPGAを3個搭載しています.さらに,処理データを格納するためのローカル・メモリ(以下,LM)を4個搭載しています.



図1 ハードウェア・モジュール:hwModuleのブロック図
各FPGAにローカル・メモリを持つ.

 

 各FPGAは二つのLMバスを持っています.また,隣り合うFPGA同士でLMを共有しているため,複数の仮想回路が動作する状況でもデータのコピーの必要がないという特徴があります.

 また,このhwModuleには外部接続のためのGPIF(General Purpose Interface;ボード外部への入出力コネクタ)が三つ設けられています.各GPIFには40ビットの信号が接続可能です.

 回路データおよびデータはホスト・パソコンからPCIバスを経由してhwModule上のFPGAやLMに書き込めます.書き込んだ回路はデータを読み出し,処理を行い,必要に応じてLMへ書き込む,GPIFを通じて外部に信号を出力するといったことができます.

・ 複雑なハードウェアの処理をカプセル化したhwObject
 図2にhwObjectモデルの概要を示します.hwObjectとは,複雑なハードウェアの処理をカプセル化したものであり,hwModule上のFPGAに実装されるhwNetによって目的の処理を行うオブジェクトです.



図2 hwObjectの概念図

hwObjectとは複雑なハードウェアの処理をカプセル化したものであり,hwModule上のFPGAに実装されるhwNetによって目的の処理を行うオブジェクト.

 

 hwObjectにおけるホスト上のメンバ関数は,対象の仮想回路とホストとの結合を解決して動作させるための手続きだけとなっています.従来のC++言語による記述を用いることで,ソフトウェア上から容易にハードウェアが扱えるようになります.そしてhwNetには,ビット処理,信号処理など回路が得意とする機能を割り当てます.

● 四つの階層を持つ制御システム

 多階層制御回路は,ソフトウェア・レベル,hwModuleレベル,末しょうFPGAレベル,回路レベルの四つの階層に分かれています(図3).これは人間の大脳,小脳運動野,せき髄といった階層的な運動制御構造を模擬したものであり,階層ごとに役割を分担しています.



図3 多階層制御回路のシステム構成の概要
ソフトウェア・レベル,hwModuleレベル,末しょうFPGAレベル,回路レベルの四つの階層に分かれている.これは人間の大脳,小脳運動野,せき髄といった階層的な運動制御構造を模擬したもの.

 

・ ソフトウェア・レベル
 ソフトウェア・レベルは複雑な分岐処理を含むロボット全体の動作計画などを行い,人間が動作命令を入力するためのGUIを持ったアプリケーションです.

・ hwModuleレベル
 hwModuleレベルは,サーボモータを制御するためのPWMパルスと,動作軌道の生成を行います.また,末しょうFPGAレベルからシリアル通信によって送られてくるセンサ・データを受け取り,ソフトウェア・レベルへ渡すためにLMへと書き込む処理も同時に行います.

・ 末しょうFPGAレベル
 末しょうFPGAレベルは,hwModuleレベルから入力されるPWMパルス信号を回路レベルへと出力するとともに,センサへの入力情報から人間の反射動作のような高速な応答制御を行います.さらに,回路レベルに実装されるA-D変換器の信号制御を行います.

・ 回路レベル
 回路レベルの構成は,バス・トランシーバ,フォトカプラ,A-D変換器などによって構成されており,末しょうFPGAレベルから入力される信号の整形と分割,センサ出力のA-D変換や電圧レベルの変換,回路とサーボモータの電源分離などを行います.

● すべてをソフトウェアだけで実現することの欠点

 人間のような複雑な制御機能をロボットに持たせるには,人間の関節や感覚神経と同じ働きをするアクチュエータやセンサが数多く必要です.しかし,これらの機器を単体のソフトウェアだけで制御した場合,扱うアクチュエータやセンサの数が増加していくほど,制御信号を生成するためのタイマ割り込みなどが頻繁に行われることになります.処理時間の増加や使えるI/O数の制限といった問題から,複数のアクチュエータやセンサを同時に高速に制御するのは困難となります.

● 反射動作をFPGAで行い遅延をなくす

 そこでタイマ割り込みなどを多く利用するアクチュエータやセンサの制御信号の生成・処理などを,並列計算処理が可能で単純計算を高速に行うことができるハードウェアに任せます.ハードウェアだけがセンサからの入力データを制御信号のデータにフィードバックさせることによって,人間の反射動作のように,高速に複数のアクチュエータを制御できます.

 しかし,すべての制御をハードウェアだけで行おうとした場合,行動計画などといった複雑な分岐処理が難しくなってしまいます.そこでソフトウェアによってロボット全体の行動計画や動作命令を行い,ハードウェアで制御信号生成を行うといったように,ハードウェア,ソフトウェアおのおのが得意とする処理を分担させることによって,高速で負荷の少ない制御システムを構築します.

 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日