開発もの

 このページは開発中の装置を記す。考え方等が参考になるかもしれないので、紹介しておく。

(1)3次元磁力線追跡装置
 3次元の磁場を高い空間分解能で計測するのは意外と難しい。2次元平面上の磁力線を測るなら、例えば磁性体の微小な粉末を散布するといった手段もあるが、3次元空間を縦横無尽に走る磁力線を計測できているわけではない。では、どうすれば3次元磁力線や3次元の磁場分布を計測できるかについて考えた結果の一部を以下に記す。なお、全体のシステム等については、将来、論文で述べる予定。

 まず、センサーであるが、空間分解能を高めるためには、検出素子が小型である必要がある。高感度ではあるが冷却部などが別の構造体に引っ掛かってそこに近い部分を測れないといったものは除外の対象である。感度としては地磁気以下のレベルが測れないと、測定データーが真の磁場を測っているのか地磁気や磁化してしまった鉄骨などを測っているのかが分からなくなる。上記の仕様を満たす物を探してみた感じでは、以下の方式しか無いと思われる。

 センサーとしては愛知マイクロインテリジェンス社製の3次元磁気センサーを用いた。それを非常に小さい基板に表面実装の超小型・高精度オペアンプと共に実装し、センシングヘッドとする。ヘッド部は角度が0度、90度と変えられるようになっており、コイルを避けながらその近傍の磁力線も3次元的にトラッキングできる。なお、このシステムを作成した主な目的は、3次元・磁力線カオスを観測するためである。[ Ref: M. Hosoda et al., Phys. Rev. E, published (2009).]

 3次元的に検出ヘッドが空間中を移動し、かつ、磁力線に影響を与えないためにはヘッド部への接続や、駆動機構に磁性体を使うことが出来ない(磁力線の流れが変わってしまう)。それゆえ、特殊な3次元移動機構を用い、ヘッド部までの材料には非磁性体を用い、また、ヘッド部近傍にはモーターを使用していない(モーターは磁力線を発生したり、磁場を乱すので測定近傍には置けない)。したがって、モーター部はヘッドとは十分に離れた距離にある。磁場の強さは何もない空間ではほぼ逆2乗則に従うので、これで影響はほとんど無い。

Pending:

(このシステムはABL128と5個のステップモーター、16-bit A/Dなどで構成されるが、少し複雑なので、説明が大変。他のページの記述にがんばったので、だんだん、説明する気が萎えてきてしまった。それゆえ、その他の詳細は気が向いたら追記する。)

 

(2)小型ロボットのための位置検出システム

 20センチ以下の自走式ロボットが、自身でその位置を1センチ以下の精度で知る方法を開発している。要求される精度はセンチメートル以下なのでGPSなどでは実現不可能である。そこで天井に設置した複数の光源からの角度(魚眼レンズを経由してPSD受光素子による光スポット位置を周波数分離で検出)を元に光源からの距離を計算し、0.5cm以下の精度でロボットが自身の位置を知る方法を考えてみた。光源の検出はオフセットとなる昼光(DC光)や蛍光灯等の50,60Hz光源やその高調波(100, 120Hz etc.)から分離するために、それらの高調波から素の周波数を持ち、かつ、互いに素な関係と非線形回路要素によるビート等による和差周波数が重ならないような3周波数によってドライブされた高輝度LED、3個からの受光によってなされる。
 それら各周波数が重畳した光は魚眼レンズを通過した後、PSD素子によって受光され、同時に異なる3周波数が重畳した光電流を発生する。PSDによる受光信号(X1, X2, Y1, Y2:4チャンネル)はDC, 50, 60Hz,およびそれら高調波という外乱光を除外するための4つのアナログフィルターを兼用したT-Z AMPと増幅回路で処理された後、12-bit ADCで量子化され、AVRのTimer2インタラプトによって5kHzおきに4チャンネルがSRAMにバッファリングされ(ATMega1281マイコンを使用し、8kB RAM)、129次FIRフィルタリングに必要なワード長(512+129 x 4チャンネル)までストアされる。これら回路はロボットに搭載されたNiH 電池(単3,1.2V x 4)によって駆動されるよう、低電圧、低消費電流の回路構成が採用されている。
 受光データーは必要なデーター数までAVR内のSRAMに蓄積された後、FPGA(Altera Cyclone-II)にパラレル転送され、その後、FPGAで各4チャンネルに対し、3つの周波数に対して5kHzサンプリング周波数に対する129次FIRフィルター処理(周波数分離)を行い(一部、浮動小数演算)、その各3つの周波数に対するRMS値がFPGAからSPIインターフェースでATMega1281マイコンに読み出される。
 FPGAでFIR演算中、余った時間で同時に、ATMega1281によって3軸加速度センサーより得た値によってロボット上の魚眼レンズの傾きを検出し、オイラー角・逆変換行列から傾き角の補正データーを用意する。FPGAでは、その間、FIRフィルターによって3つの各LEDの周波数フィルタリングによる各RMS値が浮動小数演算で算出される。ATMega1281マイコンでFPGAからの演算中・Busyフラグ線をセンスした後、計算が終了したなら、結果(Single float, 32-bit)をSPIインターフェース・ライクな方式で読み込む。その後、ロボットの現在座標の計算をロボットの傾きデーター(3軸加速度センサーから算出)による補正をオイラー角逆行列計算によって算出し、それによって3つの光源角度を補正しながらロボットの現在位置座標をcm以下の精度で得る。
 その座標から、ロボット間の距離による力場(例:逆2乗則)による次の進出点を計算し、ロボットの次の移動点へのモーター制御(ステップモーター起動)を行う。ロボットどうしはZigBeeで通信しあっており、先の位置座表検出システムによって計算された各ロボット座標の値がロボット相互の通信によって共有されている。各ロボットどうしの距離は、各ロボットにおいてそれらのデーターから計算される。

 システムは複数台の小型ロボットが、各ロボットに搭載されたマイコン・プログラムによって記述された力場の法則に従って運動する多体系のシミュレーターであり、物理的には3体問題等の解を求めることができるような、いわば複雑系システムである。また、生物が群れを作る現象のシミュレーターとしても利用可能である。さらに、非線形力場によるカオスダイナミックスの実際の運動などもターゲットと出来る。このような系は自然コンピューターとも呼ばれる方式である。

 ATMega1281を使ったのは、ATMega128では3.3V駆動が出来なかったためである。また、1281の方がSRAM容量が大きく、3つの周波数成分 x 4チャンネルの十分なデーター数をバッファリングするには、Mega128では不足である。Mega1281は日本橋の千石電商にあった。AVRのプログラムはBASCOMで、FPGAのプログラムはQuartusでやっており129次FIRフィルターや浮動小数点・積和演算回路などを実装している。AVR側はそれほど演算速度が必要でないため、BASCOMで十分であるし、その方が開発効率も良い。全体の系の速度は主にFPGA側のFIR演算で決まる。

Pending:

システムは小型だが非常に複雑な回路や方式の説明で、詳細の解説には文章容量が多くかかるので(FPGAによるFIRフィルター構成とか、オイラー角逆変換の計算の説明とか)、う〜ん、大変じゃ。また、気が向いたら追記します。

Top Pageへ