沼津高専 電子制御工学科

 

システム基本設計書

 

MIRS0502-DSGN-0002

改訂記録

版数

作成日

作成者

承認

改訂内容

A07

2005.9.9

田中

天野

初版

B07

2005.9.9

田中

天野

エレキ、ソフトの文章の追記 フローチャート、外観図の変更 詳細図の追記

C07

2005.9.13

田中

天野

メカの文章の追記、ソフトウェアの文章を改訂、

 

システム基本設計書

       基本的にはシステム企画提案書に基づくようにする。

 

    メカニクス

標準MIRSを基盤として以下の改良を行う。

1.    ポスト判別部を装備する

    仕様

ws(ホワイトセンサ)を4つ縦に並べ、それぞれのwsを、ポストのラインの2~5本目に高さを合わせておく。

タッチセンサとバンパを1組とりつける。また、そのタッチセンサが、wsの反応しやすい距離であたるような位置に取り付ける。

    特徴

(A)ポストに接触したときに一部に衝撃が集中しないようにする

(B)タッチセンサの位置を微調整できるような機構にする

(C)各WSはスペーサーで調節する

(D)全WSを1度に微調整できる機構にする

 

2.その他の変更点

        ・右側面にUSSを取り付ける

・前面のTSとバンパを取り外し、後部にIRSとTSとバンパを取り付ける

LCDボードを上部に設置する。

 

 


 


MIRS外観図

 

線吹き出し 2: (D)線吹き出し 3: (C)

                                          ①詳細図

 

 

    エレクトロニクス

* 回路構成

 *-1 回路構成図

 

図1:回路構成図

 
 

 

 


-2 回路部品機能性能概略

MIRSにおける回路部品の機能性能概略を以下に記す。

・システムの基本部分としてPC/AT互換のパーソナルコンピュータを使用する。

・バックプレーンとして4スロットのISAバスを使用する。

・イーサネットケーブルを使用してネットワークに接続することができる。

MIRS固有の入出力機能の制御をFPGAボードとドーターボードによって実現する。

MIRSで使用する全ソフトウェア、及びFPGAボードの回路情報は全てフラッシュディスクに保存する。

・センサ機能として4個のタッチセンサ、3個の赤外線センサ、4個の超音波センサ、2個のロータリーエンコーダを有する。

・マンマシンインターフェースの入力装置としてテンキー、出力装置として液晶ディスプレイを有する。

・駆動系の速度制御をPWM制御によって行う。

・電源として7.2Vニッカド充電電池2個を使用し、その内のひとつは+5Vに変換してから回路系電源として電子回路部に供給し、もうひとつは駆動系電源として7.2Vのまま緊急停止機能を介してモータに供給する

 

-3 標準MIRSから流用するもの

l        超音波センサボード×4

l        IRセンサボード×3

l        WSセンサ×4

l        タッチセンサ×4

l        ロータリーエンコーダ×2

l        モータ×2

l        MPCボード

l        CPUボード

l        フラッシュディスク

l        FPGAボード

l        電源ボード

l        テンキー

l        ドーターボード

l        液晶ディスプレイボード(LCD)

 

 

       それぞれのボードの仕様はエレクトロニクス詳細設計書テンプレート(MIRSATLM-REGU-1005)を参照。

 

 

    ソフトウェア

 

MIRS0502のソフトウェアは基本的にMIRS標準機のプログラムに準ずる。ただし、以下のような拡張・追加を行う。

 

拡張・追加項目の詳細

1.ポスト獲得数の変更

規定のポスト数に達するまで探索・獲得動作を続ける。

 

2.基準ポストおよび基準点設定動作

競技エリアの中心で回転してポストを探索し、一番近いポストへ移動してそのポストを基準ポストとする。その後、基準ポストに対して赤外線発信機(スイッチ)のところまで周回運動をし、そこを基準点として設定する動作プログラム。

 

3.中心へ移動する際の基準ポスト獲得動作

初期位置から中心へ移動する際に、移動する道上にポストが存在する場合、そのポストの周回上に移動し、そのポストを基準ポストとする動作プログラム。

 

4.ポスト探索動作

基準ポストに対して周回運動をしながら、側面の超音波センサでポストを探索する動作プログラム。

 

5.ポスト判別動作

基準ポストから発見したポストへ移動し、正面の白線センサを用いてポストのラインを読み取り、獲得するポストかどうかを判別する動作プログラム。白線センサ4つの出力から線が何本目まであるかを判断し、ポスト番号を判別する。判別後、獲得するポストなら獲得動作に移行し、そうでなければバックして基準ポストの周回上に復帰する。

 

6.ポスト獲得動作

ポストのスイッチに体当りする際に、後ろ向きにぶつかり、後ろの赤外線センサでスイッチが押された(赤外線発信がとまった)ことを確認するように標準機の獲得動作プログラムを変更する。(獲得動作は基本的に標準機と同じプログラムを用いる)

 

7. 2回目の動作

 基準ポストの基準点から何度周回したらどれくらいの距離に何番のポストがあるかを記録し、競技2回目にはじめから順にポストを獲得できるようにする。

→記録しておくデータ[基準ポストの基準点からの角度,距離,ポスト番号]

 

8.発見できないポスト番号を飛ばす

 一通りの探索をしても発見できない番号があるとき、その番号の順番を飛ばして獲得していく。たとえば、2番のポストが発見できないとき、1→3→4・・・ の順でポストを獲得する。

 

9.不必要なプログラムを削除

  下に示す“MIRS標準機から流用する関数”に含まれない関数を削除する.

 

 

フローチャート

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


                            (注)本戦2回目はAは省略してB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


MIRS標準機から流用する関数

・行動制御系モジュール

post_search.c

circle_position.c

post_approach.c

functions.c

post_get.c

 

・駆動系モジュール

void pwm_enco_start(int period)

void pwm_enco_stop(void)

void pwm_enco_restart(void)

void encoder_data(float *l_distance, float *r_distance, float *l_speed, float *r_speed, int *br)

void encoder_data2(float *l_angle, float *r_angle, int *br)

void encoder_data3(float *l_angle, float *r_angle, int *br)

void pwm_both_data(int l_duty, int r_duty)

void pwm_straight(int l_distance, int r_distance)

void pwm_rotate(int angle)

void pwm_lqr_straight(int distance, int time)

void pwm_lqr_rotate(int angle, int time)

void pwm_lqr_circle(int radius, int angle, int time)

int lqr_straight(int distance, int time)

int lqr_rotate(int angle, int time)

int lqr_circle(int radius, int angle, int time)

 

・スレッド系モジュール

void *irs_ts_ws(void *t)

void *encoder(void *t)

void *uss_read(void *t)

void *uss_read2(void *t)

 

※各センサーに関するモジュール・関数は標準機のものを流用する。

 

 

新たに作成する関数

    基準点設定関数

 はじめに基準ポストに接近したとき、赤外線発信部の位置まで周回移動し、

そこを基準点として記憶する。

 

    ポスト探索関数2

 基準ポストの周回を移動しながら、他のポストを探索する。

 

    ポスト番号確認関数

 ポスト判別部のタッチセンサが反応するまでポストに接近して、前方のWSによってポストのラインを読み取り、

ポスト番号を読み取る。

 

獲得すべきポストへ移動関数

記録したポストのデータをもとに、獲得すべきポストの角度分だけ基準ポストを周回する。前方の超音波センサを用いて、その場から右90°付近で、かつ獲得すべきポストの距離と、ほぼ同じくらいの距離にあるポストが見つかるまでその場で回転する(角度・距離の許容誤差、最大回転数はプログラム上で定義する)。見つけたらそのポストへ前進する(見つけられない場合はそのポストをとばす)。決められた距離でとまる。

 

    位置補正関数

 とるべきポストを周回した後で、基準ポストと現在の位置とのずれを修正するように基準ポストに戻る。

 

    フェイルセーフ関数

エラーが起こったときに、一番近いポストに移動し獲得する。その後、そのポストを周回しながら他のポストを探し、見つけたらすぐに獲得しにいく。