目次
前
次
次回にむけて
2015年の大会が終わり、次回のマシンを考えます。
今回作成したマシンは、低重心で足回りの走行は
マイコンにとっては、指示だけで動く優れもの。
太陽光に負け、うまく走行できなかっただけで
それをクリアすればよいと思いました。
次回も、今回のマシンを利用して、センサー周辺を
強化して挑戦することに。
今回、新規導入し、実践で使えた内容をリストしてみます。
- 動作制御、センサー処理は、Arduinoが担当
- 走行処理、スタートゲートセンシングはFPGAが担当
- スタートゲートセンシングに、超音波センサー利用
- モータのDUTY比をSPIでFPGAに転送
- システム状態を2LEDで表示
- 走行モードを2LEDで表示
ルネサス対策で、78kを利用することも考えましたが
78kF0クラスを実装するための面積がなく、見送りに。
並列に動作するプロセッサを用意し、各プロセッサに
機能割当てします。最上位プロセッサは、戦略の指示
を出し、報告を受ける形態にしました。
機能割当てされたプロセッサの動作を記述し、テスト
していくと、デバッグがしやすくなります。
他プロセッサの状態を考えずに、与えられた機能を実現すると
最上位プロセッサは、機能実現プロセッサへの指示出しと報告
を待つ動作に専念できます。
ピラミッドの頂点に、最上位プロセッサがいて、その下に
中間層担当のプロセッサがいる階層構造の場合、どの様な
長所があるのかを考えてみます。
階層構造にすると、最下層プロセッサあるいは電子回路は
単純な動作だけの担当になるので、実現方法を考えやすく
作成も容易。
最上位プロセッサとハードウエアに近いプロセッサ、電子回路
では、上位にいくほど指示と判断ができればよく、階層が下に
なるにつれて、高速または専用プロセッサ、電子回路にする方
がよいとわかりました。
パターン認識処理
毎年事務所のスペースを貸してくれる、MCR_VCの発案者
Mさんの画像処理を紹介しておきます。
毎回自分のマシンの移動処理をデバッグしながら
他の人は、どういう処理をしているのかをMさん
のマシンで見ています。
2014年度マシンは、次のようなパターンを認識して
移動していました。
自分に超音波センサー基板の評価を依頼した、京都のIさん
から、次の情報が話として出ました。
カメラ画像では、収差により中央付近の画像の信頼度が高く
端にいくほど、低くなる。中央付近の画像を利用した方が
確度がよくなる。
感度に関しては、次のような曲線を描きます。
Mさんのマシンは、カメラが常に中央にあるラインを
向くようになっています。画面中央から、左右にどれ
ほどラインが離れているかを見て、ズレがなくなるよう
制御しています。
縦方向にラインをスキャンしていくと、3ピクセル程度の
違いはあるものの、ほぼ同じ位置にラインが出ます。
どちらかのラインで5ピクセル以上位置が異なれば、その
ときは、マーカーを検出しているか、クランクの90度で
曲がる所にいると判断します。
画像データから、位置とパターンの2情報を抽出し
それを上位関数で判断し、移動の指示を与えるよう
プログラムを組んでいました。
構造体を利用し、2情報を構造体変数のメンバーとして
管理します。
typedef struct {
unsigned char location ;
unsigned char pattern ;
} GRAPHP ;
Mさんのコンピュータは、RX62シリーズで、画像データを
取得するため、DMA(Direct Memory Access)を利用。DMAに
よる画像データ取得なので、CPUは準備ができるまで、他の
作業をこなせます。
画像データがメモリに入ったなら、上位側に通知されるので
CPUがパターンを認識していました。
目次
前
次