開発へ戻る ドキュメント管理へ戻る チームデータへ戻る 階層5 MIRS9405 MIRS9404 MIRS9403 MIRS9402 MIRS9401 MIRS94チームデータ MIRS94チームデータに戻る 初版 平田 96/3/8 完了報告書 林 96/3/6 プログラム(リアルタイムモニタ使用) 第2版 溝口 土屋 平沢 95/11/13 試験成績書 初版 平田 95/7/17 システム運用マニュアル 初版 平田 95/6/18 システム総合試験計画書 初版 久米 溝口 95/7/18 システム詳細設計書(インターフェイス編) 第2版 冨岡 鈴木 堀内 平沢 96/3/2 システム詳細設計書(メカニクス編) 初版 林 平田 久米 95/7/17 システム詳細設計書(ソフトウェア編) 初版 土屋 95/7/17 システム詳細設計書(エレクトロニクス編) 初版 全員 95/3/10 MIRS調査検討報告書 第3版 全員 95/4/27 MIRS基本設計仕様書 初版 全員 94/12/13 MIRS開発計画書 備考 執筆者 日付 表題 成果物一覧 MIRS9405成果物登録簿 MIRS94チームデータに戻る 94DS-4-4001完了報告書1996/3/8明城 94DS-4-S-1001詳細設計書(ソフトウェア)及びプログラム1996/3/8明城 94DS-4-M-5001詳細設計書(メカニクス)1996/3/8明城 94DS-4-E-2001詳細設計書(エレクトロニクス)1996/3/8明城 94DS-4-E-1001エレクトロニクス、インターフェイス全図1996/3/8明城 94DS-4-3001mirs9404総合部品表1996/3/8明城 94DS-4-2001基本設計書1996/3/8明城 94DS-4-1001mirs開発計画書1996/3/8明城 資料番号表題日付登録者 チーム番号:4 MIRS成果物登録簿 目次に戻る mirx.cmdコマンドファイル makefileメイクファイル moment.sエントリファイル init.cイニシャライズ用プログラム m9402.hヘッダファイル task09-1.c各センサ試験 task08-2.c規定走行試験 task08-1.c規定走行試験 task07-2.cペナルティ戦 task07-1.cペナルティ戦 task06-2.cマンマシンインターフェイス管理 task06-1.cマンマシンインターフェイス管理 task05-2.cロータリエンコーダ管理 task05-1.cロータリエンコーダ管理 task04-2.cPWM制御 task04-1.cPWM制御 task03-2.cタッチセンサ管理 task03-1.cタッチセンサ管理 task02-2.c超音波センサ管理 task02-1.c超音波センサ管理 task01-2.c赤外線センサ管理 task01-1.c赤外線センサ管理 task00-2.c行動判断 task00-1.c行動判断 table.h自己状態演算 mirx.cリアルタイムモニタ メインプログラム ファイル名 内容 MIRS9402プログラム 表紙に戻る 開発規約 マンマシンインターフェース仕様 流れ図 データ仕様表 データ一覧表 モジュール遷移図 モジュール仕様表 モジュール機能表 TASK別モジュール表 初めに 目次 成果物登録簿へ 目次へ 付加。  8896/3/8モジュール仕様表において、ペナルティ戦用 タスクの内容を 7796/3/8MMI仕様の変更  へ注釈付加。  た改訂日の訂正(西暦を書き忘れていた)。また、「始 めに」 6696/3/8開発規約の全面改訂、及び幾つかのファイル 内に記載され コーダ系のデータの誤りも修正。  る、超音波系モジュール及びデータの欄を修正。また、 エン 表、モジュール遷移図、データ一覧表、データ仕様表に おけ 5596/3/5TASK別モジュール表、モジュール機能 表、モジュール仕様 波系モジュール修正。および超音波データ仕様修正。  4495/9/5モジュール遷移図の超音 ンコーダ測定データの内容変更。  3395/8/24MMI仕様変更。及びデータ仕様書の走行用 モードデータとエ 2295/8/23超音波系のモジュール及び、データ仕様書 の数箇所を変更  1195/7/24初版  項番版数年月日記事(改訂内容)備考 作成者石川・小谷・清 仕様書番号94DS02ー0004 MIRS9402詳細設計仕様書(ソフト) 表紙に戻る 目次に戻る コマンドファイル(mirx.cmd) メイクファイル(makefile) エントリファイル(monent.s)  また、関連するファイルとして以下を用いる。但し、 ()内はファイル名である。  主にハードウェア側の初期化を行う。その他、グロー バル変数の初期化などを行う。 init.c  taskXX-1.cで呼び出される各モジュールをここへま とめて記述する。ヘッダファイルはm9402.h及び各ライブ ラリを用いる。グローバル変数を用いる場合、エクスター ン宣言をする。 taskXX-2.c(XXはタスク番号00〜09)  リアルタイムモニタによって呼び出されるタスク(イ ニシャライズ、ノーマル、タイマ、割込みの各処理)をこ こに書く。ここには各モジュール間の処理の構成のみをプ ログラムで記述し、各モジュールの内容はtaskXX-2.cへ まとめて書く。 taskXX-1.c(XXはタスク番号00〜09)  リアルタイムモニタが各タスクの処理を管理するため に必要な情報をここへ書く。各タスクの宣言、各タスクの 状態を示す構造体の定義、及び各タスクで用いられるグロ ーバル変数の定義からなる。リアルタイムモニタの仕様に 従う。 table.h  リアルタイムモニタ本体。本ソフトウェアのメイン関 数はこの中に含まれる。このプログラムは、94,95年度長沢 卒研によって提供される。 mirx.c  各ファイルの内容は以下の通りである。 イニシャライズ用プログラム(init.c) MIRS9402 ヘッダファイル(m9402.h) MIRS9402 各タスク(taskXX-1.c,taskXX-2.c;XX はタスク番号00〜09) リアルタイムモニタ ヘッダファイル(table.h) リアルタイムモニタ メインプログラム(mirx.c)  まず、本MIRSソフトウェアに用いるプログラ ムは、以下の通りとする。但し、()内はファイル 名である。 * 1996/3/8全面改訂 開発規約 表紙に戻る 目次に戻る 3垂直補正7左前方旋回(半径小) 2左後方旋回6左前方旋回(半径大) 1右後方旋回5右前方旋回(半径小) 0往復運動4右前方旋回(半径大) 1自己位置座標(縦)3姿勢角度 0走行試験番号2自己位置座標(横) 4桁目1〜3桁目4桁目1〜3桁目 *座標は1cm単位、角度は、360度を1周とし て、スタート時のMIRS正面を90度として、反 時計回りに増やしていく。 試験中は、4桁目に0〜3までの数字、1〜3桁に 走行試験番号,現在自己位置の座標(縦、横)と角度 を下図のように対応させ表示する。 3、規定走行試験時         (循環)5距離データ(3つのセンサからの距離 データを順次表示)         (左側)4距離データ(左側のセンサのデータを 表示)         (右側)3距離データ(右側のセンサのデータを 表示) 超音波センサ試験(前方)2距離データ(前方のセンサのデータを 表示) タッチセンサ試験1タッチセンサONデータ(表示方法は、本戦時 と同じ) 赤外線センサ試験0赤外線センサONデータ(表示方法は、本戦時 と同じ) 試験名センサ試験番号7SEGに表示するデータ 試験中は、4桁目にセンサ試験番号、1〜3桁に下のデータを表示 する。 2、各センサ試験時 又、緑のLEDは、赤外線追跡モードに移ったら点灯する。 右旋回モード   (ペナルティ戦のみ)2222 左90度回転モード(ペナルティ戦のみ)1111 回避モード   (本戦、ペナルティ戦共通)4000 赤外線追跡モード(本戦、ペナルティ戦共通)3000 赤外線捜索モード(本戦のみ)2000 超音波捜索モード(本戦、ペナルティ戦共通)1000 モード名7SEGーLED ** 1、本戦・ペナルティー戦時(モードの遷移を表示) 0はOFF、1はONを意味する 0111   (超音波センサー前方表示)1111       (左前方旋回ー小) 0110   (超音波センサー左側表示)1110       (左前方旋回ー大) 0101   (超音波センサー右側表示)1101       (右前方旋回ー小) 0100   (超音波センサー循環表示)1100       (右前方旋回ー大) 0011(タッチセンサ)1011       (垂直向き補 正) 0010各センサ試験モード(赤外線センサ)1010        (左後方旋回) 0001ペナルティー戦用1001       (右後方旋回) 0000本戦用1000規定走行試験モード(往復運動) パターンモード名パターンモード名 ** 1996/3/8改訂箇所 ディップスイッチ × 4赤LED × 1 7SEG−LED × 4緑LED × 1 マンマシンインターフェース仕様 表紙に戻る 目次に戻る 流れ図(フローチャート) 表紙に戻る 目次に戻る 備考  *・DataNo.5ー4現在位置姿勢データグローバル ・DataNo.5ー2エンコーダ測定データBB ・DataNo.3ー2タッチセンサONデータBB ・DataNo.2ー6相手サーチデータBB ・DataNo.2ー4超音波距離データBB ・DataNo.1ー2赤外線センサONデータBB 7 行動判断系 備考  ・ビット7緑色ダイオード(点灯:1,消灯:0) ・ビット6赤色ダイオード(点灯:1,消灯:0) ・ビット4,57segLED選択(7segLED下位から00, 01,10,11) ・ビット0〜37segLEDデータ信号 (表示する数字(0〜 9)を格納) データ構成 備考  データ構成赤外線追跡中のとき非零,追跡中でなければ零 データ種別グローバル データ型1バイト無符号整数 受け渡し先(6ー4)表示データ作成モジュール 受け渡し元(0ー1)本戦用行動判断モジュール シンボル名mmi_chase データ名DataNo.6ー5 追跡データ 備考* ローマ数字の"vii"を"iiv"に間違えました。 データ構成7segLEDに表示する4桁の10進数(0〜999 9)がそのまま格納される. データ種別グローバル データ型2バイト無符号整数 受け渡し先(6ー4)表示データ作成モジュール 受け渡し元(0ー1)本戦用行動判断モジュール (7ー1)ペナルティ戦用行動制御モジュール (8ー1)規定走行試験用行動制御モジュール (9ー1)各センサデータ表示モジュール シンボル名mmi_iivseg データ名DataNo.6ー4 7segLED表示データ 備考このデータの内容と各指定モードとの対応は後に述べる. データ構成task06 BB No.1  上位4ビットをゼロ,下位4ビットをディップスイッチデータと する. データ種別BB データ型1バイト整数型 受け渡し先(0ー1)本戦用行動判断モジュール (7ー1)ペナルティ戦用行動制御モジュール (8ー1)規定走行試験用行動制御モジュール (9ー1)各センサデータ表示モジュール 受け渡し元(6ー3)モード判定モジュール シンボル名mmi_mode データ名DataNo.6ー3 指定モードデータ 備考  データ構成8ビットデータの下位4ビット  4個のディップスイッチのON,OFFが、4ビットの1、0に それぞれ対応する。 データ種別*外部からの入力 (アドレスFDFC13Hのデー タ) データ型4ビットフィールド 受け渡し先(6ー3)モード判定モジュール 受け渡し元/MMI シンボル名mmi_dip データ名DataNo.6ー2 <ディップスイッチデータ> 備考  データ構成8ビットデータの最上位1ビット 押しボタンスイッチがONの時1、OFFの時0となる。 データ種別*外部からの入力 (アドレスFDFC13Hのデー タ) データ型1ビットフィールド 受け渡し先(6ー2)スタートスイッチ待ちモジュール 受け渡し元/MMI シンボル名mmi_push データ名DataNo.6ー1 <押しボタンスイッチデータ> 6 マンマシンインターフェイス系 備考 位置の中心(座標系の原点)は、スタート時における自機左 手前の競技場の端とする。 整数型データは小数型データの小数点以下を丸めたもである。小数 型データはここのモジュールにて保持され、整数型データはその他 のモジュールへ渡される。 way_i現在走行距離  [cm] thetav_i現在姿勢角速度 [rad/sec] theta_i現在姿勢角   [rad] v_i現在速度    [cm/sec] y_i現在位置y座標 [cm] x_i現在位置x座標 [cm] ・(整数型) way現在走行距離  [cm] thetav現在姿勢角速度 [rad/sec] theta現在姿勢角   [rad] v現在速度    [cm/sec] y現在位置y座標 [cm] x現在位置x座標 [cm] 備考*両側カウント値同時リセットはこのモジュールでは使わな い。 データ構成*右側カウント値読み込み直後 → 1ビット目=0  、 0ビット目=1 *左側カウント値読み込み直後 → 1ビット目=1 、 0ビッ ト目=0 *(両側カウント値同時リセット → 1ビット目=1 、 0ビ ット目=1) データ種別* 外部への出力(アドレスXXXX09Hのデータ)      X:ジャンパの設定による *本機においては XXXX=FC60  データ型2ビットフィールド 受け渡し先/ロータリーエンコーダユニット 受け渡し元*(5ー1)エンコーダ測定データ作成モジュール シンボル名rot_reset データ名DataNo.5ー3 <エンコーダカウントリセットデータ > 備考 引き数(小数型)は現在位置姿勢演算モジュールへ渡され、 BB(整数型)はその他のモジュールへ渡される。 データ構成rot_measure[0] 駆動用右車輪角速度 [rad/sec] rot_measure[1] 駆動用左車輪角速度 [rad/sec] task05 BB No.1 駆動用右車輪角速度 [degree/sec] task05 BB No.2 駆動用左車輪角速度 [degree/sec] *BB:4バイト符号付き整数型の1次元配列(2要素) *引数:単精度符号付き小数型の1次元配列(2要素) データ種別 備考 データの正負は、タイヤが前進するとき正,後退するとき負 と定める. データ構成rot_receive[0] 右車輪カウント値 rot_receive[1] 左車輪カウント値 データ種別外部からの入力 *  (アドレスXXXX01H,03H,05H,07Hのデー タ)     X:ジャンパの設定による *本機においては XXXX=FC60    データ型*12ビットフィールドの1次元配列(2要素) 受け渡し先(5ー1)エンコーダ測定データ作成モジュール 受け渡し元/ロータリーエンコーダユニット シンボル名rot_receive データ名DataNo.5ー1 <ロータリーエンコーダカウント値> 5 ロータリーエンコーダ系 備考 これにより、PWM信号のデューティー比を設定する。速度 設定値をratioとすると、モータにかかる電圧は   Vm * (ratio/128) [V] (Vm:モータにかかる最大 電圧[V]) で与えられる。 * ビット0の値は、ハードと調和させる。 * 本機においては、両車輪とも    1:前進方向    0:後退方向 とする。 データ構成*pwm_data[0] 右車輪回転    (ー128〜12 7) *pwm_data[1] 左車輪回転    (ー128〜127) *7ビットからなる速度の絶対値を、ビット7〜1へ配置する。ま た、回転方向をビット0で与える。 データ種別*外部への出力 (アドレス XXXX11H,13H  のデータ)     X:ジャンパの設定による *本機においては XXXX=FC61 データ型*1バイト無符号整数の1次元配列 受け渡し先/PWM回路 受け渡し元(4ー1)走行データ作成モジュール シンボル名*pwm_data データ名DataNo.4ー2 <走行データ> 備考*ビット1、2は、その場回転の為にある。 *・ビット6,7移動形態 (00:停止,01:直線,10:左旋回,11:右旋回) ・ビット5前後進行方向(1:前,0:後ろ) ・ビット回転半径(1:大きい,0:小さい) ・ビット3進行速度(1:速い,0:遅い) 但し、2桁の数字はビットの高い方から順に書いたものである。以 後、同様にする。) *・ビット1、2タイヤ回転方向調整 (10:左側タイヤ逆転、11:右側タイヤ逆転、0X:そのま ま、 *・ビット0ダミー(0,1のどちらでもよい) 4 PWM制御系 備考  データ構成task03 BB No.1 ・ビット0 右方向タッチセンサONデータ (ON:1,OF F:0) ・ビット1 前方向タッチセンサONデータ (ON:1,OF F:0) ・ビット2 左方向タッチセンサONデータ (ON:1,OF F:0) ・ビット3 タッチセンサONフラグ    (ビット0〜2の論 理和) ・ビット4〜7 常に0 データ種別BB データ型1バイト無符号整数 受け渡し先(0ー1)本戦用行動判断モジュール (7ー1)ペナルティ戦用行動制御モジュール (8ー1)規定走行試験用行動制御モジュール 受け渡し元(3ー1)タッチセンサONデータ作成モジュール シンボル名ts_on データ名DataNo.3ー2 タッチセンサONデータ 備考  データ構成上位ビットから順に ・タッチセンサフラグ     (下の3ビットの論理和) ・左タッチセンサスイッチ   (スイッチON:1,OFF: 0) ・前タッチセンサスイッチ   (スイッチON:1,OFF: 0) ・右タッチセンサスイッチ   (スイッチON:1,OFF: 0) データ種別外部からの入力 *  (アドレス XXXX03Hもしくは07Hのデータ)     X:ジャンパの設定による *本機においては XXXX=FC60 データ型4ビットフィールド 受け渡し先(3ー1)タッチセンサONデータ作成モジュール 受け渡し元/タッチセンサユニット シンボル名ts_receive データ名DataNo.3ー1 <タッチセンサデータ> 3 タッチセンサ系 備考  データ構成*task02 BB No.5 ・ビット0 右方向相手サーチデータ (ON:1,Off:0) ・ビット1 前方向相手サーチデータ (ON:1,Off:0) ・ビット2 左方向相手サーチデータ (ON:1,Off:0) ・ビット3 相手サーチフラグ    (ビット0〜2の論理和) ・ビット4〜7 常に0 データ種別BB データ型1バイト無符号整数 受け渡し先(0ー1)本戦用行動判断モジュール (7ー1)ペナルティ戦用行動制御モジュール (8ー1)規定走行試験用行動制御モジュール 受け渡し元*(2ー3)相手サーチモジュール シンボル名uss_search データ名DataNo.2ー6 相手サーチデータ 備考何個前までのデータを保存しておくかは未定 *最終的には5個で競技を行った データ構成*uss_bunpu[0][n] n回前からの右方向対障害物距離  [cm] *uss_bunpu[1][n] n回前からの前方向対障害物距離 [cm] *uss_bunpu[2][n] n回前からの左方向対障害物距離 [cm]  (n:非負整数) データ種別スタティック データ型*4バイト符号付き整数の2次元配列 受け渡し先*(2ー3)相手サーチモジュール 受け渡し元*(2ー3)相手サーチモジュール シンボル名uss_bunpu データ名DataNo.2ー5 超音波距離分布データ 備考障害物との距離 データ構成task02 BB No.1 右方向対障害物距離  [cm] task02 BB No.2 前方向対障害物距離 [cm] task02 BB No.3 左方向対障害物距離 [cm] データ種別BB データ型*4バイト符号付き整数の1次元配列(3要素) 受け渡し先*(2ー3)相手サーチモジュール (0ー1)本戦用行動判断モジュール (7ー1)ペナルティ戦用行動制御モジュール (8ー1)規定走行試験用行動制御モジュール 受け渡し元*(2ー1)超音波入出力モジュール シンボル名uss_length データ名DataNo.2ー4 超音波距離データ 備考  データ構成*超音波センサを使って測定した距離データ[cm] データ種別*返し値 データ型*4バイト符号付き整数 受け渡し先*(2ー1)超音波入出力モジュール 受け渡し元*(2ー2)超音波距離データ作成モジュール シンボル名uss_count データ名*DataNo.2ー3 超音波センサカウントデータ 76543210 備考 ビット番号は、下図のようにする。         ビット5アンダーフローデータ XXXX51H ビット2,3折り返しセンサ選択信号 XXXX6F、71、73H超音波センサユニットのカウントデー タを3バイトに分けて表現 データ構成 データ種別 外部からの入力  *  (アドレスXXXX6FH,71H,73Hのデータ)     X:ジャンパの設定による *本機においては XXXX=FC61 アンダーフローデータ:1ビットフィールド 折り返しセンサ選択信号:2ビットフィールド カウントデータ:3バイトフィールド データ型 備考超音波送信信号 データ構成ビット6、7 :センサ選択信号 データ種別*外部への出力 (アドレス XXXX51H)X:ジ ャンパの設定による。 *本機においては XXXX=FC61 データ型2ビットフィールド 受け渡し先/超音波センサユニット 受け渡し元*(2ー1)超音波入出力モジュール シンボル名uss_control データ名DataNo.2ー1 <超音波センサコントロールデータ> 2 超音波センサコントロール 備考  データ構成task01 BB No.1 ビット0〜6:赤外線センサONデータ (ON:1,OFF: 0) ビット7  :赤外線ONフラグ 各ビットとセンサ位置との対応関係は以下に示す通りである。 * ・ビット0→ 側面右赤外線センサ * ・ビット1→ 斜め前方右赤外線センサ * ・ビット2→ 前面右赤外線センサ * ・ビット3→ 前面中央赤外線センサ * ・ビット4→ 前面左赤外線センサ * ・ビット5→ 斜め前方左赤外線センサ * ・ビット6→ 側面左赤外線センサ * ・ビット7→ビット0〜6の論理和 データ種別BB(Bulletin Board) データ型1バイト無符号整数 受け渡し先(0ー1)本戦用行動判断モジュール (7ー1)ペナルティ戦用行動制御モジュール (8ー1)規定走行試験用行動制御モジュール 受け渡し元(1ー1)赤外線ONデータ作成モジュール シンボル名irs_on データ名DataNo.1ー2 赤外線ONデータ 備考  データ構成不詳(8ビットデータ) データ種別*ソフトウェア外部からの入力 (アドレス XXXX 53Hのデータ) X:ジャンパの設定による *本機においては XXXX=FC61 データ型8ビットフィールド 受け渡し先(1ー1)赤外線ONデータ作成モジュール 受け渡し元/赤外線センサユニット シンボル名irs_receive データ名DataNo.1ー1 <赤外線センサデータ> 1 赤外線センサ系 * 1996/3/5改訂箇 データ仕様表 表紙に戻る 目次に戻る 6現在位置姿勢データ(5ー3)現在位置姿勢演算モジュール  5エンコーダ測定データ(5ー1)エンコーダ測定データ作成モジ ュール  4タッチセンサONデータ(3ー1)タッチセンサONデータ作成 モジュール(9ー1)各センサデータ表示モジュール 3相手サーチデータ*(2ー3)相手サーチモジュール(8ー1) 規定走行試験用行動制御モジュール 2超音波距離データ*(2ー1)超音波入出力モジュール(7ー 1)ペナルティ戦用行動制御モジュール 1赤外線センサONデータ(1ー1)赤外線センサONデータ作成 モジュール(0ー1)本戦用行動判断モジュール ステータス群   7 行動判断系 6<表示データ>(6ー4)表示データ作成モジュール/MMI 5追跡データ(0ー1)本戦用行動判断モジュール(6ー4)表示 データ作成モジュール 4 7segLED表示データ(0ー1)本戦用行動判断モジュー ル(7ー1)ペナルティ戦用行動制御モジュール(8ー1)規定走 行試験用行動制御モジュール(9ー1)各センサデータ表示モジュ ール(6ー4)表示データ作成モジュール 3指定モードデータ(6ー3)モード判定モジュール(0ー1)本 戦用行動判断モジュール(7ー1)ペナルティ戦用行動制御モジュ ール(8ー1)規定走行試験用行動制御モジュール(9ー1)各セ ンサデータ表示モジュール 2<ディップスイッチデータ>/MMI(6ー3)モード判定モジ ュール 1<押しボタンスイッチデータ>/MMI(6ー2)スタートスイ ッチ待ちモジュール 6 マンマシンインターフェイス系 *4現在位置姿勢データ(5ー3)現在位置姿勢演算モジュール (0ー1)本戦用行動判断モジュール(7ー1)ペナルティ戦用行 動制御モジュール(8ー1)規定走行試験用行動制御モジュール (5ー3)現在位置姿勢演算モジュール 3<エンコーダカウントリセットデータ>*(5ー1)エンコー ダ測定データ作成モジュール/ロータリーエンコーダユニット 2エンコーダ測定データ(5ー1)エンコーダ測定データ作成モジ ュール(0ー1)本戦用行動判断モジュール(7ー1)ペナルティ 戦用行動制御モジュール(8ー1)規定走行試験用行動制御モジュ ール(4ー1)走行データ作成モジュール(5ー3)現在位置姿勢 演算モジュール 1<ロータリーエンコーダカ   ウント値>/ロータリーエンコ ーダユニット(5ー1)エンコーダ測定データ作成モジュール 5 ロータリーエンコーダ系 2<走行データ>(4ー1)走行データ作成モジュール/PWM回 路 1走行用モードデータ(0ー1)本戦用行動判断モジュール(7ー 1)ペナルティ戦用行動制御モジュール(8ー1)規定走行試験用 行動制御モジュール(4ー1)走行データ作成モジュール 4 PWM制御系 2タッチセンサONデータ(3ー1)タッチセンサONデータ作成 モジュール(0ー1)本戦用行動判断モジュール(7ー1)ペナル ティ戦用行動制御モジュール(8ー1)規定走行試験用行動制御モ ジュール 1<タッチセンサデータ>/タッチセンサユニット(3ー1)タッ チセンサONデータ作成モジュール 3 タッチセンサ系 6相手サーチデータ*(2ー3)相手サーチモジュール(0ー1) 本戦用行動判断モジュール(7ー1)ペナルティ戦用行動制御モジ ュール(8ー1)規定走行試験用行動制御モジュール 5超音波距離分布データ*(2ー3)相手サーチモジュール*(2 ー3)相手サーチモジュール 4超音波距離データ*(2ー1)超音波入出力モジュール*(2ー 3)相手サーチモジュール(0ー1)本戦用行動判断モジュール (7ー1)ペナルティ戦用行動制御モジュール(8ー1)規定走行 試験用行動制御モジュール * 3超音波センサカウントデータ*(2ー2)超音波距離データ 作成モジュール*(2ー1)超音波入出力モジュール  2<超音波センサデータ>/超音波センサユニット*(2ー2) 超音波距離データ作成モジュール 1<超音波センサコントロールデータ>*(2ー1)超音波入出力 モジュール/超音波センサユニット 2 超音波センサ系  2赤外線センサONデータ(1ー1)赤外線センサONデータ作 成モジュール(0ー1)本戦用行動判断モジュール(7ー1)ペナ ルティ戦用行動制御モジュール(8ー1)規定走行試験用行動制御 モジュール  1<赤外線センサデータ>/赤外線センサユニット(1ー1)赤 外線センサONデータ作成モジュール データ名受け渡し元受け渡し先 1 赤外線センサ系 * 1996/3/5改訂箇所  / :外部の場所 < >:外部とのやり取り データ一覧表 表紙に戻る 目次に戻る モジュール遷移図 (1996/3/5超音波系改訂) 表紙に戻る 目次に戻る 備考  関連モジュール(6ー4)表示データ作成モジュール 起動条件各センサ試験モードにおいて、モジュール(6ー4)表示 データ作成モジュールの実行の終了したら再びノーマル処理登録さ れる。 出力7segLED表示データ 処理指定モードデータよりどのセンサから得られたデータを表示す るか判断し、7segLED表示データを作成する。 入力ステータス群、指定モードデータ 目的各センサ試験モードにおいて、センサから得られたデータをマ ンマシンインターフェイスで表示させるための制御を行う。 モジュールの属性ノーマル処理 モジュール名(9ー1)各センサデータ表示モジュール Task09 各センサ試験 備考  (6ー4)表示データ作成モジュール 関連モジュール(4ー1)走行データ作成モジュール 起動条件規定走行試験モードにおいて、走行データ作成モジュール の実行が終了したら再びノーマル処理登録される。 出力走行用モードデータ、7segLED表示データ 処理指定モードデータより、どのような軌道の走行を行うか判断 し、走行用モードを決定する。また、ステータス群からマンマシン インターフェイス用のデータを作成する。 入力ステータス群、指定モードデータ 目的規定走行試験モードにおいて、次にどのような行動をとればよ いか判断する。 モジュールの属性ノーマル処理 モジュール名(8ー1)規定走行試験用行動制御モジュール Task08 規定走行試験 備考  関連モジュール(4ー1)走行データ作成モジュール 起動条件ペナルティ戦モードにおいて、PWM制御タスクの実行が 終了したら、再びノーマル処理登録される。 出力走行用モードデータ、7segLED表示データ **動作は、基本的に本戦用タスクと同じだが、相手が正面にいる と判断した場合、その場で反時計まわりに90度回転し、それから 右前方へ旋回して相手の勝敗判定装置を捜すものとする。 処理ステータス群より、次の走行用モードを決定しそれをデータと して出力する。 入力ステータス群 目的ペナルティ戦モードにおいて、次にどのような行動をとればよ いかを判断する。 モジュールの属性ノーマル処理 モジュール名(7ー1)ペナルティ戦用行動制御モジュール TASK07 ペナルティ戦 備考  (9ー1)各センサデータ表示モジュール (8ー1)規定走行試験用行動制御モジュール (7ー1)ペナルティ戦用行動制御モジュール 関連モジュール(0ー1)本戦用行動判断モジュール 起動条件行動判断モジュール、各センサデータ表示モジュールでノ ーマル処理登録があったとき 出力<表示データ> 処理7segLED表示データをMMI用データに変換し、ポート を介してMMIへ送る。また、追跡データがONになっているとき は緑色LED点灯のための信号を送る。 入力7segLED表示データ、追跡データ 目的マンマシンインターフェイスの7segLED及び緑色LED によって、必要な情報を表示する。 モジュールの属性ノーマルタスク モジュール名(6ー4)表示データ作成モジュール 備考  関連モジュール(6ー2)スタートスイッチ待ちモジュール 起動条件(6ー2)スタートスイッチ待ちモジュールが実行された 後 出力指定モードデータ ・各センサ試験モード ・規定走行試験モード ・ペナルティ戦モード ・本戦モード 処理ディップスイッチデータより、それに見合った初期設定を行 う。また、ディップスイッチデータを指定モードデータに格納す る。指定モードとは概ね次の様に分けられるものを指す: 入力<ディップスイッチデータ> 目的各ディップスイッチのON/OFFに従ってシステム使用者の 要求を判断し、モード単位の初期設定を行う。 モジュールの属性タイマ処理 モジュール名(6ー3)モード判定モジュール 備考  関連モジュール(6ー3)モード判定モジュール 起動条件一定時間毎(但し、本戦モード中はマスクされる。) 出力なし 処理押しボタンスイッチデータがON信号であったら、処理を(6 ー3)モード判定モジュールに移す。 入力<押しボタンスイッチデータ> 目的押しボタンスイッチが押されるまで待つ。 モジュールの属性タイマ処理 モジュール名(6ー2)スタートスイッチ待ちモジュール 備考  関連モジュール  起動条件電源ON時 出力なし 処理68K,I/Oボードの初期化 入力なし 目的68K,I/Oボードの初期化 モジュールの属性イニシャライズ処理 モジュール名(6ー1)イニシャライズモジュール Task06 マンマシンインターフェイス管理 備考  (8ー1)規定走行試験用行動制御モジュール (7ー1)ペナルティ戦用行動制御モジュール (5ー2)エンコーダカウントリセットモジュール (5ー1)エンコーダ測定データ作成モジュール 関連モジュール(0ー1)本戦用行動判断モジュール 起動条件(5ー2)エンコーダカウントリセットモジュールの実行 後 出力*現在位置姿勢データ 処理車輪の径、両車輪の角速度、移動に掛かった時間から計算し て、現在位置姿勢データを作成する。 入力エンコーダ測定データ、現在位置姿勢データ 目的エンコーダ測定データ及びこのモジュールの1回前の実行結果 を用い、自機の現在位置、速度、姿勢、走行距離を算出する。 モジュールの属性タイマ処理 モジュール名(5ー3)現在位置姿勢演算モジュール 備考*このモジュールで、ロータリーエンコーダの積算カウンタの 値のリセット信号を出す予定だったが、それは(5ー1)でカウン ト値読込み直後にリセットする事にした。よってこのモジュールは ダミーである。 関連モジュール(5ー1)エンコーダ測定データ作成モジュール 起動条件(5ー1)エンコーダ測定データ作成モジュールが起動さ れた後 出力*無し 処理*無し 入力なし 目的*無し モジュールの属性タイマ処理 モジュール名(5ー2)エンコーダカウントリセットモジュール 備考  (5ー3)現在位置姿勢演算モジュール (5ー2)エンコーダカウントリセットモジュール 関連モジュール(4ー1)走行データ作成モジュール 起動条件一定時間毎 *<エンコーダカウントリセットデータ> 出力エンコーダ測定データ、 *また、ロータリーエンコーダのカウント値読込み直後には、その カウンタをリセットする信号を出力する。 処理ロータリエンコーダのカウント値をポートより各車輪ごとに読 み込み、これにソフト内のクロックのカウント値を用いて各駆動用 タイヤの角速度を算出し、エンコーダ測定データとして出力する。 入力<ロータリーエンコーダカウント値> 目的ロータリーエンコーダのカウント値を測定データ(タイヤの角 速度)へ変換する。 モジュールの属性タイマ処理 モジュール名(5ー1)エンコーダ測定データ作成モジュール Task05 ロータリーエンコーダ管理 備考ロータリーエンコーダからのフィードバックを考え、エンコー ダ測定データも入力とした。 (5ー1)エンコーダ測定データ作成モジュール (8ー1)試験用行動判断モジュール (7ー1)ペナルティ戦用行動判断モジュール 関連モジュール(0ー1)本戦用行動判断モジュール 起動条件各行動判断モジュールで、起動が必要になったときに、ノ ーマル処理に登録される。 出力<走行データ> ・曲線走行 ・直角走行 ・直進走行 処理走行用モードデータより、要求されている起動を判断し、それ を実現するために走行データを作成し、PWM制御回路へ出力す る。ここに、走行用モードとは概ね次の様に分けられるものを指 す: 入力走行用モードデータ、エンコーダ測定データ 目的各行動判断モジュールで作成された走行用モードデータによっ て要求される軌道を走行するために、モータ駆動の信号(走行デー タ)を出力する。 モジュールの属性ノーマル処理 モジュール名(4ー1)走行データ作成モジュール Task04 PWM制御 備考  関連モジュール  起動条件一定時間毎 出力タッチセンサONデータ 処理タッチセンサ反応信号をポートから得て、タッチセンサの反応 信号のON/OFFを表わしたデータを作成し、出力する。 入力<タッチセンサデータ> 目的タッチセンサのONデータを作成する。 モジュールの属性タイマ処理 モジュール名(3ー1)タッチセンサONデータ作成モジュール Task03 タッチセンサ管理 備考*超音波距離分布データは、単に過去数回の超音波距離データ から成るものとする。最新のデータ(超音波距離データ)はBBか ら受け取る。 *(2ー2)超音波距離データ作成モジュール 関連モジュール*(2ー1)超音波入出力モジュール 起動条件*(2ー1)超音波入出力モジュール内で呼ばれた時 出力相手サーチデータ、超音波距離分布データ 処理超音波距離データの現在までの分布が大幅に変化している傾向 にあるとき、相手を感知したものと判断し、これをデータとしてま とめる。 入力超音波距離データ、超音波距離分布データ 目的過去数回の超音波距離のデータの分布から、相手を超音波で感 知しているか判断する。 モジュールの属性*タイマ処理 モジュール名*(2ー3)相手サーチモジュール 備考*ポートから送られるカウント値が”超音波センサデータ”で あり、距離に変換したデータが”超音波カウントデータ”である事 に注意。 *(2ー3)相手サーチモジュール 関連モジュール*(2ー1)超音波入出力モジュール 起動条件*(2ー1)超音波入出力モジュール内で呼ばれた時 出力*超音波カウントデータ 処理*超音波センサのカウント値(超音波センサデータ)を、音速 とカウント周期を用いて障害物までの距離データ(超音波カウント データ)へ変換する。 入力*<超音波センサデータ> 目的*超音波センサのカウント値を超音波距離データに変換する。 モジュールの属性*タイマ処理 モジュール名*(2ー2)超音波距離データ作成モジュール 備考*超音波センサは3方向に取り付けられるためデータも3つ作 られるが、このモジュールが一回実行されるごとに読み取るデータ は1方向のみであり、その方向は、前回このモジュールが呼ばれた 時にポートへ書いたコントロールデータ(のセンサ選択信号)によ って決まる。 *(2ー3)相手サーチモジュール 関連モジュール*(2ー2)超音波距離データ作成モジュール 起動条件一定時間毎 出力*<超音波センサコントロールデータ>、*超音波距離データ 処理*まず超音波距離データ作成モジュールを呼び、カウントデー タ(距離を格納)を得る。カウントデータは距離データとしてBB (BulletinBoard)に書き込まれる。次に、超音波送信のためのコン トロールデータ(センサ選択信号等)をポートへ出力する。次に相 手サーチモジュールを呼び、それが終了したら、処理を終わる。 入力*超音波センサカウントデータ 目的*超音波センサ管理において、メインの役割を成す。超音波送 信と、超音波関連のモジュールの起動を行う。 モジュールの属性タイマ処理 モジュール名*(2ー1)超音波入出力モジュール Task02 超音波センサ管理 備考  関連モジュール  起動条件一定時間毎 出力赤外線センサONデータ 処理赤外線センサONデータをポートから入力し、データとして出 力する。 入力<赤外線センサデータ> 目的赤外線センサのONデータを得る。 モジュールの属性タイマ処理 モジュール名(1ー1)赤外線センサONデータ作成モジュール Task01 赤外線センサ管理 備考  (6ー4)表示データ作成モジュール 関連モジュール(4ー1)走行データ作成モジュール 起動条件本戦モード(モード判定モジュール参照)において、PW M制御タスクの実行が終了したら、再びノーマル処理登録される。 出力走行用モードデータ、7segLED表示データ、追跡データ 処理ステータス群より次の走行用モード(データ仕様書参照)を決 定し、MMIで表示すべきデータを作成する。 入力ステータス群(各センサモジュールから得られたデータ) 目的どのような行動をとればよいか判断する。 モジュールの属性ノーマル処理 モジュール名(0ー1)本戦用行動判断モジュール Task00 行動判断 ** 1996/3/8改訂箇所  * 1996/3/5改訂箇所   <  >:外部とのやり取り モジュール仕様表 表紙に戻る 目次に戻る 9-1各センサデータ表示モジュール(nrm)各センサから得られたデ ータを外部へ出力するための制御をおこなう。 8-1規定走行試験用行動制御モジュール(nrm)規定走行の試験を行 うための、行動制御をする。 7-1ペナルティ戦用行動制御モジュール(nrm)ペナルティ戦におけ る行動を制御する。 6-4表示データ作成モジュール(nrm)7segLED点灯データ等 を作成する。 6-3モード判定モジュール(tm)DIPスイッチのデータにより、 MIRSのモードを決定する。 6-2スタートスイッチ待ちモジュール(tm)スタートスイッチの入 力を得る。 6-1イニシャライズモジュール(ini)68k,I/Oボードの初期 化をする。 5-3現在位置姿勢演算モジュール(tm)エンコーダ測定データをも とに、現在位置、速度、姿勢を算出する。 5-2エンコーダカウントリセットモジュール(tm)*機能無し 5-1エンコーダ測定データ作成モジュール(tm)ロータリーエンコ ーダ測定データを作成する。 *エンコーダのカウントリセットを、カウント値読込み直後に行 う。 4-1走行データ作成モジュール(nrm)指定された起動走行を実現す るためのPWMデータを作成し、これをPWMへ出力する。 3-1タッチセンサONデータ作成モジュール(tm)タッチセンサの ONデータを作成する。 2-3*相手サーチモジュール(tm)*過去の距離データにより、壁 か相手かを判断する。 2-2*超音波距離データ作成モジュール(tm)超音波センサから送 られてきたカウント値を、超音波距離データに変換する。 2-1*超音波入出力モジュール(tm)*超音波センサの送受信と、そ れによるデータ作成の流れの総合的な管理を行う。 1-1赤外線ONデータ作成モジュール(tm)赤外線センサのONデー タを作成する。 0-1本戦用行動判断モジュール(nrm)本戦における行動を、各セン サ情報から決定する。 No.モジュール名機能 * 1996/3/5改訂箇所  モジュール別機能表 表紙に戻る 目次に戻る task09各センサ試験1:各センサデータ表示モジュール(nrm) task08規定走行試験1:規定走行試験用行動制御モジュール(nrm ) task07ペナルテイ戦1:ペナルティ戦用行動制御モジュール(nrm ) task06マンマシンインターフェイス管理1:イニシャライズモジュ ール(ini) 2:スタートスイッチ待ちモジュール(tm) 3:モード判定モジュール(tm) 4:表示データ作成モジュール(nrm) task05ロータリーエンコーダ管理1:エンコーダ測定データ作成モ ジュール(tm) 2:エンコーダカウントリセットモジュール(tm) 3:現在位置姿勢演算モジュール(tm) task04PWM制御1:走行データ作成モジュール(nrm) task03タッチセンサ管理1:タッチセンサONデータ作成モジュー ル(tm) task02超音波センサ管理*1:超音波入出力モジュール(tm) *2:超音波距離データ作成モジュール(tm) *3:相手サーチモジュール(tm) task01赤外線センサ管理1:赤外線ONデータ作成モジュール (tm) task00行動判断1:本戦用行動判断モジュール(nrm) task_Notaskの仕様モジュール   * 1996/3/5改訂箇所 tm:タイマ処理nrm:ノーマル処理 ini:イニシャライズ処理int:割り込み処理 Task別モジュール表 表紙に戻る 目次に戻る ** モニタの移植作業は、95年度卒業研究によって既に実現し ている。  本MIRSソフトウェアは,リアルタイムモニタを用いマルチタ スク処理を実現する.リアルタイムモニタは93年度電子制御工学 科卒業研究で開発されたMIRX68Kを使用する.但し,MIR X68Kは,旧型MIRS制御ボード用に開発されたもので,これ をVSBC1に移植する作業が必要である.また,現在MIRX6 8Kのリンク手順はパソコン(PC9800)上でのみ確立されいるの で,これをWS上(Masterworks上)でのリンク手順を作成しなけれ ばならない.これらは95年度電子制御工学科卒業研究にて実現さ れる予定である.実現できると仮定した上で本書は意味を持つ. ** 1996/3/8改訂箇所 はじめに 表紙に戻る 発注表 部品表(ネジ) 部品表 部品図 組み立て図 ツリー 目次 成果物登録簿へ 目次へ 作成者森岡、奈良 (徳増) 仕様書番号94DS02ー0006 MIRS9402詳細設計仕様書(メカ) 表紙に戻る 目次に戻る M8通しねじ 4140mm M4皿小ねじ 415mm M3なべ小ねじ 2615mm M3皿小ねじ 3215mm M2.6なべ小ねじ 415mm M2.3なべ小ねじ 815mm アルミ板 2132×6×2 アルミ製パイプ 11M10×65 M10×55 ステンレス棒 1M1.5×1500 蝶番Bー1059ー5 Bー1100ー21 2  塩ビ板 3 1 1240×240×5 55×32×5 60×35×3 品名型番数量備考 MIRS9402部品発注表 表紙に戻る 目次に戻る M3ナット  6  M3小ねじなべ103024  M2.6小ねじなべ154  品名サイズ(mm)数量備考 ディストルビュータ M8   ワッシャ  8  M3   ワッシャ  100  M2.3 ワッシャ  16  M8   ナット  4  M3   ナット  80  M2.3 ナット  8  M2   ナット  6  M8ねじ通し1404支柱 M4小ねじさら154VMEラック固定  なべ10 154 4 4 8 4 12 10サス蝶番固定 サス・エンコーダ固定 タッチセンサワイヤ固定 モータ固定 可逆変換ボード固定 モータ固定金具 赤外線センサボード固定 M3小ねじさら158 4 2 24 4タイヤ軸固定 サス塩ビ固定 勝敗判定装置ボード固定 バッテリ固定金具 超音波ボード固定 M2.3小ねじなべ158接触感知スイッチ M2小ねじなべ126ボールキャスタ 品名サイズ(mm)数量備考 MIRS9402 メカニクス部品表(ねじ類) 表紙に戻る 目次に戻る アルミ製パイプ スペーサー用 8 4 1 1M6×5 M6×15 M10×65 M10×55 アルミ板 1 250×72×2mm 132×6×2mm VMEラック 1  バッテリ固定金具 4 810×10×2L字 30×30×3L字 バッテリタミヤ 17SCR2  3Fシャーシ塩ビ板 1240×240×5 勝敗判定装置止め金具 130×30×3 L字 蝶番B−1059ー51  塩ビ板 135×60×3 接触感知スイッチSSー5GL2  ギア 1  モータ固定用金具 2  MAXONモータRE025-055-34EBA201A MAXON2  2Fシャーシ塩ビ板 1240×240×5 ボールキャスタK−140−22  可逆変換ボード 1  ステンレス棒 1M1.5×1500 塩ビ板 155×32×5 シャフト連結金具 2  接触感知スイッチSSー5GL4  ギア 2  シャフト 2M3 30mm 蝶番Bー1100ー22  タイヤ固定金具 410×10 L字 ロータリーエンコーダ 2  ホイルハブ2Dー433 ヨコモ2  測定部タイヤ 2自前 駆動部タイヤAA−102CROSS2  1Fシャーシ塩ビ板 1240×240×5  部品型番数量備考 MIRS9402 メカニクス部品表 表紙に戻る ケーブル・コネクタの図面 エレキ システム構成 部品発注表 エレクトロニクス詳細設計 目次 成果物登録簿へ 目次へ 3395/10/4部品表の追加 1195/7/31初版 項番版数年月日記事(改訂内容) MIRS9402詳細設計仕様書(エレキ) 目次に戻る 部品発注表の目次に戻る DDK(push switch) 1  MS−165 1  品名メーカー数量備考 10/4追加部品発注表 LZN203オムロン2リレー PC817 1フォトカプラ 品名メーカー数量備考 7/18追加部品発注表 感光基板両面ガラスエポキシSUNHAYATO20cm×10c m超音波 感光基板片面紙フェノールSUNHAYATO20cm×10cm 超音波 感光基板片面紙フェノールSUNHAYATO10cm×10cm    (2枚)赤外線 感光基板片面紙フェノールSUNHAYATO14cm×6cm以 上MOTORPOWERCIRCUIT 感光基板片面紙フェノールSUNHAYATO7cm×7cm以上 勝敗判定用 感光基板両面ガラスエポキシSUNHAYATO10cm×5cm 以上ロータリエンコーダ用 感光基板片面紙フェノールSUNHAYATO10cm×7.5c m以上POWER DISTRIBUTOR用 感光基板片面紙フェノールSUNHAYATO15cm×7cm以 上MMI フロント用 感光基板両面ガラスエポキシSUNHAYATO15cm×10c m以上MMI メイン用 黒太い線 20cm×4  赤太い線 20cm×4  7.2ボルトコネクタチューニング パーツショップ イーグル2   PCN10シリーズ DIN41612準拠 174112−1ア ンプ1VME−busコネクタ 16芯フラットケーブル 30cm×2  5芯フラットケーブル 20cm×130cm×2  3芯フラットケーブル 30cm×8  4芯フラットケーブル 20cm×2  60芯フラットケーブル 35cm×1  40芯フラットケーブル 25cm×1  50芯フラットケーブル 40cmx1  PSー16PLBーD4LT1ーFL1航空電子1  PS−50SEN−D4P1−1C航空電子1  PS−50PE−D4LT1−LP1航空電子1  PS−16PE−D4LT1−PN1航空電子2  PS−60SEN−D4P1−1C航空電子2  PS−40SEN−D4P1−1C航空電子2  PS−60PE−D4LT1−PN1航空電子1  PS−60PE−D4LT1−LN1航空電子1  PSー40PE−D4T1−PN1航空電子2  PS−16SEN−D4P1−1C航空電子2  1−499506−2AMP2  173279−3AMP2  50217−9101MOLEX18  5103MOLEX180  5102−05AMOLEX4  5102−04AMOLEX11  5102−03AMOLEX18  5046−03AMOLEX2  5046ー04AMOLEX5  5046−05AMOLEX4  5045−05AMOLEX4  5045−04AMOLEX4  5045−03AMOLEX16  51067−0200MOLEX6  51067−0400MOLEX1  53259ー0420MOLEX1  53259ー0220MOLEX6  G6B−1174P−USオムロン1リレー G2VNー237Pオムロン1リレー PS−10PF−D4T1−PKL1航空電子3ジャンパ TLRC336T東芝47segLED GAL5EG8SHARP1GREEN−LED GAL5HD8SHARP2RED−LED TLRー113A 1LED TLN105B東芝1赤外線受光素子 OME−200−2Tサンセイ2マイクロエンコーダ MC14513BMOTOROLA4  ICソケット20ピン(7.62mm) 4  GAL16V8SHARP4PLD μPD4701NEC1ロータリエンコーダ用 STR9005サンケン1低損失レギュレータ SN75453B 1  μPD5555CNEC2  LM4572 3  LM339 1  7407 1  μPC4069NEC4  μPC4052NEC1  74ALS574 3  74LS688 1  74LS684 2  74LS590 1  74LS279 2  74LS244 2  74LS123 4  74LS14 1  74LS10 2  74LS04 4  74LS06 1  74LS00 4  74LS08 1  74LS161 1  MS−102C 1押しボタンスイッチ A6DR−8100オムロン18ビットディップスイッチ A6B−4101オムロン14ビットディップスイッチ SSー5GLオムロン5マイクロスイッチ DDK(PUSHSWITCH) 1  MS−165 1  UB−155KP1Mニッカイ1スイッチ UB−165KP1Rニッカイ1スイッチ 2SK971日立2FETトランジスタ PC847 1フォトカプラ 2SC1815 2トランジスタ 2SA1015 2トランジスタ 整流用ダイオード100V2.5A 4  ダイオード 1SS106日立7  ダイオード 10D−1 4  コンデンサ 822 8マイラ コンデンサ 47μ 25V 1電解 コンデンサ 334(0.33μ) 1セキセラ コンデンサ 103(0.01μ) 3マイラ コンデンサ 103(0.01μ) 7セキセラ コンデンサ 104(0.1μ) 48セキセラ コンデンサ 102 15マイラ コンデンサ 10μ 25V 3電解 コンデンサ 4.7μ25V 3電解 可変抵抗 100kΩ 3  抵抗 1MΩ(消費電力1/4W) 4  抵抗 220kΩ(消費電力1/4W) 8  抵抗 100kΩ(消費電力1/4W) 1  抵抗 47kΩ(消費電力1/4W) 1  抵抗 39kΩ(消費電力1/4W) 8  抵抗 5.6kΩ(消費電力1/4W) 1  抵抗 1kΩ(消費電力1/4W) 11  抵抗 39Ω(消費電力1/4W) 2  抵抗 3.9kΩ(消費電力1/4W) 4  抵抗 30kΩ(消費電力1/4W) 2  抵抗 2.2kΩ(消費電力1/4W) 3  抵抗 270Ω(消費電力1/4W) 1  抵抗 1.7kΩ(消費電力1/4W) 1  抵抗 620Ω(消費電力1/4W) 1  抵抗 390Ω(消費電力1/4W) 2  抵抗 220Ω(消費電力1/4W) 2  抵抗 6.2kΩ(消費電力1/4W) 4  抵抗 10kΩ(消費電力1/4W) 22  抵抗 330Ω(消費電力1/4W) 39  抵抗 R8LADDER1kΩ 2  IS1U60SHARP7赤外線受光 MA40B5RR 3マイクロフォン MA40B5SR 3スピーカー 品名メーカー数量備考 MIRS9402 エレキ部品表 目次に戻る 部品発注表の目次に戻る 49.ICソケット20ピn 2  2 48.ケーブル16ピン30cm 1 12 47.ケーブル3ピン30cm   77 46.基板両面ガラスエポキシ200x100 1  1 45.基板片面紙フェノール200x100 1  1 44.基板片面紙フェノール100x100   22 43.可変抵抗100K 3  3 42.抵抗1M 4  4 41.抵抗220K   88 40.抵抗100K 1  1 39.抵抗47K 1  1 38.抵抗39K   88 37.抵抗10K 15  15 36.抵抗5.6K 1  1 35.抵抗1K 2147 34.抵抗330  4 4 33.コンデンサ822   88 32.コンデンサ104 145928 31.コンデンサ103 4  4 30.コンデンサ102 13  13 29.コンデンサ4.7u 3  3 28.74LS688   11 27.74LS684  2 2 26.74LS590  1 1 25.74LS574   33 24.74LS279 1  1 23.74LS123   44 22.74LS04 11 2 21.74LS00 1 12 20.GAL16V8 2  2 19.LM4572 3  3 18.LM339 1  1 17.7407  1 1 16.4069 4  4 15.4052 1  1 14.ダイオード 1SS106日立7  7 13.5046_5AMOLEX 1 1 12.5046_4AMOLEX3  3 11.5045_4AMOLEX  44 10.5045_3AMOLEX  1515 9.5102_4AMOLEX3 47 8.5102_3AMOLEX  1414 7.IS1U60シャープ  77 6.MA40B5RR 3  3 5.MA40B5SR 3  3 4.DIN41612準拠1  1 3.PSSRN16JAE航空電子1 12 2.PS−16PE−D4LT1−PN1航空電子1 12 1.PS−50PE−D4LT1−LP1航空電子1  1  部品名.値企業名超音波PWM赤外線総計 作者エンドリアント 作成日27June1995 I/OSUBボードの部品表 目次に戻る 部品発注表の目次に戻る 5基板片面紙フェノール100x1001 4ケーブル3ピン30cm1 35102_3A2MOLEX 25045_3A1MOLEX 1IS1U601シャープ 部品名.値数量企業名 3.赤外線センサーの受光回路 10基板片面紙フェノール100x1001 9抵抗220K2 8抵抗39K2 7抵抗1K1 6コンデンサ8222 5コンデンサ1041 474LS1231 35102_4A1MOLEX 25045_4A1MOLEX 15045_3A2MOLEX 部品名.値数量企業名 2.赤外線センサーの外部回路 7ケーブル16ピン30cm1 6コンデンサ1045 574LS6881 474LS5743 374LS001 2PSSRN16JAE1航空電子 1PS−16PE−D4LT1−PN11航空電子 部品名.値数量企業名 1.赤外線センサー回路 C.赤外線センサー 8抵抗1K1 7抵抗3304 6コンデンサ1045 574LS6842 474LS5901 374LS041 274071 15046_5A1MOLEX 部品名.値数量企業名 B.PWM回路 15基板片面紙フェノール200x1001 14可変抵抗100K1 13抵抗1M1 12抵抗10K5 11コンデンサ1042 10コンデンサ1031 9コンデンサ1024 8コンデンサ4.7u1 7ダイオード 1SS1062日立 6LM45721 540691 4MA40B5RR1 3MA40B5SR1 25102_4A1MOLEX 15046_4A1MOLEX 部品名.値数量企業名 2.超音波センサーの外部回路 23基板両面ガラスエポキシ200x1001 22ケーブル16ピン30cm1 21ICソケット20ピン2 20抵抗1M1 19抵抗100K1 18抵抗47K1 17抵抗5.6K1 16抵抗1K2 15コンデンサ1048 14コンデンサ1031 13コンデンサ1021 12ダイオード 1SS1061日立 1174LS2791 1074LS041 974LS001 840691 740521 6LM3391 5GAL16V82 4DIN416121準拠 3PSSRN16JAE1航空電子 2PS−16PE−D4LT1−PN11航空電子 1PS−50PE−D4LT1−LP11航空電子 部品名,値数量企業名 1.超音波センサー回路 A.超音波センサー 作者エンドリアント 作成日27June1995 MIRS9402 I/O SUBボードの部品表 表紙に戻る 目次に戻る MIRS9402 エレキ部品表 I/O SUBボードの部品表 MIRS9402 I/O SUBボードの部品表 部品発注表 表紙に戻る 目次に戻る  取扱説明書V94−SPEC−005  OrCAD回路図V94−CARD−207  部品配置図V94−CARD−407  穴あけ図V94−CARD−407  CAD SHEETV94−CARD−407  放熱板部品図V94−PART−008 Power Distributor固定用板部品図V94−PA RT−007  PLDデータV94−PART−003 (PLDIC4) V94−PART−004 (PLDIC5)  取扱説明書V94−SPEC−011  検査手順書V94−SPEC−010  作成手順書V94−SPEC−009  改造仕様書V94−CARD−501  パターン図V94−CARD−401 ロータリーとタッチセンサーボードOrCAD回路図V94−CA RD−201  取扱説明書V94−SPEC−015  検査手順書V94−SPEC−014  作成手順書V94−SPEC−013  その他V94−CARD−015  穴あけ図V94−PART−013  改造仕様書V94−CARD−515  パターン図/実装図V94−CARD−415 MMIフロントボードOrCAD回路図V94−CARD−215  取扱説明書V94−SPEC−015  検査手順書V94−SPEC−014  作成手順書V94−SPEC−013  固定用部品図V94−PART−010  その他V94−CARD−014  穴あけ図V94−PART−012  改造仕様書V94−CARD−514  パターン図/実装図V94−CARD−414 MMIメインボードOrCAD回路図V94−CARD−214  特性調査書V94−SPEC−019  取扱説明書V94−SPEC−018  検査手順書V94−SPEC−017  作成手順書V94−SPEC−016  パターン図V94−CARD−408 勝敗判定装置OrCAD回路図V94−CARD−208  取扱説明書V94−SPEC−026  検査手順書V94−SPEC−025  作成手順書V94−SPEC−024  パターン図V94−CARD−416 超音波センサー送受信回路OrCAD回路図V94−CARD−2 16  パターン図V94−CARD−403 赤外線センサー信号処理部OrCAD回路図V94−CARD−2 03  PLDデータV94−PART−016 (PLDIC12) V94−PART−017 (PLDIC14)  取扱説明書V94−SPEC−023  検査手順書V94−SPEC−021  作成手順書V94−SPEC−020  パターン図V94−CARD−405 V94−CARD−409 V94−CARD−410 I/OSubボードOrCAD回路図 PWM部 超音波部 赤外線部 V94−CARD−205 V94−CARD−209 V94−CARD−210 エレクトロニクス部については、V−Project94と川上教 官室のMPCを用いる。以下にその資料の一覧を示す。 MIRS9402エレクトロニクス詳細設計 MIRS94チームデータに戻る 94DS02-0008システム開発完了報告書19963/5 94DS02-0007検査報告書19963/5 94DS02-0006詳細設計書/メカ19963/6 94DS02-0005詳細設計書/エレキ19963/5 94DS02-0004詳細設計書/ソフト19957/31 94DS02-0003調査報告19952/23 94DS02-0002基本設計仕様書19953/9 94DS02-0001開発計画書199412/13 資料番号表題日付 資料番号についている*は、図面であることを意味する。 チーム番号:mirs9402 MIRS成果物登録簿 成果物登録簿に戻る Power distributer バッテリについて モータ駆動機能 DCモータの基本特性 IOボードについて MPUについて 割り込み処理について リアルタイムシステムについて 勝敗判定装置の機能 ロータリーエンコーダの機能 超音波センサの機能 赤外線センサの機能 MIRS9402調査報告書 成果物登録簿に戻る Power distributer バッテリについて モータ駆動機能 DCモータの基本特性 IOボードについて MPUについて 割り込み処理について リアルタイムシステムについて 勝敗判定装置の機能 ロータリーエンコーダの機能 超音波センサの機能 赤外線センサの機能 MIRS9402調査報告書 目次に戻る スタートスイッチが押されてから、勝敗判定装置が押されるまで電力 を、モータと勝敗判定装置へ供給するための回路。 RS−232Cのためのの電圧を出力する電源回路。DC−DCコンバ ータによって行う。 MPU,センサ基板のための+5Vの電圧を出力する電源回路がある。 これは、低損失リニアICによって、行う。 Power Distributorは、3つの機能がある。 Power Distributor 目次に戻る 5.電源の回路 4.インターフェス仕様 スタートスイッチ 電源スイッチ5[V] 7.2[V] ロータリエンコーダ5[V] 可逆パワー変換回路7.2[V] ボード外部電圧外部電流 マンマシン5[V]  DCサーボボード7.2[V]10(mA) 光センサー5[V]  超音波センサー5[V]  センサーI/F5[V]10(mA) I/O5[V]680(mA) CPU基板 MPU (MC68HC000)5[V]350(mA) ボード外部電圧(DC)所要電流 ボードに使用電圧と電流は次の表に表される: アナログ系(DC+5V,1A) デイジタル系(DC+5V、1A) 出力側電源パワー系(DCモーター) 電流 :1700[MAh] 電圧 :7.2[V] 入力側電源タミヤNi−Cdバッテリーは二つ   入力と出力について、 3.入力と出力 2.回路構成  MIRS の電源はニッカド。バッテリー7。2V−1700m Ahを2本使用している。1本は5Vに変換し、センサーI/Fボ ードと68000I/Oボードに送られる。もう1本は、駆動用と して可逆パワー変換ボードに送られる。パワーコントロールボード はメインスイッチとスタートスイッチに接続され、メインスイッチ により5V電源が入り、スタートスイッチにより駆動用電源が入る ようになっている。 1.機能概要 バッテリーについて 目次に戻る             R = H/K + I/K + J/K ギア比の計算       t[s]=VMAX / a 最大速度に達するまでの時間       a[m/s2]=F/m 加速度              T[N]=[定格トルク×n]/[(d/2)×R] トルク          R=[定挌回転数]/X 減速比             X[rps]=(VMAX×1)/(π×d) タイヤの回転数 回転数、加速度等の求め方  MIRS本体の重量(m)、タイヤの直径(d)、最大速度(V MAX)とする。 6.ギア比  しかし、実際のモータでは、上限のほうで特性が曲がってきた り、逆に下限のほうでリプルが生じるという傾向がある。  この図のように、理想的には、入力電流Iaと回転数Nは正確に 比例し、トルクTと回転数Nは逆の比例関係にある。 5.モータの特性カーブ 4.可逆パワー変換回路 3.概略ブロック図   モータの入力は電圧と電流の積である。出力はトルクと回転数 の積である。このトルクとは、モータの回転力廼ことであり、これ が大きいほど出力パワーも大きくなるが回転数は変化しない。 ***トルクとは・・・*** という関係になっている。 N=Ec(N')/(Ec/N’)  (9) より、  Ec(N')=Eb−Ra・Ia   (8)          モータの回転数Nは、逆起電圧Ecとほぼ比例する。 である。 Ia=T/Kt   (7) である。したがってモーターに流れる電流Iaは、 T=Kt・Ia   (6)  モーターのトルクT一般にモーター自身のトルク定数をKtとす ると、流れる電流Iaに比例する。よって、 2.モーターの電流と回転数の関係  したがって、DCモーターは、常に(4)、(5)式を満たして 動作するので使用するモーターが決まっているときに、トルクを大 きく取り出したければ回転数を低くし、逆に回転数を高くしたけれ ばトルクが低くなるようにする必要がある。 となり、Ec1が大きいほどIa1は小さくなる。 Ia1=(Ea−Ec1)/Ra   (5)  ここで、Ia1はある負荷の時に流れる電流、Ec1はある負荷 の時に発生する逆起電圧であり、(4)式から電流Ia1は Ea=Ra・Ia1+Ec1  (4) モータが回転しだして、定常状態になったときは、fig.1にお いてある電流Ia1が流れるような負荷がかかっていたとすると、 W=Ia2・Ra のジュール熱により発熱し、モーターを焼損してしまうので使用負 荷(トルク)は、モーターの持つ最大トルクの1/3〜1/2にするとよ い。 モーターが最大トルクを越えるような負荷が加わっていると起動で きず となる。これが、モーターの最大電流である。この時、モーター は、最大トルクを発生する。(モーターは、回転していない。) Ia=Ea/Ra     (3) となる。このモーター起動時に流れる電流は、 Ea=Ra・Ia     (2) しかし、Ecは、Eaを印加した直後は、モーターが回転していな いので0になることよりモーター起動時の等価式は、 という関係がある。 Ea=Ra・Ia+Ec   (1)  fig.1印加電圧EaはDCモーターに供給されていて 1.DCモーターの基本特性 モータについて 目次に戻る 詳細は、仕様書(UserManualIP-Digital48、IP-DualPI/T)参 照。 PI/Tは、その内部にTimerを持っているが、このTimerは24bitの ダウンカウンタを含んでいる。 MC68230には、入出力ポートA,B,Cがあり、A,Bは単方向または双方 向の8bitまたは16bitの入出力として使用できる。このポートはダ ブルバッファ内蔵である。ポートCは、DMA,タイマおよび割り込 みの制御としても使用される。  IP-Digital48ボードは、VIPC310に搭載されるIP(IndustryPack )の一種で、MC68230PARALLELINTERFACE/TIMER(PI/T)を2個搭 載している。 IP−Digital48ボード 詳細は、仕様書(UserManualVIPC310)参照 VIPC310ボードは、IP(IndustryPack)を二つ搭載することができ る。2つの、IPは、”A”,”B”と名付けられている。Inp ut/Output、割り込み、メモリといった機能があり、リチ ウムバッテリ(12V)を搭載している。 VIPC310ボード   Power+5v 680mA Board size100×160mm VME−bus conformanceRevisionC.1 3U(single high) InterruptVME−bus interrupt  IR Q1,IRQ2,IRQ4,IRQ5 TimersTwo 24bit down counters Date transfer mode8/16bit,doub le buffer input,double buffer  output,etc Parallel I/O48 digital lines LSIMC682302×2 I/Oボードの主要諸元 I/Oボードについて 目次に戻る POWER+5v750mA,±12v100mA VME−bus interfaceA24:D16/D8MASTER Interrupt handler7level Real−time clockDayofweekcounter,periodic interrupts Serial I/OMC68230PIT:16(2×8)digitallinesand 4handshakelines ROMEPROM128KB RAMSRAM 256KB×2 製造元PEPModularComputers サイズ100×160(mm) クロック12.5MHz(16.7MHzに変更可) CPUMC68HC000 名称VSBC-1 SingleBoard(68HC000)ComputerModulefortheVMEbus MPUボード 目次に戻る 68000の割り込みレベルは、1〜7まであり、優先度は数が大 きいほど高くなっている。割り込み処理をしている時に割り込みが きたら図1のように処理する。 割り込みレベル 複数のレベルの割り込み源から割り込み要求がだされる場合のために、 割り込みレベルをアドレスバスのA1〜A3るに割り込みレベルを出力 する。 割り込みベクタを周辺LSIから読み込もうとすると、割り込み制 御回路は割り込みレベルを知る必要がある。オートベクタでない割り込 みの場合には、割り込みレベルに応じて割り込みを発生したデバイスが 割り込みベクタを出力する。 I/Oからの割り込みベクタ オートベクタ割り込みのレベルに応じてCPU自身によって割り込 みベクタ番号を発生する方法である。 オートベクタ割り込み  割り込みでは、割り込みを発生したデバイスが割り込みベクタをデー タバス上に出力することにより、割り込みベクタ番号をCPUに知らせ る必要がある。 *2の補足:割り込みの要求  例外処理プログラムの先頭アドレスをプログラムカウンタにセット し、処理プログラムを実行する。  例外処理プログラムが終了そたらCPUはステータスレジスタのSビット を”0”にし、スーパバイザスタックから例外処理以前のプログラムカウン タの値とステータスレジスタの値を復帰する。 例外処理の実行  プログラムカウンタの値とステータスレジスタの内容がスーパバイザ スタックに待避される。 CPU実行状態の待避  割り込み処理を要求している外部でデバイスが割り込みベクタ番号を 出力するか、またはオートベクタ割り込みによってCPU内部で割り込みベ クタを発生する。 ベクタの発生  ステータスレジスタの割り込みプライオリティマスクが更新され、現在受 け付けている割り込みのレベルにセットされる。  トレースビットを0にしてトレースを禁止する。  ステータスレジスタの内容をCPU内で内部的にコピーしスーパバイ ザ状態に移行する。 検出  割り込みは例外処理の1つである。割り込みのステップを次に示す。 割り込み処理の調査 目次に戻る  プログラムが他の処理をしていても強制的にデータを受け取るルーチ ンを起動できるため、CPUに無駄がなくランダムにデータが入力され る機器には特に有効な方法である。  割り込みルーチンで受け取ったデータは、プログラムですぐに処理す ることができないため、一時保存しておき後から処理プログラムによっ て拾い上げ、処理されることになる。  割り込みによる方式:  データがない場合でも定期的にポーリングルーチンを走らせる為CP Uに無駄が生じる。  プログラムは、流れがシーケンシャルに組め、簡単になる。  右にポーリング方式の図を示す。この方法は、定期的に入出力装置に 対して入力データがあるか問い合わせあれば読み取る方法である。 ポーリング方式: リアルタイム処理では、複雑な処理の場合には、複数のルーチンの継続 によって処理するようにする。CPUガ連続して使われる時間を小さく し、CPUの使用権をそのつどディスパッチャに返すことによりディス パッチャはより優先度の高いイベントにCPUを与えることが出来るよ うになる。 (3) データ処理:  データは割り込みルーチンによって受け取られ、データバッファに蓄 えられる。ディスパッチャにより、ハンドラが定期的にあるいはイベン トフラグにより起動される。  プログラムの入出力動作のタイミングに関係なく外部からのデータが 発生し、プログラムによる処理が開始する形態を”イベントフラグ型” と呼ぶ。  ランダムな入力があるデバイスを制御するハンドラを、ここでは”リ アルタイムハンドラ”と呼ぶ。 リアルタイムハンドラ:    入出力ハンドラは、イミディエイト・リターンする前にイベント・ウ ェイト・フラグをセットしておき割り込みによって入出力の完了が通知 されるか、あるいはポーリング方式によって入出力命令を検出したと き、イベントフラグをセットする。  入出力命令を機器に対して出力した後、命令の完了を待たず、命令を 出したプログラムに返ることをイミディエイト・リターンという。  CPUが不要になる(入出力命令の完了待ち)と、他のイベントの処 理の為にCPUを使用出来るようにする必要がある。 (2)入出力ハンドラ:  データ処理中うでは、エラーの優先度を高くする。 最も優先度が高いのは、外部装置からデータを受け取るルーチンです が、通常これらは割り込みルーチンによって行う。 イベントの緊急度に応じて優先度を付けて、CPUの配分をする機能 を”優先度処理”という。  ディスパッチャの役割は、CPUを効率よく処理ルーチンに与えるこ とである。  イベントフラグセットするのは入出力ハンドラである。 ディスパッチャはイベントテーブルと呼ぶテーブルの中のイベントフラ グをスキャンしている。イベントフラグがあると、そのイベントの処理 ルーチンをコールする。 リアルタイム処理システムでは複数のデータを並行して処理する必要が ある。ディスパッチャの動作を図(1)-1図(1)-2に示す。  リアルタイム処理システムでは、複数のデバイスからランダムにデー タが入力される。そのためデータに入力があるかどうかを順番に調べ、 データ(CPUを必要とするルーチン)があれば、CPUを配分する事 が必要である。これがディスパッチャの役割である。 (1)ディスパッチャ (3)データ処理  (データの加工) (2)入出力ハンドラ(データの送受信) (1)ディスパッチャ(CPUを配分するコントローラ) リアルタイム処理プログラムは、次の3つのルーチンから構成され る。 リアルタイム処理プログラムの構造上の特徴  時間的に処理するデータ量が時間的に変化する状態に対応できる機構 を備えたプログラムを”リアルタイム処理プログラム”と呼ぶ。  図1にリアルタイムシステムのデータの入力特性を示す。ランダ ムにデータが入力される機器の制御やデータ処理システムでは、CPU を有効に配分できるプログラム構造が必要。データの入力がラッシュし た時、緊急度の高い入力データ処理を先行し、またCPUの処理能力を 越える場合データに入力を押さえる制御が必須となる。 データの入力特性 (4)システムによっては、処理結果を一定時間内にデータを発生した ところに応答しなければならない。 (3)ランダムにデータを発生する機器が複数ある。 (2)データが発生した時点ですぐに処理を行う。 (1)処理すべきデータが外部からランダムに発生する。 特徴 コンピュータの外部で発生した事象に対して、対応する処理を即座 に実行するシステム 定義 リアルタイム処理システム リアルタイム処理システムの調査 目次に戻る 勝敗判定装置は、自機のパネルが押されるまでは、パイロットランプ用 のダイオードを点灯させる。パネルが押されたら、ダイオードを消す。 それと同時に、モーターへの電源を切り、自機をとめる。 回路構成は、上の図のようにする。 1.回路構成 勝敗判定装置についての検討 目次に戻る  I/Oポートで値を引き渡す場合、一定時間の間、値を変化させない ようにする必要がある。 しかし、カウンタを止めてしまうと、その間 のパルスをカウントできなくなる。よってカウンタを止めずに値を保持 するラッチを使用する。 2.ラッチ回路 インクリメンタル型のロータリーエンコーダではそのままでは値が分か らないので、パルスをカウントする必要がある。そのためにカウンタ回 路を使用する。I/Oポートは8bitあるが、1bitは回転方向の データが入るので残り7bitを使用する。なお、カウンタは、リセッ ト信号により、リセットされる。 3.カウンタ回路  ロータリーエンコーダからの出力信号は、互いに90°位相の異なる 2相の信号である。正転の場合には、A相がB相に対して90°位相が 進み、逆転の場合には90°位相が遅れる。 4.方向検出回路  ロータリーエンコーダからの出力信号は、近似正弦波である。これを 方形波に変える回路である。 5.波形整形回路  光電式はスリット円板を挟んで、発光ダイオードと受光素子が相対し て置いてあり、、スリットが回転することにより、光が通過したり、し なかったりする。この光を受光素子で検出することで、回転したかどう かが分かる。 6.ロータリーエンコーダの構造  回転軸の回転に伴い、互いに90°位相の異なる2相の近似正弦波を 出力しているもので、2相の位相関係から回転方向が判別できる。ま た、上記2相の信号をカウントして回転数を求めることができる。 7.ロータリーエンコーダの概要 ブロック図 ロータリーエンコーダー基本設計書 目次に戻る 8.超音波センサーのブロッグ図  デイジタル化された受信信号はRS−FFで送信用タイミングパルスとの 時間差を別の信号になる。この回路の中で信号がラッチされる。 カウンタ回路 コンパレータの+端子にはタイミングパルスから作り出された比較電圧が入 力する。これとアナログ受信波を比較しデイジタル受信信号が出力する。  超音波マイクロホンによって受信された波形に、物体に当たって反射した 反射波だけでなく直接超音波スピーカから伝播する回り込み波が存在する。 後述するカウンタ回路より距離値を出力する際、そのままではこの回り込み 波を捉えてしまう。したがってこの部分を除去し、ディジタル信号に変換す るおが本回路の機能である。 比較回路  物体に当たり反射した超音波パルスは、超音波マイクロホンによって受信 され受信波となる。これは減衰しているため、増幅器によって増幅し、信号 処理可能なレベルにする。さらに波形成形し、不要なDC成分がカットされ る。 受信回路  送信用信号は、並列されたインバータによって電流が2倍に増幅される。 そして、超音波スピーカで電気信号から超音波に変換し超音波パルスが送出 される。 送信回路  アナログ。マルチプレクサは、コントロール信号の入力により複数のX端 子およびY端子の中から1対を選択し、入出力する素子である。 アナログ。マルチプレクサ  この回路では、CPU側より入力されるトリガパルスを整形し、タイマI Cによってパルス幅0。35[ms]のタイミングパルスを作成する。タイ ミングパルス発振部からの40[KHz]の発振波と合成され、最終的には 周波数40[KHz]。幅0.35[ms]の超音波パルス用信号が生成さ れる。 主発振回路  各回路の詳細は次に述べる通りである。  本回路はMIRS各機能の中において超音波探索機能を担うモジュー ルである。機能の概略としては、まずCPU側から距離計測用トリガ信 号が回路に入力するとシステムに設置された4対の超音波素子のなかか らCPU側より入力するセンサー選択信号で1対を選択する。そこから パルス状の超音波を送受信し、相手物体または外壁までの距離を8bi t2進数で送出する。 1.超音波センサー回路 温度特性−20− +60 Cにおいて 感度,音圧の変化はー10dB以内−20− +60 Cにおいて 感度,音圧の変化はー10dB以内 絶縁抵抗100MOhm以上100MOhm以上 静電容量1600pF1600pF 帯域幅6KHz以上(−80dB)7KHz以上(90dB) 感度,音圧−74dB以上100dB以上 公称周波数40KHz40KHz 項目受信用送信用 品名MA40S2RMA40S2S  下に表7。1は超音波センサーMA40S2の諸元である。  超音波センサーMA40S2R/Sはまとめたものである。また、セ ンサーの公称周波数が40KHzとなっているが、これは素子部の中心 周波数であり、実用に際しては送信時は直列共振と並列共振の中間点 で、また受信時は並列共振周波数で、それぞれ使われている。 2.空中超音波センサーMA40S2R/Sの諸特性  図から分かるように、超音波の振動数(周波数)が高ければ高いほど その減衰も大きく、伝搬距離が 短くなる。このため、伝搬距離を延ば すには低い周波数が何にかと有利である。ただし、周波数が低下すると 距離計測の分解能が低下するので、それらの配慮も必要となる。また、 周波数が低くなればそれ に対応して超音波発生器の形状も大きくな り、それをドライブする電子回路も大きくなる。  図6.1は空中超音波の減衰特性を表したものであり、 ここでは20 KH、50KHz、200KHzの諸特性をそれぞれ取り上げている。  一般に空中を伝搬する超音波は媒質によるエネルギー吸収損と、回折 現象により球面上に拡散する拡散損失が支配的であり、これによってそ の伝搬距離が制約される。つまり、超音波エネルギーは遠くへ行くほ ど、その減衰が大きいのである。  この特性は固体より液体、液体より気体が著しく、空気中での実用範 囲はせいぜい百メートル程度が一応の限界である。  超音波は、媒質に応じて伝搬速度も異なるが、同じ伝搬媒質でも遠方 に行くほど、そのエネルギーが小さくなり、ついには消滅する。 3.空気中の超音波は減衰が大きい PR40−16I黄点 39.8−40−78dB以上防滴形(セン サー)  青点 40.2−41105dB以上 105dB以上 105dB以上防滴形(スピーカ)  PT40−16I白点 39.4−40 黄点 39.8−40 C400−12400KHz 中心周波数 −80dB以上高周波送受兼型  C40−16KM40KHz 中心周波数−68dB以上送受兼養用型シリコンハウス MA200A1200KHz−54dB以上整合器付距離計用  MA40E1S40Khz106dB以上防滴形(スピーカ)  MA40E1R40KHz−74dB以上防滴形(センサー)  MA40A5S40KHz112dB以上汎用広帯域(スピーカ)  MA40A5R40KHz−67dB以上汎用広帯域(センサー)  MA40S2S40KHz100dB以上小形(スピーカ)  MA40S2R40KHz−74dB以上小形(センサー)  MA23L320−26KHz(23KHz)−73dB以上 −70dB以上広帯域(株)村田製作所 型名公称周波数感度特徴メーカ名  下の表は超音波センサーの具体例であり。ここではその型名、測定範 囲、精度、特徴などをそれぞれ取り上げている。 4.超音波センサーのいろいろ 5.超音波センサーの内部構造  超音波センサーのビームの外観は次のように表す(fig.2)。  この利点は指向性の良い送信器をそのまま受信器に使用する、横から 伝播して周波雑音をすべて除できる。  したがって(2。1)式より指向性を高めるには周波数の高いものが 良いことになる。精度を必要とする通信用(測定)は指向性を高めるた め高周波超音波の周波数を1ー10MHz(メガ 106)のものを使 用する。特殊なものは30ー50MHz級のものも使用する場合があ る。 D音源の直径(mm) f周波数(Hz) c音の速さ(m/s) λ波長 (長さの単位で10−6m) =                          (2。2) =  (この値が大きいほど指向性が良いことになる)  (2。1)  指向性とは音が横に広がらないで目的の方向にすべての音エネルギが 1本のビームとなって直進する度合である。この指向性をεとすると次 のようになる。 6.超音波センサーの指向性 d =  = 0.17*T (mm)  超音波の発射から、物体に戻ってくるまでの時間をT(1*10−6  s)とすると物体までの距離  dは次式で求めることができる。  超音波は音であるので、常温の空気中を約340(m/s)という音 速で伝播する。つまり、1(cm)あたりの距離を{1/(340*1 00)(s)}= 28*10−6 (s)かけて進む。従って、超音 波の発射から、物体に反射して戻ってくるまでの時間の測定により、超 音波の送受波器から物体までの距離がわかる(fig.1)。 7.超音波センサーの性質  超音波センサーというのは、超音波を利用したセンサーである。超音 波とは人間の可聴範囲以上(約20KHz以上)の音波のことをいう。 8.超音波センサーの定理 超音波センサー 目次に戻る  以上で報告を終了する。 9.まとめ  これらの回路の詳細設計は後に行うこととする。(卒研生の物を利 用?)  IS1U60から出力される信号はパルス波であるから、これを一つ の方形波にまとめる回路が必要である。また、割り込み信号を作成する回路 も作らねばならない。 赤外線信号処理回路  受光センサIS1U60はパルス波の信号しか受け付けないので、そ れをLEDで発生させるための回路が必要である。論理素子によって作る が、クロック周波数やMIRS競技規定に左右される。 LEDパルス発生回路 必要な外部回路 受光特性や可視光遮断フィルタについては実験により確かめるほうがよ い。 ほこり等で受光面が汚れると誤動作することがあるので、保存場所や周囲 温度には十分気を配る必要がある。また、受光面は触れないようにする。 はんだ付け、又はお茶漬けを行うときは、資料に記されたやり方で行うこ とが大事である。 出力電圧はTTLレベルの範囲内にあるから問題ない。ただし、出力はパ ルス波(方形波)で送られてくるのでそれを処理する回路が必要である。 電源電圧は5Vの物を使用するので問題ない  検討 *2) 下図に示すバースト波を、送信機にて送信するものとする。 B.P.F.中心周波数fo−38−kHz  ローレベルパルス幅T2400−800μs*2 ハイレベルパルス幅T1400−800μs*2 ローレベル出力電圧Vol−0.450.6V*2,プルアップ抵抗2.2kΩ ハイレベル出力電圧VohVcc-0.2−−V*2,出力端子OPEN 消費電流Icc−2.84.5mA入力光なし,出力端子OPEN 項目記号MINTYPMAX単位備考 電源電圧Vcc4.7〜5.3V 項目記号動作条件単位 半田温度Tsol260(5秒以内)℃ 保存温度Tstg-20〜+70℃ 動作温度Topr-10〜+60℃ 電源電圧Vcc0〜6.0V 項目記号定格値単位 IS1U60の内部構成を以下に示す。  内部構成 出力はTTLレベルによるON,OFFのみであり、細かい外部回路を作 る必要がほとんど無い。しかし、受信した光の強度を測定できないので、得 られる情報量は少ないといえる。 特徴 受光センサ IS1U60 受光センサIS1U60はパルス波の赤外線しか感知しないので、パルス 電流を作る外部回路が必要である。受け付けるパルス幅は約26.4μsである (後述)ので、LEDの規格に合う。ただし、IS1U60は、同じパルス 波を連続的に受け付けると受光基準値が上昇するという特性があるので断続 的に放射しなければならない(詳細は受光センサのところで述べる)。 競技規定に合う照度になるような電流を流す。(放射する光の照度は電流の 大きさにほぼ比例する。) 検討 リードフォーミングする時は、リードのストッパ部より先端部分で、素子 本体 にフォーミングストレスが残らないように曲げ、半田付けはリードフ ォーミング のあとで実施する。 半田付け温度<=260℃、半田付け時間<=5秒 半田付けは、リードのストッパ部より先端部分で行なうこと。 使用上の注意 半値角θ1/2IF=50mA−±23.5−° スペクトル半値幅ΔλIF=50mA−50−nm ピーク間容量λPIF=50mA−950−nm 端子間容量CTVR=0,f=1MHz−20−pF 光出力POIF=50mA−11−mW 放射強度IEIF=50mA1220−mW/sr 逆電流IRVR=5V−−10A 順電圧VFIF=100mA−1.351.5V 項目記号測定条件最小標準最大単位 (注)パルス幅<=100μs、繰り返し周波数=100Hz 保存温度Tstg-30〜100 ℃ 動作温度Topr-20〜75 ℃ 許容損失PD150 mW 直流逆電圧VR5 V パルス順電流IFP(注)1 A 直流電流低減率(Ta>25℃)ΔIF/℃-1.33 mA/℃ 直流順電流IF100 mA 項目記号定格単位 光出力の直線性が良く、パルス動作、高周波による変調が可能。 指向特性が広い 放射強度が大きい。 特徴 赤外線LED TLN105B 1.資料及び検討  赤外線を検出したら出力信号はHレベル(TTLレベル)で出力し、 検出できない場合はLレベルを出力するものとする。  本MIRS機においては、開発計画書に書かれたものを変更し 、、追跡用3つ、捜索用4つの計7つの赤外線センサを用いる。変更 は、前方の死角をなくすために行った。位置は概観図を参照のこと。追 跡用センサは検出範囲を限定し、捜索用には幅広い視向性を持たせる。 完全な指向角度は実験により定める。 受光部  MIRS競技規定に従うものとする。 LED 仕様  赤外線センサの利点は、主に「赤外線は可視光線に比べて空気中 の透過率が高い、」ということにある(但し、波長によっては透過 率が低い赤外線もある。)。  フォトンエネルギーにより励起される電子によって生ずる導電率 の変化(光導電形)や光起電力の発生(光起電力形)により検出する。 量子形センサは、反応時間が短いなどの利点はあるが、液体窒素等によ る冷却が必要なので、MIRS競技等への利用は望めない。 量子形  エネルギー吸収による温度変化を利用するもの。素子としては、 熱電対、サーミスタ・ボロメータ、焦電形素子などがある。特に焦電形 素子は、比較的感度が高く、構造が簡単なのでよく用いられる。 熱形  赤外線センサとは、照射光(MIRSでは赤外線LEDによ り放射)のフォトン(光子)エネルギーを何らかの形で変換 し、電気的に扱えるようにするものである。エネルギーの変換 のしかたにより以下のように分類される: 赤外線センサについて  赤外線とは、波長約0.7μm〜約1000μmの電磁波のことであ る。これは、可視光線より長い波長領域にある。すべての物体 は、それの持つ温度に対応した電磁波を放射しており、温度が 700℃以下ならば放射波分布は赤外線領域にある。 赤外線について  ここでは、赤外線LEDと赤外線受光センサの仕組み、特性 及び使い方を調べ、MIRSにおける利用法を検討する。 目的 改訂記録  作成者清智也 作成日1995/2/23 赤外線センサの調査検討 成果物登録簿へ戻る 表紙に戻る 1.総合試験計画 2.ソフトウェア構成 3.競技モードにおける動作 4.機能,性能 5.エレクトロニクスハードウェア構成 6.構造概要 7.動作概要 8.外観 9.緒言 10.システム概要 11.目的 12.本MIRSのコンセプト MIRS9402基本設計仕様書の目次 成果物登録簿へ戻る 目次へ 3395.3.11遷移図・エレキ、ハード構成図追加、そのほか 多少変更 2295.3.9書式大幅改訂・調査書削除 1195.2.24初版 項番版数年月日記事(改訂内容)備考 作成者   全員 仕様書番号 94DS2-002 MIRS9402基本設計仕様書 f逗^瘻^7 Dh 表紙に戻る 目次に戻る  各モードの動作やモードの遷移が正しく実行されるのを 確認し、できることなら他の班のMIRSと競技を実施す る。 11.3 競技モード動作試験  ペナルティ戦動作試験では、競技場相当の壁を置き、M IRSの大きさに近くやわらかい素材のものを相手と見な して実施する。 11.2 ペナルティ戦動作試験 光源を赤外線センサで探し、その光源を追尾できることを確認 する。 bと5を組み合わせたもの 直線と回転をくり返し走行できることを確認する。 2と4を組み合わせたもの スタート位置から直線走行して、相手とある一定の距離まで近 づいたら一旦停止できることを確認する。 1と3を組み合わせたもの  また、複数の試験を組み合わせ、総合試験として試験を実施 する。以下にその内容を示す。 超音波センサが正常に動作することを確認する。また、相手 (または障害物)との距離を計測できるかを確認する。 超音波センサ性能試験 赤外線センサが正常に動作することを確認する。また、光源の 位置を変化させ、その光源を追尾できるかを確認する。 赤外線センサ性能試験 ロータリーエンコーダにより、一定の角度を回転できることを 確認する。 回転走行試験 相手(または障害物)とある一定の距離に近づいたら一旦停止 できることを確認する。 一旦停止試験 ロータリーエンコーダで確認しつつ、MIRSがまっすぐ進む ことを確認する。 直線走行試験 MIRSシステムの起動及び終了が正常に行われることを確認 する。 システム起動試験 試験項目 1.規定走行試験その場回転,直進,正方形,円,8の字走行試験 を行う. 2.センサ試験各センサについて測定値を7SegLEDに表示し,目 視により確認する. 11.1 機能試験  総合試験はハードウェアの組み立てが完了した後、機能 試験、ペナルティ戦動作試験、競技モード動作試験の3段 階に分けて行う。 11.システム総合試験計画 表紙に戻る 目次に戻る  なお、具体的なプログラムの書き方等については、卒業 研究報告書「小型ロボット用リアルタイムモニタの設計、 製作」に従う。 TASK6ロータリーエンコーダ自機の位置 TASK3タッチセンサ壁or相手機が接触しているか TASK2超音波センサ前・左・右の(壁or相手機との)距離 TASK1赤外線センサ相手機のLEDが見えるか TASK名センサ名情報  各モジュールで得られる情報は以下のようになる。  タスクの遷移を図14に表す。 タスクD(ロータリーエンコーダ)からの信号から自MI RSの場所(x,y座標と姿勢角)を算出する。 演算処理 タスクからの信号によって、PWM回路に信号を出力す る。 駆動系制御制御 計測値をタスクFに送る。 インターバルタイマにより、一定の時間周期毎に起動。 ロータリエンコーダ タッチセンサ入力データを制御タスク(モード決定)に送る。 タッチセンサからの割込み信号により起動。 タッチセンサ管理 距離の算出、タスクF(演算処理部)へデータを送る。 インターバルタイマにより、一定の時間周期毎に起動。 超音波センサ管理 赤外線入力データを制御タスク(モード決定)に送る。 赤外線センサからの割込み信号により起動。 赤外線センサ管理 演算処理部からの位置データと、超音波センサからのデー タをもとに行動モードをけっていし、駆動系制御部にモータの 制御データを送る。 赤外線センサ管理部からの信号に対する処理を最優先とする。 モード決定 それぞれのタスクの概要 Task F演算処理ノーマル処理 Task E駆動系制御ノーマル処理 Task Dロータリーエンコーダタイマ処理 Task Cタッチセンサ管理割り込み処理 Task B超音波センサ管理タイマ(送信)割り込み(受 信)処理 Task A赤外線センサ管理割り込み処理 制御Taskモード決定ノーマル処理  ここでは、プログラムを大きくセンサ管理、PWM、モード 決定、演算処理の4つに分け、その上にモード決定のためのタ スクをおく。これらのタスクは、状況に応じてさらに細かく分 割される。それぞれのタスクで行われる処理を、下の様に定め る。 タスクの作成  本ソフトウェアは,リアルタイムモニタを用いマルチタスク 処理を実現する.リアルタイムモニタは93年度電子制御工学 科卒業研究で開発されたMIRX68Kを使用する.但し,M IRX68Kは,旧型MIRS制御ボード用に開発されたもの で,これをVSBC1に移植する作業が必要である.また,現 在MIRX68Kのリンク手順はパソコン(PC9800)上でのみ 確立されいるので,これをWS上(Masterworks上)でのリンク 手順を作成しなければならない.                           10.ソフトウェア構成 表紙に戻る 目次に戻る A,C〜F 図10〜13に記す。(Bは、赤外線センサで相 手のLEDを捕えた時。) X そのモードには、遷移しない。 * 条件が満たされなければこのモードを繰り返す。 回避モードCXX* 赤外線追跡モードBB*B 赤外線捜索モードA*XX 超音波捜索モード*DEF       状態 遷移先超音波捜索モード赤外線捜索モード赤外線追跡モード回 避モード 3.回避モード 4.赤外線追跡モード 5.赤外線捜索モード 6.超音波捜索モード  競技モードにおいて、さらに以下のモードを定義する。 図9はモード遷移図であり、図10〜13は各モードにお ける動作を流れ図によって示したものである。タスクの定 義は10章で述べる。 9.競技モードにおける動作 f逗^瘻^7 Dh 表紙に戻る 目次に戻る 調査不足なので1班の物を参考にする。 タッチセンサ NiCd電池1700SCR(田宮) 電圧7.2V容量1700mAh 電池 逆起電力定数0.44/1000[V/rpm] 電機子抵抗0.33[Ω]トルク定数34.5[gf*cm/A] 消費電力20.8[W]効率70[%] 定格トルク未詳定格回転数14200[rpm] 定格負荷100[gf*cm]定各電流2900[mA] 使用モータマブチ RS−380PH モータ ギヤ損失<上に同じ> (計算式は調査報告other/meka.samに記載されている。) ギヤ比車体の重量などに左右されるので、まだ分からない。 ギヤボックス 電池は、電圧 7.2V,容量 1700mAhのnicd電池  1700SCR(田宮)を使う。 スタートスイッチが押されてから、勝敗判定装置が押されるまで電 力を、モータと勝敗判定装置へ供給するための回路。 RS−232Cのため±12Vの電圧を出力する電源回路。DC− DCコンバータによって行う。 MPU,センサ基板のための+5Vの電圧を出力する電源回路があ る。これは、低損失リニアICによって行う。 Power Distributorは、3つの機能がある。  次に、Power Distributorについて述べ る。 また、勝敗判定装置が押されるまで電力をモーターと勝敗判定 装置へ供給する機能を有する。 パワーコントロールボードはメインスイッチとスタートスイッ チに接続され、メインスイッチにより5V電源が入り、スター トスイッチにより駆動用電源が入るようになっている。 をエレクトロニクス回路に供給する能力を有する. ±12V最大100mA +5V最大3A 7.2VのNiCdバッテリより 1.電源回路 赤外線センサ回路は、赤外線を受光状態を2値(有り,無 し)で得ることができる。この回路は、赤外線センサ信号回路 内の受光素子から送られてくるHorLの信号を処理し、信号 に状態変化がおきた時に、割り込み要求信号をCPUに送る機 能を有し、またそのときの各受光素子の状態は後述のレジスタ を読むことにより得ることができる。 2.赤外線センサ 周期1.56KHzの方形波のdutyを0から50%まで128段 階で変化する機能を持つ.この回路は、LSI68230によって制御 され,右速度・方向データは68230のportAから、左速度・方向 データはportBから与えられる。68230のToutを用いて、 200[kHz]のCLKを得る。 3.PWM制御機能 この機能は指定した超音波センサから超音波を送信させ、 受信するまでの時間をカウント値として測定するものである。 センサ選択信号を出力すると同時に出てくる信号をトリガとし て用い、0.35msに引き伸ばし、それから40kHzの超音波 を作り出し、送信する。最少測定距離20cm,測定精度±1cm 以内(温度補正後).一定時間内に反射波を受信できなければ カウンタはアンダーフロー信号を出力し受信信号、又はアンダ ーフロー信号は割込み要求信号となり、データを読み込ませる 機能を持つ。 4.超音波センサ回路 CPUより読み取り可能な4bitスイッチを有す。 押しボタンスイッチによる割り込み信号発生機能。 Green,Red-Led.により、マシンの状態を表示する。 4桁の7SEG-LEDにより、0000から9999までの表示。 MMI(マンマシンインタフェース) データ出力は、8ビットのパラレルデータを2回に分けて出力 する。 カウント値は2の歩数表示で、ロータリ・エンコーダが正転時 はアップカウント、逆転時はダウンカウントする。 カウンタは、12ビット・バイナリ・アップ・ダウン・カウン タを用いる。 この機能は、ロータリ・エンコーダからの信号を取り込 み、カウンタでカウントし、CPUの要求に応じてカウント値 を得るものである。ロータリ・エンコーダは、a、b2相入力 式を用いる。 ロータリーエンコーダ POWER:+5v750mA,±12v100mA VME-bus Interface:A24:D16/D8MASTER Interrupt handler:7level Real-time clock:Dayofweekcounter,periodicinterrupts Serial I/O:MC68230PIT:16(2×8)digitallinesand4 handshakelines ROM :EPROM128KB RAM :SRAM 256KB×2 製造元 :PEPModularComputers サイズ :100×160(mm) クロック:12.5MHz(16.7MHzに変更可) CPU :MC68HC000 SingleBoard(68HC000)ComputerModulefortheVMEbus 名称  :VSBC-1 MPUボード 9.機能,性能 表紙に戻る 目次に戻る 図8  サスペンションの取り付けかた 次に、サスペンションの取り付け方を図8で示す。  なお、駆動輪とデータ測定用タイヤは、横1列に並んでい る。  ロータリエンコーダを駆動輪につけると、スリップし て、ロータリエンコーダの値が正確でなくなる。そこで、デー タ測定用にロータリエンコーダを取り付けたタイヤを2つ使用 する。このタイヤは、駆動機能を持たないので空転することは 無い。しかし、このタイヤは、いつも地面と接触しているとは 限らない。そこで、この2つのタイヤには、サスペンションを 装着する。こうすることでこのタイヤはいつでも正確にデータ を読み取ってくれる。 サスペンションについて 図7  I/Osubボードの外観 次に、I/Osubボードの外観をしめす。  超音波センサ回路では、超音波センサの信号により距離を測定し てIP−dig48にデータを送る。  なお赤外線センサが動作するときは、超音波センサは動作しな い。(超音波センサと赤外線センサのピンを共通にするため)  赤外線センサ回路では、7bit使用する。ただし、超音波セン サのピンと共通で2bitは、アドレスに用いて、のこり1bit は無視する。  超音波センサは、アドレスによって1つずつ動作する。    超音波センサ回路では、接続に10bit使用する。(この 内2bitはアドレス用)  このうちPWM制御回路とIP−dig48との接続で16本の ピン(16bit)を使用する。 IP−dig48では、32本のピンが仕様可能である。 I/Osubボードは、超音波センサ回路、PWM回路、赤外線セン サ回路、タッチセンサ回路の4つの回路を搭載した回路である。 2.5 I/Osubボード  ロータリエンコーダは、a,b2相入力式のものを、2個まで取り付 け可能駆動輪が逆転の時には、カウンタはダウンカウントし、0以下に なるとカウント値は2の補数表示でデータ出力して、8ビットのパラレ ルデータを2回に分けて出力する。 このボードは、ロータリエンコーダからの信号を取り込み、カウン タでカウントし、CPUの要求に応じてカウント値を出力するものであ る。また、タッチセンサの信号を取り込スイッチの状態を調べ、スイッ チ割り込みの割り込み信号を発生させるのも、このボードである。 機能性能 2.4 IP−ロータリエンコーダボード 詳細は、IO.SAMを参照 2.3 IP-Digital48ボード VIPC310ボードは、IP(IndustryPack)を二つ搭載することが出 来、INPUT/OUTPUT、割り込みといった機能がある。(他にもメモリ 機能、リチウムバッテリ(12[V])を搭載しているが、今回は使用 しない。)>詳細は、仕様書(UserManualVIPC310)参照 2.2 VIPC310ボード I/Oボードは、VIPC310と、VIPC310上に搭載されるロータリエンコ ーダボード、及びIP-Digital48から構成される。 2.1 構成 I/Oボード 図6  システム外観図 詳細は各項を参照。 勝敗判定装置:赤外線LED、勝敗判定スイッチを搭載する。 Power distributor:電力を各部へ供給する。 Motor Power Circuitボード:モータの正転、逆転を制御する。 I/Oサブボード:PWM回路、超音波センサ回路、赤外線センサ回路を 搭載する。        超音波センサ最大4対、赤外線センサ最大 8個まで対応できる。 MMIボード:LED5つと、4bitスイッチ、押しボタンスイッチを搭載 している。 I/Oボード:RotaryEnc.ボードとIP-Dig.48を搭載する。 CPUボード:CPU68000(12.5MHz)を搭載する。 Vpro94で使われたものを原形とする。 エレクトロニクス機能性能概略 図5 駆動系概略ブロック図 また、駆動系の概略ブロック図を図5に示す。 図4  エレクトロニクスハードウェア構成                 図4に本システムのエレクトロニクスハードウェア構成を示 す。 8.エレクトロニクスハードウェア構成 表紙に戻る 目次に戻る  本システムは,車輪シャーシと基板シャーシの2段構造から なり,車輪シャーシには主に駆動系の部分品が,基板シャーシ には主に基板類が取り付けられる.主要な基板はすべてVME ラック内に収容し,着脱が容易に行えるようにする.個々のセ ンサ類は個別に着脱可能とし保守性の向上を図る.センサ類の 位置は外観図(4外観)を参照のこと.重心の位置は中央と し,タイヤは重心を通る線上に配置すること. 図3  MIRS9402構成ツリー  図3は,本システムの構成ツリーである. 構造概要 表紙に戻る 目次に戻る ペナルティ戦モードでの動作は、相手の位置は決まっているの だから、競技が開始されたらそのまま直進し、相手が近くになった ら、相手の後ろに回りこむようにする。そして、相手の勝敗判定装 置を押す。 ペナルティ戦モード 開始と同時に前進する。左右の超音波センサで相手を検出した 時、その方向に90度回転して前進する。これを繰り返して相手の 勝敗判定装置を見つけ次第追跡を開始する。詳しくは、10.競技モ ードにおける動作参照。 競技モードでの動作 本システムは、競技モード、ペナルティー戦モード、試験モー ドの3つの動作モードを、有する。試験モードは総合試験を行 うためのモードであり、詳細は10章で規定する。 6.動作概要 表紙に戻る 目次に戻る  本システムの外観的な特徴は、上から見て円形であることで あり、これにより回転による衝突等を防ぐことができる。  外観を図1および図2に示す。 5.外観 表紙に戻る 目次に戻る 動作モード競技モード,試験モードを有すること 各モードの動作については6章及び10章で述べる. 勝敗判定装置MIRS競技規定に適合するもの. 情報収集機能超音波距離計測機能×3,赤外線センサ×7, ロータリエンコーダ×2.タッチセンサ×3 最大走行速度1m/s 駆動系制御方式PWM制御による2輪独立駆動方式 MPUVSBC1(PEP社製).詳細は(mpu.SAM)を参 照. 消費電力駆動系 36W以下.(7.2V1700mAhのNi-Cd電池の制 限による) 制御系 15W以下.(5V,3A 電源回路の制限による) 電源7.2V1700mAhのNi−Cd電池を使用 大きさ25cm(縦)×25cm(横)×30cm(高さ)以内である こと. 重量必要最小限 4.緒言 表紙に戻る 目次に戻る  本システムは,競技主宰者(学科)より貸与される,MPU 及びI/Oボードを用い,自律的に行動する小型知能ロボット を実現する.本システムの移動は2つの車輪で行い,PWM制 御による2輪独立駆動方式とする.情報収集機能として,超音 波距離計測機能,赤外線探知機能,車輪の回転数を計測する機 能,接触検知機能を有しており,これらから得られた情報をも とに,後に述べる行動計画に基づく動作をソフトウェアにて実 現する.また,すべての事項はMIRS競技規定に適合するよ う設計されている. 3.システム概要 表紙に戻る 目次に戻る 本仕様書はMIRS競技規定に基づき,2班(”すしpowe rs”)の作成する自律型小型知能ロボットの基本仕様を記述 する. 2.目的 表紙に戻る 目次に戻る 本MIRSは、直進主体で行動する。そして、自分の位置をロ ータリエンコーダによって正確に認識する。そうすることで余 裕を持って動作して相手の行動を予測しつつその勝敗判定装置 を押す。これが、本MIRSのコンセプトである。 1.本MIRSのコンセプト 表紙に戻る 1.IOsub(PWM、赤外線、超音波) 2.MPCボード 3.マンマシンインターフェイス 4.Powerdistributer 5.勝敗判定装置 6.赤外線周辺回路 目次 成果物登録簿へ 目次へ 改訂記録は、各ファイル(項目)ごとに記録 作成者エンドリアント 堀内敏博  仕様書番号94DS02ー0007 MIRS9402検査報告書書(エレキ) 表紙に戻る 目次に戻る 2. はじめからタイヤが動いてENTERを押すとリレーが最 初の状況から離れて、結局タイヤが逆向きに回転する。1番と 2番の検査に、左タイヤと右タイヤの検査は別々にする。 1. 0%の時タイヤが止まり、10%にするとタイヤが動 いて、だんだん%が上がるとタイヤが速くなる。この検査は1 00%までにやりました。 結果 テストプログラムを使って、左右のタイヤを検査する。検 査は2種類があり、一つ目はタイヤの速さと二つ目はタイヤの 逆向きである。 検査手順6 異常無し 結果 テスターを使って、各ICのVCCとGNDは正しく接続 されているかどうか検査する。 検査手順5 異常無し 結果 テスターを使って、VCCとGNDがつながっていないか どうか検査する。 検査手順4 異常無し 結果 テスターを使って、つながっている部品は導通するかどう か検査する。 検査手順3 異常無し 結果 部品表を参考してコネクター種類と型を検査する。 検査手順2 異常無し 結果 部品表と回路図を参考して、基盤に載せる部品の名と向き が正しかどうか検査する。 検査手順1 3.PWM回路の検査と結果 センサーにある離れる物を近くすると、画面にセンサーか らその物までの距離を表示する。物がない場合、検査結果はア ンダフローになる。 結果 テストプログラムを使って、各センサーを検査する。 検査手順6 異常無し 結果 テスターを使って、各ICのVCCとGNDは正しく接続 されているかどうか検査する。 検査手順5 異常無し 結果 テスターを使って、VCCとGNDがつながっていないか どうか検査する。 検査手順4 異常無し 結果 テスターを使って、つながっている部品は導通するかどう か検査する。 検査手順3 異常無し 結果 部品表を参考してコネクター種類と型を検査する。 検査手順2 異常無し 結果 部品表と回路図を参考して、基盤に載せる部品の名と向き が正しかどうか検査する。 検査手順1 2.超音波センサー回路の検査と結果 になる。 10000000 例えば、待ち状態の時、センサー(0)番だけに信号をあげる 場合は、その結果は 待ち状態の時、どれかのセンサーに信号が来る場合は、そ のセンサーは”1”になる。 結果 割り込み待ち状態になったセンサーを検査する。 検査手順9 (0)ON (1)ON (2)OFF (3)OFF (4)OFF (5)OFF (6)OFF (7)OFF (0)番と(1)番に信号が来たら、画面に表示データ次 になる 結果 二つセンサー信号が来たら検査する。 検査手順8 他の番号も一つずつ信号を近くすると同じようにONになる。 (1)だけに信号が来たら(1)番だけONになる。前の( 0)のデータは残りません、従って(0)番はOFFになる。 (0)ON (1)OFF (2)OFF (3)OFF (4)OFF (5)OFF (6)OFF (7)OFF (0)番だけ場合は、画面に表示データは次になる 結果 一つずつ赤外線センサーに信号を近くすると、データ結果 は検査して、順番に(0)から(7)までにする。 検査手順7 (0)OFF (1)OFF (2)OFF (3)OFF (4)OFF (5)OFF (6)OFF (7)OFF 画面に表示データは次になる 結果 赤外線信号はないときに、データ結果は検査する。 検査手順6 異常無し(検査手順6ー9は、テストプログラムによる検 査) 結果 テスターを使って、各ICのVCCとGNDは正しく接続 されているかどうか検査する。 検査手順5 異常無し 結果 テスターを使って、VCCとGNDがつながっていないか どうか検査する。 検査手順4 幾つ部品のハンダが少ないので、すぐ取られる。もう一度 ハンダ付けする。 結果 テスターを使って、つながっている部品は導通するかどう か検査する。 検査手順3 異常無し 結果 部品表を参考してコネクター種類と型を検査する。 検査手順2 異常無し 結果 部品表と回路図を参考して、基盤に載せる部品の名と向き が正しかどうか検査する。 検査手順1 1.赤外線センサー回路の検査と結果 それぞれの回路を検査と結果は次のようにある: IO−SUBボードは赤外線センサー回路、超音波センサー回 路、PWM回路に載せっている。そのIO−SUBボードはI Oボードと赤外線センサー外部回路、超音波センサー外部回 路、MPCとつながっている。 2 弟2版96.3.5エンドリアント  1 初版95.10.28エンドリアント  項番 版数年月日 作成者改訂内容 検査報告書 I/OSUBボード  mirs9402 表紙に戻る 目次に戻る 異常無し 結果 SW1をOFF,SW2をONにして、電源ボー ドのメインスイッチをONにする。電源ボードの スタートスイッチをONにする。この時、右のモ ータが正転している事を確認する。次にSW2を OFFにする。この時、右のモータが逆転してい る事を確認する。そして、SW1をONにして、 モータが止まる事を確認する。電源ボードのメイ ンスイッチをOFFにして、2pinにつながっ ていたものを4pinに、3pinにつながって いたものを5pinにつなぎかえる。この時、3 と同じ動作を確認する。SW1をオフにして、勝 敗判定装置のスイッチを押す。このとき、モータ の回転がとまる事を確認する。 MPCボードのCN3に右、CN4に左のモ ーターをつなぐ。電源ボード(試験済み)のCN 1,3にバッテリーをつなぐ。CN5に勝敗判定 装置(試験済み)をつなぐ。電源ボード(試験済 み)のCN2とMPCボードのCN2をつなぐ。 MPCボードのCN2に下図のような回路をつな ぐ。 検査手順7 異常無し 結果 回路図を参考にして、配線が正しく導通して いるかどうかを検査する。 検査手順6 異常無し 結果 同じくテスターを使って、各ICのVccと GNDが正しく接続されているかどうか検査す る。 検査手順5 異常無し 結果 テスターをつかって、VccとGNDが導通 していないか検査する。 検査手順4 異常無し 結果 同様に、抵抗・コンデンサの搭載位置、容量 が正しいかどうか検査する。 検査手順3 異常無し 結果 同じく部品図を参考にして、コネクタの型 番、搭載されている向きが正しいかどうか検査す る。 検査手順2 異常無し 結果 部品図を見て部品が正しいか検査する。 検査手順1 検査結果 1初版95.11.6堀内  項番版数年月日作成者改訂内容 検査報告書 MPCボード mirs9402 表紙へ戻る 目次へ戻る はんだ付け不良 原因 割り込み信号が入らない。 結果 押しボタンを1回押してみてチャタリングが起き ずに割り込みが1回発生しているかどうか確認す る。 押しボタンスイッチ割り込み試験 検査手順11 はんだ付け不良 原因 ”0100”の状態で、”2”が出力されて いた。 結果2 MMIフロントボードの導通不良 原因 ”0000”の状態で、すでに”B”が出力 されていた。 結果1  図4のように4ビットスイッチをON/OFF させて、それぞれ正しく入力されているかどうか 確認する。 4ビットスイッチデータ読み込み試験 検査手順10 異常無し 結果 図3のようにGreen,Red−Ledを点灯 /消灯させて、それぞれ正しく点灯、消灯してい るかを確認する。 Green,Red−Led.点灯/消灯試 験 検査手順9 結果:異常なし 図2のように4桁の7Seg.−Led.が下位 の桁から上位の桁へそれぞれ正しく0〜9が表示 されているかどうかを視認する。(点灯速度は確 認可能な速さ。) 7Seg.−Led.表示試験 検査手順8 74LS00のはんだづけの不良 原因 LEDは点灯したが、7seg LED0の 1部分が点灯しない。さらに、下図のように、正 しい順序で点灯しなかった。 結果2 MMIメインボードの導通が悪い所が多くあ った。 原因 どのLEDも点灯しなかった。 結果1 図1のように7Seg.−Led.が上位の桁か ら下位の桁へ正しく順番に表示されているかを確 認する。(点灯速度は確認可能な速さ。)  7Seg.−Led.順次表示試験 検査手順7 (検査手順7〜12は、テストプログラムによる 検査) 異常無し 結果 回路図を参考にして、配線が正しく導通して いるかどうかを検査する。 検査手順6 異常無し 結果 同じくテスターを使って、各ICのVccと GNDが正しく接続されているかどうか検査す る。 検査手順5 異常無し 結果 テスターをつかって、VccとGNDが導通 していないか検査する。 検査手順4 異常無し 結果 同様に、抵抗・コンデンサの搭載位置、容量 が正しいかどうか検査する。 検査手順3 異常無し 結果 同じく部品図を参考にして、コネクタの型 番、搭載されている向きが正しいかどうか検査す る。 検査手順2 SN74LS04の向きが逆だった。 結果 部品図(V94−を参考にして、ICの型 番、搭載されている向きが正しいかどうか検査す る。 検査手順1 検査結果 1初版95.10.28堀内  項番版数年月日作成者改訂内容 検査報告書 MMIボード mirs9402 表紙へ戻る 目次へ戻る 異常無し 結果 勝敗判定装置を押す。この時、緑色LEDが 消灯し、CN2が0Vである事を確認する。 検査手順7 異常無し 結果 スタートスイッを押す。この時、緑色LED が点灯し、CN2が7.2Vである事を確認す る。(但し、バッテリーの電圧は、変化するの で、このようにならない事もある。) 検査手順6 異常無し 結果 メインスイッチを切り、バッテリーをCN1 にもつなぐ。その後、メインスイッチを押す。こ の時、緑色LEDが消えており、CN2が0Vで ある事を確認する。 検査手順5 異常無し 結果 勝敗判定装置を押す。このとき、勝敗判定装 置のLEDが消灯し、CN6の2−3pin間が 0Vとなる事を確認する。 検査手順4 異常無し 結果 スタートスイッチを押す。この時、勝敗判定 装置のLEDが点灯し、CN6の2−3pin間 が5Vとなる事を確認する。 検査手順3 異常無し 結果 CN3にバッテリー、CN5に勝敗判定装置 (検査済み)をつなぎ、メインスイッチをオンに する。この時、赤色LEDが点灯し、CN4の2 −3pin間で、5Vが出ている事を確認する。 また、勝敗判定装置のLEDが消灯し、CN6の 2−3pinが0Vとなっている事を確認する。 検査手順2 Green LEDと、STR9005の向 きが逆だったため。 原因 異常あり 結果 回路図(PD1.1又はPD2.1)に従い、導通チェッ クをする。 検査手順1 検査結果 1初版95.10.28堀内  項番版数年月日作成者改訂内容 改訂記録 検査報告書 PowerDistributor mirs9402 表紙へ戻る 目次へ戻る 異常無し 結果 受光素子の1ー3pinに電圧(+5v)を 入力し、赤外線LEDに近ずけ、受光素子の出力 (2pin)をオシロスコープで調べ、上の図の ようになっている事を確認する。 検査手順7 異常無し 結果 IC3の3pinをオシロスコープで調べ、 以下のような波形になっている事を確認する。 検査手順6 異常無し 結果 IC2の3pinをオシロスコープで調べ、 周期600μsぐらいである事を確認する。 検査手順5 異常無し 結果 IC1の3pinをオシロスコープで調べ、 38kHz,Duty比10%ぐらいである事を 確認する。 検査手順4 異常無し 結果 コネクタの3−4pin間に+5vの電圧を 入力する。この時LEDが点灯する事を確認す る。 検査手順3 異常無し 結果 コネクタの1−2pin間の導通を調べる。 この時、スイッチをおさないで導通し、押すと切 れる事を確認する。 検査手順2 異常無し 結果 回路図に従い、導通チェックを行う。 検査手順1 検査結果 勝敗判定装置 1初版95.10.28堀内  項番版数年月日作成者改訂内容 検査報告書書 勝敗判定装置 mirs9402 表紙へ戻る 目次へ戻る 赤外線センサ側のコネクタの接触不慮のた め。 原因 異常あり 結果 初めに赤外線センサを周辺回路中のMORE X3pinと接続し電源をつなぐ。次に勝敗判定 についている赤外線LEDを赤外線センサに近ず ける。このとき30cm以下で出力が、 highlevel、30〜73cmで出力がlowlevelであれば よい。 検査手順3 異常無し 結果 導通のチェックを行う。基板を焼くときに、 導線がきれる場合があるので、気を付ける。 検査手順2 異常無し 結果 部品の配置のチェックを行う。 検査手順1 検査結果 赤外線センサ周辺回路 1初版95.10.28堀内  項番版数年月日作成者改訂内容 検査報告書 赤外線センサ周辺回路 mirs9402 成果物登録簿へ戻る MIRS開発スケジュール森岡 MIRS開発体制清 システム基本設計の内訳堀内 敏 システムの基本機能の詳細全員 システムの基本機能小谷 清 システム設計方針堀内 敏 開発システムの概要石川 MIRS開発計画書の目的小谷 見出し作成者 目次 目次へ 成果物登録簿へ戻る 班番号02班 堀内 敏博 奈良 誠敏 徳増 雄司 清  智也 小谷  衛 エンドリアント 石川 泰広 作成者名森岡 義貴 仕様書番号 94DS02-0001 1996年10月25日 MIRS9402開発計画書 表紙に戻る 目次に戻る ○:ドキュメント ◎:マネージャー 40◎森岡義貴エレキ 32堀内敏博エレキ 6エンドリアントエレキ 18清 智也ソフト 13小谷 衛ソフト 2○石川泰広ソフト 25奈良誠敏ハード 23徳増雄司ハード  番号名前分担 2班のメンバーとその役割を以下に示します。     7.MIRS開発体制 表紙に戻る 目次に戻る ソフトウェアに関しては、各部門と関連し、受け 渡しデータ等を検討して行う。 モジュールの検討等 ソフトウェア インターフェイス関連 MPUの調査研究 測定距離とその精度 視野   光センサ試験 測定距離とその精度 視野 超音波センサ試験 エレクトロニクス 精度 タッチセンサ検査 精度 タイヤ径の検討 ロータリエンコーダ検査       ギア比             ギア検査 トルク 回転数 駆動モーター試験 メカトロニクス 6.システム基本設計の内訳 表紙に戻る 目次に戻る    回転中に回転方向の超音波センサーに反応があっ たら、追跡されていたか、離れて追跡していたと いう事なので、180度回転した後、超音波捜索 モードに移る。 回転中に回転方向の超音波センサーに何も反応が なければ,相手は,後ろにくっついていると思わ れるので,再び回避モードを繰り返す。 回転中に赤外線センサーが反応したら赤外線追跡 モードに移る。   壁の近くまで直進しそこで逃走中に壁から遠 い側のタイヤを停止させ急速に向きを180 度回転する。(図参照) 回避モード  万が一180°くらい回転しても相手が見つか らない場合は、回避モードに入る。 その後、壁に垂直な向きになるように回転し超音 波捜索モードに入る(図参照)。  追跡中、赤外線を見失ってしまっても、相手は 自分より前方にいると見なせるので、その場で回 転し、前方の超音波センサーが相手を捕らえるよ うにする。ただし、片方の車輪を軸としてまわる やり方とする。  追跡は、正面の2つの赤外線センサーによって 行う。常に2つ両方のセンサーが赤外線を捕らえ 続けられるように進行方向を調節する(図参照 )。  まず、赤外線をキャッチした方向に正面を向け るため回転する。このとき相手の赤外線を見失う 事も考えられるが、この場合の処理は(c)で述 べる。 赤外線追跡モード  30秒たっても、センサーに何も反応がなかっ たら、そのまま直進して超音波捜索モードに移 る。   相手がぶつかってきても、超音波センサーか赤 外線センサーに反応するまで止まっていれば、後 ろにまわられる可能性は無い。  超音波センサーには反応があり、赤外線センサ ーに反応がなかったら、反応があった方向に90 度回転して超音波捜索モードに移る。  相手が正面か横を通れば赤外線センサーが、相 手のLEDを捕らえるだろうから、赤外線追跡モ ードに移る。そうでなくても赤外線センサーが反 応すれば赤外線追跡モードに移る。 90度向きが変わったら少し下がり停止する。も し、後ろの距離が少なく後退できないならば、そ の場に停止する。 曲がる方向は壁から遠い方とする。  相手が近くまできたら、後ろに下がりながら曲 がる。 赤外線捜索モード 壁まで進んでも相手が見つからなかった時は、回 避モードに移る。 相手が正面からむっかてきたときは赤外線捜索モ ードに移る。 赤外線センサーが反応しなかったら超音波捜索モー ドを始めから繰り返す。 赤外線センサーが反応したら赤外線追跡モードに移 る。 1.左右の超音波センサーの取り込む距離が突然変化 したら値が変化したセンサーのほうを向く。(図 2) まず、前進する。 超音波捜索モード 図1にシステム動作モード遷移図を示す。 2.システム動作モード  正面の赤外線センサーの両サイドに板を付けて 感知する範囲を真正面にのみ限定する。  MIRSのタイヤの間隔は、できるだけ広くし て曲がる時の性能をよくする。 MIRSを真上から見た図を右に示す。     3.MIRSの外観 5.システム基本機能の詳細 表紙に戻る 目次に戻る 相手を見失ってしまった時、自分の勝敗判定装置 を相手に押されないようにするために逃げる。 回避モード 赤外線を見つけたら、相手の勝敗判定装置を押す ため、赤外線センサを用いて追跡する。 赤外線追跡モード 相手の赤外線LEDを赤外線センサで探す。 赤外線捜索モード 相手を超音波センサにて探し、相手の赤外線LE Dが見えやすいところに行けるようにする。 超音波捜索モード  この班のMIRSには四つの動作モードがあ る。超音波捜索モード、赤外線捜索モード、赤外 線追跡モード、回避モードがそれである。以下に その機能を示す。 4.システムの基本機能 表紙に戻る 目次に戻る このような事を、設計を行う上での方針とする。 という3つの方針に加え、メカニクス、エレクト ロニクス、ソフトウェアの各パートごとで、綿密 な調査・研究を行うこと、また、総合的なシステ ムとしての円滑な動作を目指す。 1.安定したシステム、機体の動作を目指す。 2.修正しやすいように、分解できるようにする。 3.回転しやすいように、車輪の間隔をひろくする。 3.システムの設計方針 表紙に戻る 目次に戻る 前と左右 計3つ タッチセンサー 両側面 1つずつ 両斜め前 1つずつ 前面  2つ 光センサー 両側面 1対ずつ 前面  1対 超音波センサー センサー 相手を探すために、横と前に超音波センサーを付 けています横の超音波センサーに反応があれば、 その方向に、90度回転します。それをくり返し 相手を追い詰めます。赤外線捜索、赤外線追跡、 回避などの動き、また、超音波追跡についての詳 しい動きは、システム基本機能詳細に記します。 動きの特徴 2.システムの概要 表紙に戻る 目次に戻る この計画書には、MIRSの開発設計における作 業をスムーズに進めるために、開発の方針、詳 細やスケジュールを具体的にまとめる。 1.MIRSシステム開発計画書の目的 開発規約に戻る {} inta,b; voidintt09(a,b) {} inta,b; voidtimt09(a,b) } sys1(9,1,0,0); sys1(6,1,0,0); } } break; mmi_iivseg=a; a=sys9(2,2); case0x07:/*US-forward*/ break; mmi_iivseg=a; a=sys9(2,3); case0x06:/*US-left*/ break; mmi_iivseg=a; a=sys9(2,1); case0x05:/*US-right*/ break; } } break; default:z=1; break; z=1; mmi_iivseg+=3000; mmi_iivseg=c; case3:/*forward*/ break; z=3; mmi_iivseg+=2000; mmi_iivseg=b; case2:/*left*/ break; z=2; mmi_iivseg+=1000; mmi_iivseg=a; case1:/*right*/ switch(z){ sys8(0,3,0);/*2/2ishikawa*/ if(disp_count>=1000){ disp_count=sys9(0,3); c=sys9(2,2); b=sys9(2,3); a=sys9(2,1); case0x04:/*supersonicsensor*/ break; mmi_iivseg=a; a=sys9(3,1); case0x03:/*touchsensor*/ break; elseif(a&0x10)mmi_iivseg|=10;*/ elseif(a&0x20)mmi_iivseg|=20; elseif(a&0x08)mmi_iivseg|=30; elseif(a&0x30)mmi_iivseg|=40; elseif(a&0x18)mmi_iivseg|=50; /*if(a&0x38)mmi_iivseg|=60; } break; case0x38:mmi_iivseg+=60; break; case0x18:mmi_iivseg+=50; break; case0x30:mmi_iivseg+=40; break; case0x08:mmi_iivseg+=30; break; case0x20:mmi_iivseg+=20; break; case0x10:mmi_iivseg+=10; switch(d){ d=a&0x38; elseif(a&0x04)mmi_iivseg|=1;*/ elseif(a&0x02)mmi_iivseg|=2; /*if(a&0x06)mmi_iivseg|=3; } break; case0x06:mmi_iivseg+=300; break; case0x02:mmi_iivseg+=200; break; case0x04:mmi_iivseg+=100; switch(d){ d=a&0x06; elseif(a&0x40)mmi_iivseg|=100;*/ elseif(a&0x80)mmi_iivseg|=200; /*if(a&0xc0)mmi_iivseg|=300; } break; case0xc0:mmi_iivseg+=3; break; case0x80:mmi_iivseg+=2; break; case0x40:mmi_iivseg+=1; switch(d){ d=a&0xc0; a=sys9(1,1); mmi_iivseg=0; case0x02:/*infrared*/ switch(DIP){ if(DIP<=0x07){ DIP=((inportb(PBDR0))&0x0f); staticinty,z; inta,b,c,d,DIP,disp_count; externunsignedintmmi_iivseg; { intaa,bb; voidnrmt09(aa,bb) } /*sys1(9,1,0,0);*//*ishikawa1/26*/ sys0(9,0x1100); { voidinzt09() voidsensor_test(); #include"m9402.h" /*sensor-test*/ 開発規約に戻る } th_old=th; ts_o=ts; initial[8]=0; } } pwm_mode=0x00; vflag=1; { else pwm_mode=0x62; if(((th-th_old)<=40)&&((th-th_old)>=-40)) { if(vflag==0) th=(rot_position_i.theta%90); vflag=0; if((ts==0x80)&&(ts_o==0x00)) ts=(inportb(EDRH)&0x80);/*dataofSF*/ } ts_o=0; th_old=(rot_position_i.theta%90); vflag=1; { if(initial[8]!=0) staticintvflag; staticintts_o; staticintth_old; intts; intth; rot_position_i; } intway;/*cm*/ intthetav;/*deg/sec*/ inttheta;/*deg*/ intv;/*cm/sec*/ inty;/*cm*/ intx;/*cm*/ externstructpos{ externintinportb(); externintinitial[MAXTSK]; externunsignedcharpwm_mode; { voidvertical() } ts_old=ts; pb_old=pb; } } break; default:pwm_mode=0x68; break; case0x20:pwm_mode=0x68; break; case0x48:pwm_mode=0x20; break; case0x00:pwm_mode=0x48; break; case0x68:pwm_mode=0x00; switch(p_m){ p_m=pwm_mode; { if(((pb==0x80)&&(pb_old==0x00))||((ts==0x80)&&(ts_old==0x00)))/*ifbuttonis pushed*/ ts=(inportb(EDRH)&0x80);/*dataofSF*/ pb=(inportb(PBDR0)&0x80);/*dataofPB*/ intp_m; intts; staticintts_old; intpb; staticintpb_old; externunsignedcharpwm_mode; { voidturn() } } } break; default:junban=1; break; junban=1; case4:mmi_iivseg=(3000+(unsignedint)rot_position_i.theta); break; junban=4; case3:mmi_iivseg=(2000+(unsignedint)rot_position_i.x); break; junban=3; case2:mmi_iivseg=(1000+(unsignedint)abs(rot_position_i.y)); break; mmi_iivseg=mmi_mod; case1:junban=2; switch(junban){ sys8(0,3,0); { if(sys9(0,3)>=500) } mmi_mod=8989; default:pwm_mode=0x00; break; mmi_mod=0007; case0x0f:pwm_mode=0xa0; break; mmi_mod=0006; case0x0e:pwm_mode=0xb0; break; mmi_mod=0005; case0x0d:pwm_mode=0xe0; break; mmi_mod=0004; case0x0c:pwm_mode=0xf0; break; mmi_mod=0003; case0x0b:vertical(); break; mmi_mod=0002; case0x0a:pwm_mode=0x90; break; mmi_mod=0001; case0x09:pwm_mode=0xd0; break; mmi_mod=0000; case0x08:turn(); switch(sw_data){ sw_data=inportb(PBDR0)&0x0f;/*PIT0baポートi4bitbb奄買Xイッチ*/ rot_position_i; } intway;/*cm*/ intthetav;/*degree/sec*/ inttheta;/*degree*/ intv;/*cm/sec*/ inty;/*cm*/ intx;/*cm*/ { externstructpos voidvertical();/*垂柱u*/ voidturn();/*往復運*/ intshouhai; intmmi_mod; intsw_data; staticintjunban; externunsignedintmmi_iivseg; externunsignedcharpwm_mode; { k_mode_judge() /*#include"io.h"*/ #include #include"m9402.h" 開発規約に戻る {} inta,b; voidintt08(a,b) {} inta8,b8; voidtimt08(a8,b8) } sys1(8,1,0,0); sys1(6,1,3,0); sys1(4,1,0,0); k_mode_judge(); externvoidk_mode_judge(); { inta,b; voidnrmt08(a,b) } initial[8]=1; sys0(8,0x1100); externintinitial[MAXTSK]; { voidinzt08() #include"m9402.h" 開発規約に戻る } p_ir_th_o=th; } pwm_mode=0xf8; mmi_iivseg=2222; { if(p_flag==2) } p_flag=2; else initial[0]=3; elseif(absl(p_rot_posi_th-rot_position_i.theta)<=20) } pwm_mode=0x62; { if(((th-p_ir_th_o)<=40)&&((th-p_ir_th_o)>=-40)) { if(p_flag==1) th=(rot_position_i.theta%90); initial[0]=0; } mmi_iivseg=1111; p_rot_posi_th=rot_position_i.theta; p_flag=1; p_ir_th_o=(rot_position_i.theta%90); { if(initial[0]==3) intth; staticcharp_flag; staticintp_rot_posi_th; staticintp_ir_s_c; staticintp_ir_mmi; staticintp_ir_th_o; externunsignedintmmi_iivseg; externunsignedcharpwm_mode; rot_position_i; } intway;/*cm*/ intthetav;/*degree/sec*/ inttheta;/*degree*/ intv;/*cm/sec*/ inty;/*cm*/ intx;/*cm*/ { externstructpos { voidp_ir_s() unsignedlongir_s_count; } } } break; default:mode_num=1; break; case4:kaihi(); break; case3:ir_c(); break; case2:p_ir_s(); break; case1:ss_s(); { switch(mode_num) mode_num=3; if(sys9(1,1)!=0) { else t_kaihi(); if(t_k_flag==0) ss_ts_o=ss_ts; } t_k_flag=0; initial[0]=5; { if((ss_ts!=0)&&(ss_ts_o==0)) ss_ts=sys9(3,1); } initial[0]=1; ss_ts_o=sys9(3,1); t_k_flag=1; { if(initial[0]==10) externintinitial[MAXTSK]; externvoidt_kaihi(); externvoidkaihi(); externvoidir_c(); externvoidp_ir_s(); externvoidss_s(); intss_ts; staticintss_ts_o; externintmode_num; externintinitial[MAXTSK]; { voidp_mode_judge() ints_flag; intt_k_flag; #include"m9402.h" 開発規約に戻る {} voidintt07(inta,intb) {} voidtimt07(inta,intb) } sys1(7,1,0,0); sys1(6,1,1,0); sys1(4,1,0,0); p_mode_judge(); externvoidp_mode_judge(); { voidnrmt07(inta,intb) } s_flag=1; initial[0]=10; sys0(7,0x1100); externints_flag; externintinitial[MAXTSK]; { voidinzt07(inta,intb) #include"m9402.h" 開発規約に戻る } } break; } sys2(3,TST,0,0);/*ts*/ sys2(2,SST,0,0);/*sss*/ sys2(1,PST,0,0);/*ps*/ sys1(9,1,0,0); { elseif((0x07>=mmi_mode)&&(mmi_mode>=0x02)) } sys2(3,TST,0,0); sys2(5,RET,0,0); sys1(8,1,0,0); { default:if(mmi_mode>=0x08) break; sys2(5,RET,0,0); sys2(3,TST,0,0); sys2(2,SST,0,0); sys2(1,PST,0,0); case0x01:sys1(7,1,0,0); break; sys2(5,RET,0,0);/*re*/ sys2(3,TST,0,0);/*ts*/ sys2(2,SST,0,0);/*sss*/ sys2(1,PST,0,0);/*ps*/ case0x00:sys1(0,1,0,0); switch(mmi_mode){ sys8(6,1,mmi_mode); mmi_mode=(inportb(PBDR0)&0x0f); intmmi_mode; externunsignedintmmi_iivseg; { voiddsdata() } } dsdata(); sys4(6); { if((inportb(EDRH)&0x80)==0x80) { voidwait() voiddsdata(); } } outportb(PADR0,data[i]); data[i]=(led|(i<<4)|data[i]); outportb(PADR0,data2[i]); data2[i]=(led|(i<<4)|data[i-1]); { for(i=1;i<4;i++) outportb(PADR0,data[0]); data[0]=(led|data[0]); } dat=dat/10; data[i]=dat%10; { for(i=0;i<4;i++) }*/ outportb(PADR0,data[i]); dat=dat/10; data[i]=(led|(i<<4)|data[i]); data[i]=dat%10; { /*for(i=0;i<4;i++) dat=mmi_iivseg; } break; default:led=0; break; led=0xc0; if(sys9(5,1)==sys9(5,2)) led=0x40; else led=0x80; if(sys9(5,1)>sys9(5,2))/*left_tire>right_tire*/ case3: break; led=0x80; else led=0x40; if(led==0x80) case2: break; led|=0x40; if(sys9(2,5)!=0) led=0x00; else led=0x80; case1:if(mmi_chase!=0) { switch(a) staticintled; intdat; inti; intdata2[4]; intdata[4];/*7segLEDnumber3・2・1・0*/ externcharmmi_chase; externunsignedintmmi_iivseg; { voidmmi(inta)/*a:modenumber1:honsen2:sensortest3:kitei)*/ #defineRET5 #defineTST10 #defineSST3 #definePST10 #include"m9402.h" 開発規約に戻る {} voidintt06(inta,intb) } wait(); externvoidwait(); { voidtimt06(inta,intb) } mmi(a); externvoidmmi(int); { voidnrmt06(inta,intb) } init(); sys2(6,STT,0,0);/*resistertimt06*/ sys0(6,0x1110); sys1(4,1,00); pwm_mode=0; externunsignedcharpwm_mode; externvoidinit(); { voidinzt06() #defineSTT10/*spaceofextecutionoftimt06*/ 開発規約に戻る } return0; { unsignedintrot_reset(void)/*calledintimt05()*/ } mmi_iivseg;/*fortest*/ rot_position_i.way=(int)rot_position.way; rot_position_i.y=(int)rot_position.y; rot_position_i.x=(int)rot_position.x; } rot_position_i.theta+=360; while(rot_position_i.theta<0) { else } rot_position_i.theta%=360; { if(rot_position_i.theta>0) rot_position_i.theta=(int)(DEGREEIZE*rot_position.theta); rot_position_i.v=(int)rot_position.v; rot_position_i.thetav=(int)(DEGREEIZE*rot_position.thetav); rot_position.way+=fabsf(rot_position.v*samp_time); rot_position.y+=(rot_position.v*sinf(rot_position.theta)*samp_time); rot_position.x+=(rot_position.v*cosf(rot_position.theta)*samp_time); rot_position.theta+=(rot_position.thetav*samp_time); rot_position.v=ideal_moment/width; rot_position.thetav=spin_v/width; ideal_moment=RADI_DTL*LOCA_DTR*rot_measure[0]+RADI_DTR*LOCA_DTL* rot_measure[1]; spin_v=(-1)*RADI_DTL*rot_measure[0]+RADI_DTR*rot_measure[1]; width=LOCA_DTL+LOCA_DTR; } rot_position.way=0.0f; rot_position.thetav=0.0f; rot_position.theta=MIRS_INIT; rot_position.v=0.0f; rot_position.y=MIRS_INIY; rot_position.x=MIRS_INIX; { if(initial[5]!=0) floatwidth,spin_v,ideal_moment; rot_position; } floatway;/*cm*/ floatthetav;/*rad/sec*/ floattheta;/*rad*//*definex-axis=0*/ floatv;/*cm/sec*/ floaty;/*cm*/ floatx;/*cm*/ { staticstructposf { /*calledintimt05()*/ voidrot_posi(float*rot_measure,floatsamp_time) } return(samp_time); /*davi_r=counter[1];*/ /*davi_l=counter[0];*/ } sys8(5,i+1,rot_measure_i[i]); rot_measure_i[i]=(int)(rot_measure[i]*DEGREEIZE); { for(i=0;i<2;i++) rot_measure[1]=(RADI_MTR/RADI_DTR)*(rot_mid+LOCA_DTR/LOCA_MTR*(rot_ori[1] -rot_mid)); rot_measure[0]=(RADI_MTL/RADI_DTL)*(rot_mid+LOCA_DTL/LOCA_MTL*(rot_ori[0] -rot_mid)); rot_mid=(rot_ori[0]+rot_ori[1])/2.0f; /*makedata*/ } rot_ori[i]=coef[i]*(float)counter[i]/samp_time; { for(i=0;i<2;i++) coef[1]=ROT_TEST_R*ROT_THEO_R; coef[0]=ROT_TEST_L*ROT_THEO_L; /*makedata*/ } old_c[1]=counter[1]; old_c[0]=counter[0]; stp_time=0; { else } } } old_c[i]=counter[i]; { else } old_c[i]=0;/*2/7*/ counter[1]=0;/*2/16*/ counter[0]=0;/*2/7,2/16*/ { elseif(abs(counter[i])>abs(old_c[i])) } counter[i]=0; old_c[i]=counter[i]; { if(stp_time>=LOSS) { for(i=0;i<2;i++) stp_time+=timer_new; { if((pwm_mode&0xc6)==0x00) /*forreerror2/5,2/11;filter*/ #endif return-1; if(samp_time==0.0f) timer_old=0; sys8(0,2,0); samp_time=PERIOD*(float)(timer_new-timer_old); timer_new=sys9(0,2); #else samp_time=PERIOD*(float)TIME; #ifdefKITEI counter[0]*=-1;/*2/14;electronics'request*/ } } counter[i]|=~0x0fff; { if((counter[i]&0x0800)!=0x0000) { for(i=0;i<2;i++) counter[0]=(c_h<<8)+c_l; outportb(CRST,0x02); outportb(CRST,0x02); outportb(CRST,0x02); c_h=inportb(EDLH)&0x0f; c_l=inportb(EDLL)&0xff; /*left*/ counter[1]=(c_h<<8)+c_l; outportb(CRST,0x01); outportb(CRST,0x01); outportb(CRST,0x01); c_h=inportb(EDRH)&0x0f; c_l=inportb(EDRL)&0xff; /*right*/ /*determinecoefficientsandcountvalues*/ rot_measure[1]=0.0f;/*''*/ rot_measure[0]=0.0f;/*angularfrequency[rad/sec](float)*/ } old_c[1]=0; old_c[0]=0; stp_time=0; timer_old=0; { if(initial[5]!=0) floatrot_ori[2]; floatrot_mid; staticintold_c[2];/*forreerror2/5;oldcounter*/ staticintstp_time;/*forreerror2/5*/ inti;/*controlvariable*/ unsignedintc_l;/***//*lowpartofcountdata*/ unsignedintc_h;/***//*highpartofcountdata*/ introt_measure_i[2];/*angularfrequency[degree/sec](integer)*/ floatcoef[2];/*coefficient(count-->angularfrequency)*/ intcounter[2];/*countedbyRotaryEncoder*/ staticunsignedinttimer_old;/*oldvalueofSystemClockCounter*/ unsignedinttimer_new;/*newvalueofSystemClockCounter*/ floatsamp_time;/*samplingtimeofRotaryEncoder*/ { /*dummyisneverused*/ /*calledintimt05()*/ floatrot_get(float*rot_measure,unsignedintdummy) /*intdavi_r;*/ /*intdavi_l;*/ externunsignedcharpwm_mode; externunsignedintmmi_iivseg; externintinitial[MAXTSK]; rot_position_i; } intway;/*cm*/ intthetav;/*degree/sec*/ inttheta;/*degree*/ intv;/*cm/sec*/ inty;/*cm*/ intx;/*cm*/ { externstructpos /*#defineTIME2*//*''*/ /*#defineKITEI*//*notimerinterrupt*/ #defineMIRS_INIT(PI/2.0f)/*''(Theta)*/ #defineMIRS_INIY50.0f/*''(Y)*/ #defineMIRS_INIX125.0f/*MIRS'sINItializeposition(X)*/ #defineLOCA_MTR5.34f/*10.5f*/ #defineLOCA_MTL5.34f/*10.5f*/ #defineLOCA_DTR10.5f #defineLOCA_DTL10.5f #defineRADI_MTR1.52f/*4.0f*/ #defineRADI_MTL1.52f/*4.0f*/ #defineRADI_DTR4.0f #defineRADI_DTL4.0f /*EDRL''*/ /*EDRH''*/ /*EDLL''*/ /*EDLHisdefinedin"m9402.h"*/ /*(2*PI/6400.0f)*/ #defineROT_THEO_R(2*PI/800.0f)/*''*/ /*(2*PI/6400.0f)*/ #defineROT_THEO_L(2*PI/800.0f)/*Thisvalueisdeterminedbytheory*/ #defineROT_TEST_R1.0f/*''*/ #defineROT_TEST_L1.0f/*Thisvalueisdeterminedbytest*/ #defineLOSS100/*forreerror2/5*/ #definePERIOD0.01f/*PeriodofSystemClock(sec)*/ #defineDEGREEIZE(180.0f/PI) #definePI3.14159265f #include #include/*tomatchmcc68k*/ #include"m9402.h" 開発規約に戻る } { inta,b; voidintt05(a,b) } initial[5]=0; rot_posi(rot_measure,samp_time); rot_reset(); samp_time=rot_get(rot_measure,0); rot_measure[1]=0.0f; rot_measure[0]=0.0f; floatsamp_time; floatrot_measure[2]; { inta,b; voidtimt05(a,b) } { inta,b; voidnrmt05(a,b) } initial[5]=1; sys8(5,3,0); sys8(5,2,0); sys8(5,1,0); sys0(5,0x1010); { voidinzt05() /*Thefunction'snameischangedin1/25*/ externvoidrot_posi(float*,float); externunsignedintrot_reset(void); externfloatrot_get(float*,unsignedint); externintinitial[MAXTSK]; #include"m9402.h" /***thismodulebefore12/25isinsei_pro***/ /***after12/25***/ 開発規約に戻る } return0; /*diff[1]*=FOOD;*/ /*diff[0]*=FOOD;*/ } break; /*diff[1]*=-1;*/ case3: /*rightrotation*/ break; /*diff[0]*=-1;*/ case2: /*leftrotation*/ /*2/5,2/16remake*/ break; diff[1]*=-1; diff[0]*=-1; case1: /*rear*/ { switch(motion) } break; } } diff[1]=-1; diff[0]=1; { if(right_curv<0) } diff[1]=1; diff[0]=-1; { if(right_curv>0) { if(tire_dt[0]>0&&tire_dt[1]>0) } diff[1]=1; { if(tire_dt[1]<=0) } diff[0]=1; { if(tire_dt[0]<=0) case3: /*rightmode*/ break; } } diff[1]=1; diff[0]=-1; { if(left_curv<0) } diff[1]=-1; diff[0]=1; { if(left_curv>0) { if(tire_dt[0]>0&&tire_dt[1]>0) } diff[1]=1; { if(tire_dt[1]<=0) } diff[0]=1; { if(tire_dt[0]<=0) case2: /*leftmode*/ break; } diff[1]=-1; diff[0]=1; { if(tire_dt[0]tire_dt[1]) case1: /*straightmode*/ break; case0: /*stopmode*/ { switch(factor) factor=(pwm_mode>>6)&0x03; right_curv=-left_curv; /*whenMIRSmovestooright,right_curv>0*/ left_curv=tire_dt[1]*tire_t[0]-tire_dt[0]*tire_t[1]; /*whenMIRSmovestooleft,left_curv>0*/ } motion=1; tire_t[1]*=-1; tire_t[0]*=-1; tire_dt[1]*=-1; tire_dt[0]*=-1; { if(factor==0) factor=(pwm_mode>>5)&0x01; /*forrearmode*/ } return0; /*break;*/ /*motion=3;*/ /*tire_t[1]*=-1;*/ /*tire_dt[1]*=-1;*/ case3: /*rightrotation*/ return0; /*break;*/ /*motion=2;*/ /*tire_t[0]*=-1;*/ /*tire_dt[0]*=-1;*/ case2: /*leftrotation*/ /*2/5,2/16remake*/ { switch(factor) factor=pwm_mode&0x03; /*forrotationmode*/ motion=0;/*front*/ diff[1]=0; diff[0]=0; tire_t[1]=t_t[1]; tire_t[0]=t_t[0]; tire_dt[1]=t_dt[1]; tire_dt[0]=t_dt[0]; /*initialize*/ intmotion; intfactor; intright_curv; intleft_curv; inttire_t[2];/*2/7*/ inttire_dt[2];/*2/7*/ { intfeedback1(int*diff,unsignedcharpwm_mode,int*t_dt,int*t_t) /*2/16*/ /*makefeedbackdata*/ } return0; } diff[i]=(-feed_limit[i]); if(diff[i]<(-feed_limit[i])) diff[i]=feed_limit[i]; if(diff[i]>feed_limit[i]) diff[i]/=FOOD; diff[i]=(-FOOD); if(diff[i]<0&&diff[i]>=(-FOOD)) diff[i]=FOOD; if(diff[i]>0&&diff[i]<=FOOD) diff[i]=(tire_t[i]-tire_dt[i]); { for(i=0;i<2;i++) /*forfeedback,2/13,2/14*/ feed_limit[1]/=2;/*2/14,2/15*/ if((pwm_mode&0xc2)==0xc0)/*2/14*/ feed_limit[0]/=2;/*2/14,2/15*/ if((pwm_mode&0xc2)==0x80)/*2/14*/ feed_limit[1]=FEED_MAX; feed_limit[0]=FEED_MAX; /*determinefeedbacklimit2/14,2/15*/ diff[1]=0; diff[0]=0; tire_t[1]=t_t[1]; tire_t[0]=t_t[0]; tire_dt[1]=t_dt[1]; tire_dt[0]=t_dt[0]; /*initialize*/ intfeed_limit[2];/*2/14*/ inti;/*2/13*/ inttire_t[2];/*2/7*/ inttire_dt[2];/*2/7*/ { intfeedback0(int*diff,unsignedcharpwm_mode,int*t_dt,int*t_t) /*2/16*/ /*makefeedbackdata;2/13,2/14,2/15Bigchange*/ } return((int)tire_t[i]); } break; tire_t[1]*=-1.0f; case3:tire_t[0]*=1.0f; break; tire_t[1]*=1.0f; case2:tire_t[0]*=-1.0f; { switch(factor)/*forrotation*/ factor=pwm_mode&0x03; } break; case0:tire_t[i]*=-1.0f; { switch(factor)/*forback*/ factor=(pwm_mode>>5)&0x01; } break; case3:tire_t[i]=DEGREEIZE*(1.0f-loca_dt[i]/curv_t)*velo_t/radi_dt[i] ; break; case2:tire_t[i]=DEGREEIZE*(1.0f+loca_dt[i]/curv_t)*velo_t/radi_dt[i] ; break; case1:tire_t[i]=DEGREEIZE*velo_t/radi_dt[i]; break; case0:tire_t[i]=0.0; { switch(factor)/*determinetargetvelocityoftires*/ factor=(pwm_mode>>6)&0x03; } break; case1:curv_t=PWM_RADI_LONG; break; case0:curv_t=PWM_RADI_SHORT; { switch(factor)/*determinetargetradius*/ factor=(pwm_mode>>4)&0x01; } break; velo_t=PWM_FAST_ROT; case0x0a:case0x0b: break; velo_t=PWM_SLOW_ROT; case0x02:case0x03: { switch(factor) factor=pwm_mode&0x0b; } break; velo_t=PWM_FAST_CUR; case0x88:case0xc8: break; velo_t=PWM_SLOW_CUR; case0x80:case0xc0: break; velo_t=PWM_FAST_STR; case0x08:case0x48: break; velo_t=PWM_SLOW_STR; case0x00:case0x40: { switch(factor)/*determinetargetvelocity*/ factor=pwm_mode&0xc8; /*remake;2/7*/ loca_dt[1]=LOCA_DTR; loca_dt[0]=(-1)*LOCA_DTL; radi_dt[1]=RADI_DTR; radi_dt[0]=RADI_DTL;/*initialize*/ unsignedcharfactor; floattire_t[2];/*''*/ floatcurv_t;/*''*/ floatvelo_t;/*'t'means'target'*/ floatloca_dt[2]; floatradi_dt[2]; { inttire(unsignedcharpwm_mode,inti)/*i:leftorright*/ /*determinetirevelocity*/ } outportb(A_PWM_DUTY_R,(int)data[1]);/***//*!*/ outportb(A_PWM_DUTY_L,(int)data[0]);/***//*!*/ } data[i]=(data[i]<<1)+dir; } data[i]*=-1; dir=0; { if(data[i]<0) data[i]=(127*pwm_duty[i])/100; dir=1; { for(i=0;i<2;i++)/*makedataforpwm*/ last_mode=pwm_mode; } control[0]=0; } } duty_min[i]=pwm_duty[i]-1; { else } min_flg[i]=0; duty_count[i]++; { elseif(min_flg[i]==1) } min_flg[i]=1; duty_min[i]=pwm_duty[i]; { if(pwm_duty[i]<=duty_min[i]) } duty_max[i]=pwm_duty[i]+1;/*2/16*/ { else } max_flg[i]=0; duty_count[i]++; { elseif(max_flg[i]==1) } max_flg[i]=1; duty_max[i]=pwm_duty[i]; { if(pwm_duty[i]>=duty_max[i]) break; if(duty_count[i]>=3) { for(i=0;i<2;i++) /*2/15*/ } } pwm_duty[i]=0; { if(tire_t[i]==0) /*forstop2/15*/ } pwm_duty[i]=-1; { if(pwm_duty[i]>0&&tire_t[i]<0)/*2/15*/ } pwm_duty[i]=1; { if(pwm_duty[i]<0&&tire_t[i]>0)/*2/15*/ /*protect2/15*/ } pwm_duty[i]+=diff[i]; { else {} elseif(pwm_duty[i]<0&&pwm_duty[i]>=(-pwm_low[i])&&diff[i]>0)/*2/13*/ {} elseif(pwm_duty[i]>0&&pwm_duty[i]<=pwm_low[i]&&diff[i]<0)/*2/13*/ {} elseif(pwm_duty[i]<=(-pwm_limit[i])&&diff[i]<0)/*2/13*/ {} if(pwm_duty[i]>=pwm_limit[i]&&diff[i]>0)/*2/13*/ { for(i=0;i<2;i++) /*feedbacking*/ } } } pwm_duty[0]=tire_t[0]/MOTORIZE_L; duty_count[i]=0; { if(abs(tire_dt[i]*3/2)=3) break; if((pwm_mode&0xc0)==0x40||i==1)/*2/15,2/16forrighttirefeedback*/ { for(i=0;i<2;i++) /*2/15,2/16*/ } pwm_low[0]=PWM_MIN_S;/*2/15*/ { if((pwm_mode&0xc2)==0xc0)/*2/15*/ } pwm_low[1]=PWM_MIN_S;/*2/15*/ { if((pwm_mode&0xc2)==0x80)/*2/15*/ } pwm_low[1]=PWM_MIN_S;/*2/14*/ pwm_low[0]=PWM_MIN_S;/*2/14*/ { if((pwm_mode&0xc0)==0x40)/*2/14*/ pwm_low[1]=PWM_MIN;/*2/13*/ pwm_low[0]=PWM_MIN;/*2/13*/ /*low*/ } pwm_limit[1]=PWM_MAX/2; { if((pwm_mode&0xc2)==0xc0) } pwm_limit[0]=PWM_MAX/2; { if((pwm_mode&0xc2)==0x80) } pwm_limit[1]=0; pwm_limit[0]=0; { if((pwm_mode&0xc6)==0x00) pwm_limit[1]=PWM_MAX; pwm_limit[0]=PWM_MAX; /*high*/ /*determinelimit,2/13*/ } } diff[1]=FOOD_S*diff_dummy[1]; diff[0]=FOOD_S*diff_dummy[0]; { if((pwm_mode&0xc2)==0x40)/*forstraight,2/16*/ diff[1]=diff_dummy[1];/*forcurve,2/16*/ (void)feedback1(diff_dummy,pwm_mode,tire_dt,tire_t); { else/*forcurveorstraight,2/16*/ } diff[1]=diff_dummy[1]; diff[0]=diff_dummy[0]; { if((pwm_mode&0x02)==0x02)/*forrotation,2/16*/ diff[0]=diff_dummy[0];/*forcurve,2/16*/ (void)feedback0(diff_dummy,pwm_mode,tire_dt,tire_t);/*2/16*/ /*determinediff[2]infeedback0(),feedback1(),2/16*/ { else } control[0]++; { elseif(control[0]angularfrequency[degree/sec],image*/ #defineFEED_MAX20/*2/14,2/16*/ #defineFOOD_S3/*2/16*/ #defineFOOD10/*forfeedback2/5,2/13,2/14,2/16*/ #definePWM_NN10/*forPWMcontrol,2/13,2/14,2/14,2/16*/ #definePWM_MIN_S20/*''(straight),2/14*/ #definePWM_MIN10/*'',2/13,2/14,2/14*/ #definePWM_MAX80/*limitofpwmduty*/ #defineDEGREEIZE(180.0f/PI) #definePI3.14159265f #defineLOCA_DTR10.3f #defineLOCA_DTL10.3f #defineRADI_DTR4.0f/*'dtr'meansrighttirefordrive*/ #defineRADI_DTL4.0f/*'dtl'meanslefttirefordrive*/ #definePWM_RADI_LONG40.0f/*''(long),2/14,2/15*/ #definePWM_RADI_SHORT15.0f/*MIRS'sradiusofmotion(short),2/14*/ #definePWM_FAST_ROT20.0f #definePWM_SLOW_ROT10.0f/*forrotation;2/7,2/11,2/12,2/13,2/14*/ #definePWM_FAST_CUR30.0f #definePWM_SLOW_CUR10.0f/*forcurve;2/7,2/11,2/12,2/13,2/14*/ #definePWM_FAST_STR50.0f #definePWM_SLOW_STR30.0f/*forstraight;2/7,2/11,2/12,2/13,2/14,2/16*/ /*#definePWM_VELO_FAST20.0f*//*''(fast)*/ /*#definePWM_VELO_SLOW15.0f*//*MIRS'svelosity(slow)*/ #defineA_PWM_DUTY_RPADR1/*''*/ #defineA_PWM_DUTY_LPBDR1/*dependonelectronics'request*/ #include"m9402.h" #include 開発規約に戻る } { inta,b; voidintt04(a,b) } { inta,b; voidtimt04(a,b) } initial[4]=0; pwm_give(); { inta,b; voidnrmt04(a,b) } initial[4]=1; sys0(4,0x1100); { voidinzt04() externvoidpwm_give(void); externintinitial[MAXTSK]; #include"m9402.h" 開発規約に戻る } sys8(3,1,b); b+=1; if((a&0x04)==0x04) b+=100; if((a&0x02)==0x02) b+=10; if((a&0x01)==0x01) a=(a>>4); a=(inportb(EDRH)&0xf0); b=0; intb; inta; { inttouch()/*タッチセンサ監視用関数*/ #include"m9402.h" 開発規約に戻る {} voidintt03(inta,intb) } touch(); { voidtimt03(inta,intb) {} voidnrmt03(inta,intb) } sys0(3,0x1010); { voidinzt03() voidtouch(); 開発規約に戻る } } resp=resp+sss_no;/************改良の余地あり**************/ resp=resp|0x8; { else resp=0; if(!hit) /******返す値作成********/ } ++hit; if(data!=0)/*壁と平行でないのにdataがある*/ { else } } } k=0; else } ++hit; k=1; { if(k=0) { elseif(abs(d[sss_no][i]-d[sss_no][i-1])>25)/*突然の変化*/ } ++hit; if(k=1) { if(abs(d[sss_no][i]-d[sss_no][i-1])<10) { for(i=1;i<=S_MAX;++i) k=0; /*相手を検索*/ d[sss_no][S_MAX]=data; d[sss_no][i-1]=d[sss_no][i]; for(i=1;i<=S_MAX;++i) { if(diff==1) /*壁と平行の時 */ data=sys9(02,sss_no+1);/*"data=0"の時は underflow*/ sss_no=sys9(02,4); /******readdata******/ } initial[02]=0; } break; case2:d[i][j]=left; break; case1:d[i][j]=front; break; case0:d[i][j]=right; { switch(i) for(j=0;j5) rest=rot_position_i.theta%(90*divi); if(divi!=0) divi=(rot_position_i.theta)/90; /*壁と平行の位置にあるか判別ただし、指向性は5゜*/ hit=0; resp=0x0; direction=1; if(initial[02]==2) /*初期化*/ rot_position_i; } intway; intthetav; inttheta; intv; inty; intx; { externstructpos externintinitial[02];/*初期化用変数*/ staticintd[3][S_MAX+1];/*datalib*/ staticintold_divi; intfront,left,right;/*datachanger*/ intresp;/*response*/ inthit;/*getopponent*/ intsss_no;/*超音波番号*/ intdirection; intdata; intdiff; intdivi; intdist; intrest; inti,j,k; { voidsss_search(void) } returndata; data=0; if(underf!=0) underf=inportb(PADR2)&0x04; /*underflowcheck*/ data=e; e=e+1; if(f>=0.5) f=d-e; /*四捨五入 */ d=d/(double)8000000; kyori=e; e=d/(double)8000000;/*実際の距離 */ d=34000*(SSS_LIMIT-data)*32/2;/*計測距離 */ /*calucuration*/ data=(h<<16)+(m<<8)+l; /*change3pieceofdatato1piecedata*/ /*outportb(PADR2,sss_no);*//*8bitdata*/ /*ssssend*/ l=inportb(CNTR2+6)&0xff; m=inportb(CNTR2+4)&0xff; h=inportb(CNTR2+2)&0xff; /*readcountdata*/ intunderf; floatf; inth,m,l; intdata; inte; floatd; { ints_get_data() } ++sss_no; old=sss_no; sss_search(); sys8(02,4,old+1);/*どこのBBの値を変えたか報告*/ sys8(02,old+1,data);/*BBにdataを書き込む*/ outportb(PACR2,0x20);/*H2negate*/ outportb(PACR2,0x28);/*H2asert*/ outportb(PADR2,sss_no);/*8bitdata*/ outportb(TCR2,0xb3);/*Timerenable*/ /*ssssend*/ data=s_get_data(); } sss_no=0; initial[02]=2; old=0; { if(initial[02]==1) /*初期化*/ ints_get_data(void);/*dataの読込み*/ staticintold;/*読み込んだdataの場所*/ externintinitial[02]; staticintsss_no; voidsss_search(void); intdata; { voidsss_io() intkyori; #defineS_MAX20 #include"m9402.h" 開発規約に戻る } intt_num++; { interruptvoidintt02() intintt_num=0; } sss_io(); externvoidsss_io(); { intb; inta; voidtimt02(a,b) } { intb; inta; voidnrmt02(a,b) } sys5(2,0,72,0,0); sys0(2,0x1011); { voidinzt02() 開発規約に戻る } sys8(1,1,a); } mmi_chase=1; a=a|0x01; { if(a!=0) a=((inportb(PBDR2))&0xff); externunsignedcharmmi_chase; inta; { intinfrared()/*赤外線センサ監視用関数*/ #include"m9402.h" 開発規約に戻る {} voidintt01(inta,intb) } infrared(); { voidtimt01(inta,intb) {} voidnrmt01(inta,intb) } sys0(1,0x1010); { voidinzt01() externvoidinfrared(); 開発規約に戻る } t_k_flag=1; else pwm_mode=0x40; if((t_k_way+10)>rot_position_i.way) initial[0]=0; t_k_way=rot_position_i.way; if(initial[0]==5) mmi_iivseg=5000; staticunsignedintt_k_way; externintt_k_flag; externunsignedintmmi_iivseg; externunsignedcharpwm_mode; rot_position_i; } intway;/*cm*/ intthetav;/*degree/sec*/ inttheta;/*degree*/ intv;/*cm/sec*/ inty;/*cm*/ intx;/*cm*/ { externstructpos { voidt_kaihi() } } } } s_flag=1; mode_num=1; initial[0]=1; { else pwm_mode=0xa8; if(((o_th1+20)rot_position_i.theta)) { if(k_flag==1) } } s_flag=1; mode_num=1; initial[0]=1; { else pwm_mode=0xa8; if(((o_th1+10)rot_position_i.theta)) { if(k_flag==0) { if(s_flag==0) initial[0]=0; } } k_flag=0; o_th2+=360; { if((o_th-40)<=-1) } k_flag=0; o_th1-=360; { if((o_th+10)>=360) k_flag=1; o_th2=o_th; o_th1=o_th; o_th=(rot_position_i.theta+180)%360; { if(initial[0]==2) mmi_iivseg=4000; staticintk_flag; staticinto_th2; staticinto_th; staticinto_th1; rot_position_i; } intway;/*cm*/ intthetav;/*degree/sec*/ inttheta;/*degree*/ intv;/*cm/sec*/ inty;/*cm*/ intx;/*cm*/ { externstructpos externunsignedintmmi_iivseg; externunsignedcharpwm_mode; { voidkaihi() } } break; case0x38:mmi_iivseg+=60; break; case0x18:mmi_iivseg+=50; break; case0x30:mmi_iivseg+=40; break; case0x08:mmi_iivseg+=30; break; case0x20:mmi_iivseg+=20; break; case0x10:mmi_iivseg+=10; switch(d){ d=(ir_dt&0x38); } break; case0x06:mmi_iivseg+=300; break; case0x02:mmi_iivseg+=200; break; case0x04:mmi_iivseg+=100; switch(d){ d=(ir_dt&0x06); } break; case0xc0:mmi_iivseg+=3; break; case0x80:mmi_iivseg+=2; break; case0x40:mmi_iivseg+=1; switch(d){ d=(ir_dt&0xc0); } pwm_mode=0x62; else } initial[0]=1; s_flag=1; mode_num=1; { if(((rot_position_i.theta%90)<=5)||((rot_position_i.theta%90)>=85)) { elseif((ir_c_count+3000)} ir_c_count=Sysclk; pwm_mode=0xa8; elseif((ir_dt&0x0e)!=0) pwm_mode=0xe8; elseif((ir_dt&0xe0)!=0) pwm_mode=0x60; if((ir_dt&0x38)==0x38) { if(ir_dt!=0) ir_dt=sys9(1,1); mmi_iivseg=3000; intd; rot_position_i; } intway;/*cm*/ intthetav;/*degree/sec*/ inttheta;/*degree*/ intv;/*cm/sec*/ inty;/*cm*/ intx;/*cm*/ { externstructpos externunsignedcharpwm_mode; externunsignedlongSysclk; staticunsignedlongir_c_count; externintmode_num; intir_dt; { voidir_c() } ir_th_o=th; } s_flag=0; initial[0]=2; mode_num=4; { else } } } s_flag=1; ir_s_count=(Sysclk-3500); ir_s_mask_count=(Sysclk+750); { else } ir_r_p_th_o=rot_position_i.theta; { elseif((absl(ir_r_p_th_o-th)>=330)||(absl(ir_r_p_th_o-th)<=40)) } ir_s_count=(Sysclk-3500); mmi_iivseg+=ir_mmi; pwm_mode=ir_pwm_mode; { if(((th-ir_th_o)<=40)&&((th-ir_th_o)>=-40)) { if(s_flag==0) pwm_mode=0; else } s_flag=0; } ir_mmi=10; ir_pwm_mode=0x00; { if((sys9(2,5)&0x02)!=0) } ir_mmi=100; ir_pwm_mode=0x63; { if((sys9(2,5)&0x01)!=0) } ir_mmi=1; ir_pwm_mode=0x62; { if((sys9(2,5)&0x04)!=0) { if((sys9(2,5)!=0)&&(ir_s_mask_count<=Sysclk)) { if(Sysclk<(ir_s_count+7000)) mmi_iivseg=2000; th=(rot_position_i.theta%90); initial[0]=0; } ir_s_mask_count=0; ir_r_p_th_o=rot_position_i.theta; ir_th_o=(rot_position_i.theta%90); { if(initial[0]==3) intth; intd; intit_r_p_th; staticintir_r_p_th_o; staticintir_s_c; staticintir_mmi; staticunsignedlongir_s_mask_count; staticintir_th_o; staticunsignedcharir_pwm_mode; externunsignedlongSysclk; externunsignedlongir_s_count; externunsignedintmmi_iivseg; externunsignedcharpwm_mode; { voidir_s() } th_o=th; } } initial[0]=3; ir_s_count=Sysclk; mode_num=2; { else } initial[0]=2; s_flag=0; mode_num=4;/*ifwall,gotokaihi*/ { (((t<=35)||(t>=325))&&((250-x)<=60))) ((absl(t-90)<=35)&&((250-y)<=60))|| ((absl(t-180)<=35)&&((x-0)<=60))|| if(((absl(t-270)<=35)&&((y-0)<=60))|| { elseif((sys9(2,2)<=40)&&(sys9(2,2)!=0))/*ifforwardsssis30cmandnotoverflow*/ } s_flag=1; else } mmi_iivseg+=s_mmi; pwm_mode=s_pwm_mode; { if(((th-th_o)<=40)&&((th-th_o)>=-40)) { if(s_flag==0) th=(rot_position_i.theta%90); } } s_flag=1; s_pwm_mode=0x68; s_mmi=10; { else } s_flag=0; s_pwm_mode=0xe8; s_mmi=1; { elseif((sys9(2,5)&0x01)==0x01) } s_flag=0; s_mmi=100; s_pwm_mode=0xa8; { if((sys9(2,5)&0x04)==0x04) { if((sys9(2,5)&0x08)!=0)/*ifleftorrightsssishit*/ } pwm_mode=0xf0; elseif((t%90)<=45) pwm_mode=0xb0; if((t%90)>=45) else{ pwm_mode=0x60; if(((t%90)<=5)||((t%90)>=85)) t=rot_position_i.theta; y=rot_position_i.y; x=rot_position_i.x; initial[0]=0; } th_o=rot_position_i.theta%90; { if(initial[0]==1) mmi_iivseg=1000; intth; intx,y,t; staticintth_o; staticunsignedints_mmi; staticunsignedchars_pwm_mode; rot_position_i; } intway;/*cm*/ intthetav;/*degree/sec*/ inttheta;/*degree*/ intv;/*cm/sec*/ inty;/*cm*/ intx;/*cm*/ { externstructpos externunsignedlongSysclk; externints_flag; externintmode_num; externintinitial[MAXTSK]; externunsignedintmmi_iivseg; externunsignedcharpwm_mode; { voidss_s() unsignedlongir_s_count; } } } break; default:mode_num=1; break; case4:kaihi(); break; case3:ir_c(); break; case2:ir_s(); break; case1:ss_s(); { switch(mode_num) mode_num=3; if(sys9(1,1)!=0) { else t_kaihi(); if(t_k_flag==0) ss_ts_o=ss_ts; } t_k_flag=0; initial[0]=5; { if((ss_ts!=0)&&(ss_ts_o==0)) ss_ts=sys9(3,1); } initial[0]=1; ss_ts_o=sys9(3,1); t_k_flag=1; { if(initial[0]==10) externintinitial[MAXTSK]; voidt_kaihi(); voidkaihi(); voidir_c(); voidir_s(); voidss_s(); intss_ts; staticintss_ts_o; externintmode_num; externintinitial[MAXTSK]; { voidmode_judge() ints_flag; intt_k_flag; #include"m9402.h" 開発規約に戻る {} voidintt00(inta,intb) {} voidtimt00(inta,intb) } sys1(0,1,0,0); sys1(6,1,1,0); sys1(4,1,0,0); mode_judge(); externvoidmode_judge(); { voidnrmt00(inta,intb) } s_flag=1; initial[0]=10; sys0(0,0x1100); externints_flag; externintinitial[MAXTSK]; { voidinzt00(inta,intb) #include"m9402.h" 開発規約に戻る task09-1.c  task08-1.ctask08-2.c task07-1.ctask07-2.c task06-1.ctask06-2.c task05-1.ctask05-2.c task04-1.ctask04-2.c task03-1.ctask03-2.c task02-1.ctask02-2.c task01-1.ctask01-2.c task00-1.ctask00-2.c 各タスク 開発規約に戻る }rot_position_i; intway;/*cm*/ intthetav;/*deg/sec*/ inttheta;/*deg*/ intv;/*cm/sec*/ inty;/*cm*/ intx;/*cm*/ structpos{ intmode_num; intmode_judge; unsignedcharpwm_mode; unsignedcharmmi_chase; unsignedintmmi_iivseg; intinitial[MAXTSK]; 9,0x00,inzt09,nrmt09,timt09,intt09,0,1,0,0,0,0,0,}; 8,0x00,inzt08,nrmt08,timt08,intt08,0,1,0,0,0,0,0, 7,0x00,inzt07,nrmt07,timt07,intt07,0,1,0,0,0,0,0, 6,0x00,inzt06,nrmt06,timt06,intt06,0,1,0,0,0,0,0, 5,0x00,inzt05,nrmt05,timt05,intt05,0,1,0,0,0,0,0, 4,0x00,inzt04,nrmt04,timt04,intt04,0,1,0,0,0,0,0, 3,0x00,inzt03,nrmt03,timt03,intt03,0,1,0,0,0,0,0, 2,0x00,inzt02,nrmt02,timt02,intt02,0,1,0,0,0,0,0, 1,0x00,inzt01,nrmt01,timt01,intt01,0,1,0,0,0,0,0, 0,0x00,inzt00,nrmt00,timt00,intt00,0,1,0,0,0,0,0, table[MAXTSK]={ } intBB5;/*Bulletin Box*/ intBB4;/*Bulletin Box*/ intBB3;/*Bulletin Box*/ intBB2;/*Bulletin Box*/ intBB1;/*Bulletin Box*/ unsignedtimset;/*タイマセット値*/ unsignedtimer;/*タイマカウント値*/ void(*inttsk)();/*Task割り込み処理*/ void(*timtsk)();/*Taskタイマ処理*/ void(*nrmtsk)();/*Taskノーマル処理*/ void(*inztsk)();/*Task初期設定*/ unsignedflg;/*制御フラグ*/ unsignedtsknum;/*TaskNumber*/ { staticstruct voidinzt09();voidnrmt09();voidtimt09();voidintt09(); voidinzt08();voidnrmt08();voidtimt08();voidintt08(); voidinzt07();voidnrmt07();voidtimt07();voidintt07(); voidinzt06();voidnrmt06();voidtimt06();voidintt06(); voidinzt05();voidnrmt05();voidtimt05();voidintt05(); voidinzt04();voidnrmt04();voidtimt04();voidintt04(); voidinzt03();voidnrmt03();voidtimt03();voidintt03(); voidinzt02();voidnrmt02();voidtimt02();voidintt02(); voidinzt01();voidnrmt01();voidtimt01();voidintt01(); voidinzt00();voidnrmt00();voidtimt00();voidintt00(); #defineMAXTSK10 開発規約に戻る *endofc_entry.s* ENDENTRY SECTIONvars,,D*INITIALIZEDDATA * *SECTIONvars. *MEMORY.THISISDONEEVENTHOUGHTHEREISNOCODEIN *FORCESECTIONvarsTOFOLLOWSECTIONScodeANDzerovarsIN * SECTIONzerovars,,D*DATASECTION * *endofSECTIONcode * RTS BRA.SLSTOP STOP#$2700*HaltuntilLevel7Interrupt LSTOP: JSR_main*Callmain() JSR__initcopy(PC)*ROMINITIALIZATION DBFD0,CLROVARS3*DECREMENTBYTECOUNT&TEST CLROVARS2: CLR.B(A0)+*CLEARONEMOREBYTE CLROVARS3: BRA.SCLROVARS2*SKIPFIRSTCLEAR ANDI.L#3,D0*SHOULDINDIVIDUALBYTESBECLEAR * BNE.SCLROVARS*NO--KEEPCLEARING CMPI.L#-1,D1*ISLONGWORDCOUNT==-1 SUBI.L#$10000,D1*SIMULATEBORROWFROMLOW16BITS DBFD1,CLROVARS*DECREMENTLONGWORDCOUNT&TEST CLROVARS1: CLR.L(A0)+*CLEARTHEADDRESS CLROVARS: BRA.SCLROVARS1*SKIPFIRSTCLEAR LSR.L#2,D1*NUMBEROFLONGWORDSTOMOVE MOVE.LD1,D0*SAVEIND0ALSO MOVE.L#.SIZEOF.(zerovars),D1*LENGTHOFTHESECTION LEA.STARTOF.(zerovars),A0*STARTOFTHESECTION * *from/mirs/sawa/demo68k/entry.s * *THEFOLLOWINGCODECLEARSTHEZEROVARSSECTION * MOVE#$2700,SR*Disableinterrupt MOVE.L#_unsi,(A0) MOVE.L#$3fc,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3f8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3f4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3f0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3ec,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3e8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3e4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3e0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3dc,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3d8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3d4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3d0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3cc,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3c8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3c4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3c0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3bc,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3b8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3b4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3b0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3ac,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3a8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3a4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$3a0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$39c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$398,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$394,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$390,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$38c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$388,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$384,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$380,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$37c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$378,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$374,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$370,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$36c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$368,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$364,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$360,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$35c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$358,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$354,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$350,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$34c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$348,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$344,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$340,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$33c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$338,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$334,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$330,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$32c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$328,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$324,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$320,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$31c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$318,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$314,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$310,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$30c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$308,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$304,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$300,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2fc,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2f8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2f4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2f0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2ec,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2e8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2e4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2e0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2dc,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2d8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2d4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2d0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2cc,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2c8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2c4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2c0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2bc,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2b8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2b4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2b0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2ac,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2a8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2a4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$2a0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$29c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$298,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$294,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$290,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$28c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$288,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$284,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$280,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$27c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$278,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$274,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$270,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$26c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$268,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$264,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$260,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$25c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$258,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$254,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$250,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$24c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$248,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$244,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$240,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$23c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$238,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$234,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$230,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$22c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$228,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$224,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$220,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$21c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$218,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$214,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$210,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$20c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$208,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$204,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$200,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1fc,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1f8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1f4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1f0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1ec,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1e8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1e4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1e0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1dc,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1d8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1d4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1d0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1cc,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1c8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1c4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1c0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1bc,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1b8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1b4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1b0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1ac,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1a8,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1a4,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$1a0,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$19c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$198,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$194,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$190,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$18c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$188,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$184,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$180,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$17c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$178,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$174,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$170,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$16c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$168,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$164,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$160,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$15c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$158,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$154,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$150,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$14c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$148,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$144,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$140,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$13c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$138,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$134,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$130,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$12c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$128,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$124,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$120,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$11c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$118,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$114,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$110,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$10c,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$108,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$104,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$100,A0*User* MOVE.L#_unsi,(A0) MOVE.L#$0fc,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0f8,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0f4,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0f0,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0ec,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0e8,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0e4,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0e0,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0dc,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0d8,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0d4,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0d0,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0cc,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0c8,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0c4,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$0c0,A0*Unsigned,reserved* MOVE.L#_reig16,(A0) MOVE.L#$0bc,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$0b8,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$0b4,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$0b0,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$0ac,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$0a8,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$0a4,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$0a0,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$09c,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$098,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$094,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$090,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$08c,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$088,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$084,A0*TRAPInstructionVector* MOVE.L#_reig16,(A0) MOVE.L#$080,A0*TRAPInstructionVector* MOVE.L#_l7,(A0) MOVE.L#$07c,A0*Lev.7InterruptAutovector* MOVE.L#_RTCint,(A0) MOVE.L#$078,A0*Lev.6(RTC/TICK)* MOVE.L#_l5,(A0) MOVE.L#$074,A0*Lev.5InterruptAutovector* MOVE.L#_l4,(A0) MOVE.L#$070,A0*Lev.4InterruptAutovector* MOVE.L#_l3,(A0) MOVE.L#$06c,A0*Lev.3InterruptAutovector* MOVE.L#_l2,(A0) MOVE.L#$068,A0*Lev.2InterruptAutovector* MOVE.L#_l1,(A0) MOVE.L#$064,A0*LEV.1InterruptAutovector* MOVE.L#_reig15,(A0) MOVE.L#$060,A0*Sprious* MOVE.L#_unsi,(A0) MOVE.L#$05c,A0*Unsighed,reserved* MOVE.L#_unsi,(A0) MOVE.L#$058,A0*Unsighed,reserved* MOVE.L#_unsi,(A0) MOVE.L#$054,A0*Unsighed,reserved* MOVE.L#_unsi,(A0) MOVE.L#$050,A0*Unsighed,reserved* MOVE.L#_unsi,(A0) MOVE.L#$04c,A0*Unsighed,reserved* MOVE.L#_unsi,(A0) MOVE.L#$048,A0*Unsighed,reserved* MOVE.L#_unsi,(A0) MOVE.L#$044,A0*Unsighed,reserved* MOVE.L#_unsi,(A0) MOVE.L#$040,A0*Unsighed,reserved* MOVE.L#_reig14,(A0) MOVE.L#$03c,A0*Unintialized* MOVE.L#_reig13,(A0) MOVE.L#$038,A0*FORMATError* MOVE.L#_unsi,(A0) MOVE.L#$034,A0*Unsigned,reserved* MOVE.L#_unsi,(A0) MOVE.L#$030,A0*Unsigned,reserved* MOVE.L#_reig12,(A0) MOVE.L#$02c,A0*line1111Emulator* MOVE.L#_reig11,(A0) MOVE.L#$028,A0*line1010Emulator* MOVE.L#_reig10,(A0) MOVE.L#$024,A0*Trace* MOVE.L#_reig9,(A0) MOVE.L#$020,A0*PrivilegeViolation* MOVE.L#_reig8,(A0) MOVE.L#$01c,A0*TRAPVInstruction* MOVE.L#_reig7,(A0) MOVE.L#$018,A0*CHKInstruction* MOVE.L#_reig6,(A0) MOVE.L#$014,A0*ZeroDivide* MOVE.L#_reig5,(A0) MOVE.L#$010,A0*IllegalError* MOVE.L#_reig4,(A0) MOVE.L#$00c,A0*AddressError* MOVE.L#_reig3,(A0) MOVE.L#$008,A0*BUSError* MOVE.L#_reig2,(A0) MOVE.L#$004,A0*RESETPC* MOVE.L#_reig1,(A0) MOVE.L#$000,A0*RESETSSP* MOVEA.L#0,A6*FramePointerInitialization MOVEA.L#????STACKTOP,SP*StackPointer ENTRY: DC.L$0F00008*EntryPoint DC.L????STACKTOP*SSPonColdStart XREF_l7 XREF_RTCint XREF_l5 XREF_l4 XREF_l3 XREF_l2 XREF_l1 XREF_unsi XREF_reig16 XREF_reig15 XREF_reig14 XREF_reig13 XREF_reig12 XREF_reig11 XREF_reig10 XREF_reig9 XREF_reig8 XREF_reig7 XREF_reig6 XREF_reig5 XREF_reig4 XREF_reig3 XREF_reig2 XREF_reig1 XREF_main*C'smain() XREF__initcopy*Initializevariablescopy() XREF????STACKTOP XDEFENTRY SECTIONcode,,C ENTRYIDNT OPTCASE ******** *monent* ******** 開発規約に戻る end formats LOAD/usr/mri/lib/mcc68kab.lib loadtask09-2.o loadtask09-1.o loadtask08-2.o loadtask08-1.o loadtask07-2.o loadtask07-1.o loadtask06-2.o loadtask06-1.o loadtask05-2.o loadtask05-1.o loadtask04-2.o loadtask04-1.o loadtask03-2.o loadtask03-1.o loadtask02-2.o loadtask02-1.o loadtask01-2.o loadtask01-1.o loadtask00-2.o loadtask00-1.o loadinit.o loadmirx.o loadmonent.o initdatavars PUBLIC????STACKTOP=$4000;TopoftheStackArea sectvars=$4000;InitializedDataSectionAdrs. sectzerovars=$6000;Un-initializedDataSectionAdrs. *sectioninram sectstrings=$0f08000;StringSectionAdrs. sect??INITDATA=$0f07000;Initializedataforvariables sectcode=$0f00000;CodeSectionBeginAdrs. *sectioninrom ordercode,const listmappublics;listx listmapinternal;listt listmapcrossref;listc listabsinternal;lists listabspublics;listd debug_symbols;listp *listc,d,o,p,x,s,t 開発規約に戻る } return(vmemask); outportb(VIMR,vmemask);/*VMEIRQ1enable*/ vmemask|=i; i=1<=MAXTSK)fin(); n=lastq[py]++; asm("MOVE.W#$2700,SR");/*Interruptdisable*/ asm("MOVE.WSR,`savesr`");/*SaveSR*/ intn,i,savesr; { inttn,py,cm,scm; intsys1(tn,py,cm,scm)/*systemcall1:setnormaltask*/ } table[tskn].flg=fg7+fg6+fg3+fg2; fg7<<=7;fg6<<=6;fg3<<=3;fg2<<=2; if((flag&0x1)==0)fg3=0; if((flag&0x10)==0)fg2=0; if((flag&0x100)==0)fg6=0; if((flag&0x1000)==0)fg7=0; fg7=fg6=fg3=fg2=1; intfg7,fg6,fg3,fg2; { inttskn,flag; voidsys0(tskn,flag)/*systemcall0:taskinitialize*/ } e_fin(2,8); else e_fin(2,7); if(k>=0x80) k=inportb(VIMR); intk; { interruptvoidl7() } e_fin(2,9); else } outportb(MSR,0x04); table[tn].timer++; (table[tn].timer=table[tn].timset)) if(((table[tn].flg&0xa4)==0x84)&& for(tn=0;tn inttn; { voidtimdsp() } return(ut); } if((table[tn].flg&0xcc)>0x80)ut++; (*pinz)(); pinz=table[tn].inztsk; { for(tn=0;tn} tcom[tn]=tscom[tn]=icom[tn]=iscom[tn]=0; ncom[py][tn]=nscom[py][tn]=que[py][tn]=lastq[py]=0; for(py=0;py<7;py++) { for(tn=0;tn ut=0; intut,tn,py; { intinzdsp() } } nrmdsp(); timdsp(); { while(usetsk!=0) asm("\tMOVE\t#$2000,SR\t");/*enableinterrupt*/ /*asm("MOVE.W#$2000,SR");*//*InterruptAble*/ eichi=70; usetsk=inzdsp(); outportb(MSR,0x0c); outportb(PFIC,0x10); outportb(RTMR,0x08); outportb(MSR,0x4c); inportb(0xfdfe07); outportb(MSR,0x0c); outportb(MSR,0x00);*/ outportb(TSIC,0x00); outportb(PFIC,0x10); /*outportb(MSR,0x40); /*tm_init*/ rtc_clr();/*mirs94021/31*/ eichi=30; intusetsk; { voidmain() /***********************/ /*mirx68k1mainprogram*/ /***********************/ } return(ans); elseans=a; if(a<0)ans=0-a; intans; { inta; intabsl(a) } return(data); *(port+0x06)=lbyte; *(port+0x04)=mbyte; *(port+0x02)=hbyte; *port=tbyte; lbyte=(unsignedchar)(data&0x000000ff); mbyte=(unsignedchar)((data&0x0000ff00)>>8); hbyte=(unsignedchar)((data&0x00ff0000)>>16); tbyte=(unsignedchar)((data&0xff000000)>>24); unsignedchartbyte,hbyte,mbyte,lbyte; { intdata; char*port; intoutportl(port,data) } return(*port=data); { intdata; char*port; intoutportb(port,data) } return((int)*port); { char*port; intinportb(port) intvmemask=0; unsignedlongSysclk=0; externvoidrtc_clr(); intcode[2]; intnscom[7][MAXTSK],tscom[MAXTSK],iscom[MAXTSK]; intncom[7][MAXTSK],tcom[MAXTSK],icom[MAXTSK]; unsignedque[7][MAXTSK],lastq[7]; void(*pinz)(),(*pnrm)(),(*ptim)(),(*pint)(),(*(*vp))(); intsys1(),sys9(),sys10(),sys11(); voidsys0(),sys2(),sys3(),sys4(),sys5(),sys8(); voidfin(),e_fin(inte2,inte1); interruptvoidreig16(),l1(),l2(),l3(),l4(),l5(),RTCint(),l7(),unsi(); interruptvoidreig9(),reig10(),reig11(),reig12(),reig13(),reig14(),reig15(); interruptvoidreig1(),reig2(),reig3(),reig4(),reig5(),reig6(),reig7(),reig8(); voidtimdsp(),nrmdsp(),intdsp(); intinzdsp(),eichi; #include"table.h" #include"m9402.h" /************/ /*mirx68k1.c*/ /************/ 開発規約に戻る end formats LOAD/usr/mri/lib/mcc68kab.lib loadtask09-2.o loadtask09-1.o loadtask08-2.o loadtask08-1.o loadtask07-2.o loadtask07-1.o loadtask06-2.o loadtask06-1.o loadtask05-2.o loadtask05-1.o loadtask04-2.o loadtask04-1.o loadtask03-2.o loadtask03-1.o loadtask02-2.o loadtask02-1.o loadtask01-2.o loadtask01-1.o loadtask00-2.o loadtask00-1.o loadinit.o loadmirx.o loadmonent.o initdatavars PUBLIC????STACKTOP=$4000;TopoftheStackArea sectvars=$4000;InitializedDataSectionAdrs. sectzerovars=$6000;Un-initializedDataSectionAdrs. *sectioninram sectstrings=$0f08000;StringSectionAdrs. sect??INITDATA=$0f07000;Initializedataforvariables sectcode=$0f00000;CodeSectionBeginAdrs. *sectioninrom ordercode,const listmappublics;listx listmapinternal;listt listmapcrossref;listc listabsinternal;lists listabspublics;listd debug_symbols;listp *listc,d,o,p,x,s,t 開発規約に戻る mcc68k-c$(MCCOPT)$< .s.o: mcc68k-c$(MCCOPT)$< .c.o: lnk68k-c$(CMDFILE)-o$(TARGET).x-M-Fs $(TARGET).x:$(OBJS); MCCOPT=-c-g-Gm-nKc-nQ CMDFILE=mirx.cmd OBJS=monent.omirx.oinit.otask00-1.otask00-2.otask01-1.otask01-2.otask02-1.o task02-2.otask03-1.otask03-2.otask04-1.otask04-2.otask05-1.otask05-2.o task06-1.otask06-2.otask07-1.otask07-2.otask08-1.otask08-2.otask09-1.o task09-2.o TARGET=mirs 開発規約に戻る #defineMAXTSK10 /*on1/13bySei*/ /*numberoftask*/ #defineSSS_NO4 /*numberofsupersonicwavesensor*/ #defineLED_NO4 /*numberof7seg.LED*/ #defineSSS_LIMIT(int)(3*8000000/32/340*2) /*dataforsupersonicwavesensor*/ #defineTMRST0x44/*TimerInterruptReset*/ /*dataoftimerinterruptreset*/ #defineVIMR0xfdff01 /*VMEbusIRQ-maskregister*/ #defineTSIC0xfdfe09/*RTCInterruptControlReg.1*/ #definePFIC0xfdfe07/*RTCInterruptControlReg.0*/ #defineOMR0xfdfe05/*RTCOutputModeReg.*/ #defineRTMR0xfdfe03/*RTCRealTimeModeReg.*/ #defineMSR0xfdfe01/*RTCMainStatusReg.*/ /*addressesofRTC(realtimeclock)*/ #defineTSR2IP_B+0x75/*TimerStatusReg.*/ #defineCNTR2IP_B+0x6d/*CounterReg.*/ #defineCPR2IP_B+0x65/*CounterPreloadReg.*/ #defineTIVR2IP_B+0x63/*TimerInterruptVectorReg.*/ #defineTCR2IP_B+0x61/*TimerControlReg.*/ #definePSR2IP_B+0x5b/*PortStatusReg.*/ #definePCDR2IP_B+0x59/*PortCDataReg.*/ #definePBAR2IP_B+0x57/*PortBAlternateReg.*/ #definePAAR2IP_B+0x55/*PortAAlternateReg.*/ #definePBDR2IP_B+0x53/*PortBDataReg.*/ #definePADR2IP_B+0x51/*PortADataReg.*/ #definePBCR2IP_B+0x4f/*PortBControlReg.*/ #definePACR2IP_B+0x4d/*PortAControlReg.*/ #definePIVR2IP_B+0x4b/*PortInterruptVectorReg.*/ #definePCDDR2IP_B+0x49/*PortCDataDirectionReg.*/ #definePBDDR2IP_B+0x47/*PortBDataDirectionReg.*/ #definePADDR2IP_B+0x45/*PortADataDirectionReg.*/ #definePSRR2IP_B+0x43/*PortSelectRequestReg.*/ #definePGCR2IP_B+0x41/*PortGeneralControlReg.*/ /*addressesofPI/T2registersforsss&photo*/ #defineTSR1IP_B+0x35/*TimerStatusReg.*/ #defineCNTR1IP_B+0x2d/*CounterReg.*/ #defineCPR1IP_B+0x25/*CounterPreloadReg.*/ #defineTIVR1IP_B+0x23/*TimerInterruptVectorReg.*/ #defineTCR1IP_B+0x21/*TimerControlReg.*/ #definePSR1IP_B+0x1b/*PortStatusReg.*/ #definePCDR1IP_B+0x19/*PortCDataReg.*/ #definePBAR1IP_B+0x17/*PortBAlternateReg.*/ #definePAAR1IP_B+0x15/*PortAAlternateReg.*/ #definePBDR1IP_B+0x13/*PortBDataReg.*/ #definePADR1IP_B+0x11/*PortADataReg.*/ #definePBCR1IP_B+0x0f/*PortBControlReg.*/ #definePACR1IP_B+0x0d/*PortAControlReg.*/ #definePIVR1IP_B+0x0b/*PortInterruptVectorReg.*/ #definePCDDR1IP_B+0x09/*PortCDataDirectionReg.*/ #definePBDDR1IP_B+0x07/*PortBDataDirectionReg.*/ #definePADDR1IP_B+0x05/*PortADataDirectionReg.*/ #definePSRR1IP_B+0x03/*PortSelectRequestReg.*/ #definePGCR1IP_B+0x01/*PortGeneralControlReg.*/ /*addressesofPI/T1registersforpwm*/ #defineIP_BIO_BASE+0x0100 /*IPBbaseaddress*/ #defineTSIEIP_A+0x0b/*TouchSensorInterruptEnable*/ #defineCRSTIP_A+0x09/*CounterReset*/ #defineEDLHIP_A+0x07/*EncoderDataofLeft(High)*/ #defineEDLLIP_A+0x05/*EncoderDataofLeft(Low)*/ #defineEDRHIP_A+0x03/*EncoderDataofRight(High)*/ #defineEDRLIP_A+0x01/*EncoderDataofRight(Low)*/ /*addressesofrotaryencoder/touchsensor*/ #defineIP_AIO_BASE /*IPAbaseaddress*/ #defineIO_BASE0xfc6000 /*I/OBaseAddress*/ #defineTSR00xfdfc35/*TimerStatusReg.*/ #defineCNTR00xfdfc2d/*CounterReg.*/ #defineCPR00xfdfc25/*CounterPreloadReg.*/ #defineTIVR00xfdfc23/*TimerInterruptVectorReg.*/ #defineTCR00xfdfc21/*TimerControlReg.*/ #definePSR00xfdfc1b/*PortStatusReg.*/ #definePCDR00xfdfc19/*PortCDataReg.*/ #definePBAR00xfdfc17/*PortBAlternateReg.*/ #definePAAR00xfdfc15/*PortAAlternateReg.*/ #definePBDR00xfdfc13/*PortBDataReg.*/ #definePADR00xfdfc11/*PortADataReg.*/ #definePBCR00xfdfc0f/*PortBControlReg.*/ #definePACR00xfdfc0d/*PortAControlReg.*/ #definePIVR00xfdfc0b/*PortInterruptVectorReg.*/ #definePCDDR00xfdfc09/*PortCDataDirectionReg.*/ #definePBDDR00xfdfc07/*PortBDataDirectionReg.*/ #definePADDR00xfdfc05/*PortADataDirectionReg.*/ #definePSRR00xfdfc03/*PortSelectRequestReg.*/ #definePGCR00xfdfc01/*PortGeneralControlReg.*/ /*addressesofPI/T0registersforMMI*/ 開発規約に戻る } rot_position_i.way=0; rot_position_i.thetav=0; rot_position_i.theta=0; rot_position_i.v=0; rot_position_i.y=0; rot_position_i.x=0; mmi_iivseg=0000; pwm_mode=0x00; /*initializegrobalvariables*/ inti,j; { voidinit_gro() }rot_position_i; intway; intthetav; inttheta; intv; inty; intx; externstructpos{ externunsignedintmmi_iivseg; externunsignedcharpwm_mode; } for(i=3;rtc_base+i<0xfdfe0a;i+=2)outportb(rtc_base+i,0x00); outportb(MSR,0x04); for(i=3;rtc_base+i<0xfdfe40;i+=2)outportb(rtc_base+i,0x00); outportb(MSR,0x44); rtc_base=0xfdfe00; inti; intrtc_base; { voidrtc_clr() } outportb(CRST,0x03);/*counterreset*/ outportb(TSIE,0x00);/*TouchSensorInterruptEnable*/ /*RE/TS*/ outportb(TIVR2,72+0);/*sssinterruptcausesbytout*/ outportb(TCR2,0xb2); outportl(CPR2,SSS_LIMIT);/*underflow3m*/ outportb(TCR2,0x00); outportb(PGCR2,0x18);/*mode0&H3,H4disable*/ outportb(PBDDR2,0x00); outportb(PBCR2,0xA0); outportb(PADDR2,0x03); outportb(PACR2,0x20); outportb(PSRR2,0x1c); outportb(PGCR2,0x00);/*clearPGCR2*/ /*SSS&PHOTOPIT2*/ outportb(TCR1,0x41);/*squarewave*/ outportl(CPR1,0x000001);/*Toutの出力は125[kHz]*/ outportb(TCR1,0x00); outportb(PGCR1,0x00);/*mode0&H1,H2,H3,H4disable*/ outportb(PBCR1,0x80);/*submode1x*/ outportb(PACR1,0x80);/*submode1x*/ outportb(PBDDR1,0xff);/*alloutput*/ outportb(PADDR1,0xff);/*alloutput*/ outportb(PGCR1,0x00);/*clearPGCR1*/ /*PWMPIT1*/ outportb(TCR0,0x41);/*squarewave*/ outportl(CPR0,0x00003f);/*TOUT2kHz*/ outportb(TCR0,0x00);/*clearTCR0*/ outportb(PGCR0,0x02);/*mode0*/ outportb(PBCR0,0x80); outportb(PACR0,0x80); outportb(PBDDR0,0x10);/*RRRWRRRR*/ outportb(PADDR0,0xff);/*alloutput*/ outportb(PGCR0,0x00);/*clearPGCR0*/ /*MMIPIT0*/ init_gro(); /*rtc_clr();*/ { voidinit() voidinit_gro(); voidrtc_clr(); interrno; /*#include"io.h"*/ #include"m9402.h" /*初期化*/ 表紙に戻る 3ソフトウェア部開発完了報告 2エレクトロニクス部開発完了報告 1メカニクス部開発完了報告 目次 成果物登録簿へ 目次へ 作成者石川 仕様書番号94DS02-0008 MIRS9402システム開発完了報告書 表紙に戻る 目次に戻る 注1:衝撃後の停止、または、後退。7秒しか停止しない予定のところで数十秒停止。  予定通りなので、競技会では負けないはずであった。しかし、競技会では予期しない動作注1をした。この原因については、不明。現在(1996.3.5)では、解決されいていない。 規定走行、センサ試験なども全て完成した。  MIRSの動作試験には、実際の競技場を使用した。本戦動作のテストには、他班のMIRSを借り行った。その動作は、全て予定通りであった。ペナルティー戦動作のテストも正常であった。  ソフトウェアの開発は、1995年2月16日に完了。ほぼ、3年時の基本設計書の内容通りに完成した。詳細については、詳細設計書(ソフト)に記載されている。 3、ソフトウェア部開発完了報告 表紙に戻る 目次に戻る  詳細については、詳細設計書(エレキ)に記載されている。  エレクトロニクスの開発は、1996年1月に完了。但し、接触不良などの故障による修理を随時行った。最終修理日は、1996年2月15日である。 2.エレクトロニクス部開発完了報告 表紙に戻る 目次に戻る  メカニクス開発は、1995年12月を以って完了。メカニクスの詳細については、詳細設計書(メカ)に記載されている。 1.メカニクス部開発完了報告 MIRS94チームデータに戻る 94DS02-0008システム開発完了報告書19963/5 94DS02-0007検査報告書19963/5 94DS02-0006詳細設計書/メカ19963/6 94DS02-0005詳細設計書/エレキ19963/5 94DS02-0004詳細設計書/ソフト19957/31 94DS02-0003調査報告19952/23 94DS02-0002基本設計仕様書19953/9 94DS02-0001開発計画書199412/13 資料番号表題日付 資料番号についている*は、図面であることを意味する。 チーム番号:mirs9402 MIRS成果物登録簿 MIRS94チームデータに戻る 11完了報告書三尾1995.3.8 10エレクトロニクス検査報告書大山1995.3.6 9ソフトウェア試験報告書和田1995.3.8 8エレクトロニクス基板検査手順書阿部1995.10.19 7ソフトウェア詳細設計仕様書和田 三尾1994.3.8 6エレクトロニクス詳細設計仕様書大山 橋本1994.3.8 5メカニクス詳細設計仕様書全員1994.3.8 4MIRS開発体制大山1994.3.11 3システム基本設計仕様書阿部 内山 大山 落合 橋本 三尾 和田1994.3.11 2調査研究報告書全員1994.3.11 1システム開発設計書全員1994.12.10 表題作成者日付 成果物一覧 MIRS9401成果物 未完成 ・現在のところ原因を究明中 反応なし 超音波センサ回路 11/4 問題なし  PWM回路 11/6 →tmpをリコンパイルした後、再びテストすると問題なく動作した ・ソフトウェア側のアドレス設定がうまくいっていない 割り込み信号が出ない  その他、問題なし  赤外線センサ回路 11/4 →パターンをカッターで修正 ・導通チェックの見落とし デバッガーが起動しない TMPによる動作試験 3 11/4 →はんだを付けなおす ・はんだ付け不良による非導通 →パターンをカッター及びジャンパーで修正 ・パターンの欠落、接合による非導通、短絡 非導通箇所、短絡箇所が発見された 導通チェック 2 11/4 問題なし 部品実装チェック 1 完了日 原因と対策 結果 項目 No. 検査項目とその結果及び原因と対策を下表に示す。 1.I/Osubボード - 現在のところ、原因を究明中 ソフトが超音波を出すよう要求しているが、センサは超音波を出していない模様。 反応なし。 TMPによる動作試験 3 11/4 問題なし 導通チェック 2 11/4 問題なし 部品実装チェック 1 完了日 原因と対策 結果 検査項目 No. 検査項目とその結果及び原因と対策を下表に示す。 7.超音波センサ送受信回路 10/29 受光素子のつないでいる電源のスイッチが入っていなかった。 最初の原因 7.受光素子の1−3ピンに+5Vを入力し、赤外線LEDを受光素子の出力をオシロスコープを用いて6で調べた波形が出る事を確認する。 10/29 なし。 6.IC3の3ピンをオシロスコープを用いて、検査手順書にあるような波形が出る事を確認する。 10/29 なし。 周期 620μs 5.IC2の3ピンをオシロスコープを用いて、周期600μsぐらいである事を確認する。 10/29 若干周波数が高いが、問題はない。 Duty比 6.8% 周期 22μs(45kHz) 4.IC1の3ピンをオシロスコープを用いて、38kHz、Duty比10%である事を確認する。 10/29 なし。 異常なし。 3.コネクタの3−4ピン間に+5Vの電圧をかけ、LEDの発光の確認を行う。 10/29 なし。 異常なし。 2.コネクタの1−2ピン間の導通チェックを行う。スイッチONで切れ、スイッチOFFで導通する事を確認する。 10/29 なし。 異常なし。 1.部品が正しく実装されているか。回路図を見て調べる。 完了日 問題点 結果 検査項目 下表に検査項目とその結果及び問題点を示す。 8.勝敗判定装置 11/10 11/4 →接続しなおすと動作 ・REボードの50ピンコネクタがI/Osubボードにしっかり接続されていなかった →”4Ch”に設定した ・ディップスイッチの設定が正しくなかった IP-Dig48を同時に載せるとタッチセンサが反応しなくなった。 ロータリエンコーダは全然カウントしない タッチセンサの割り込みがうまくいかない TMPによる動作試験 3 11/4 →はんだを付ける ・基板の部品面のはんだ付け忘れ 非道通の箇所が発見された ワイヤリングリストに従って、導通チェックを行う。 導通チェック 2 11/4 問題なし 部品実装チェック 1 完了日 原因と対策 結果 検査項目 No. 検査項目とその結果及び原因と対策を下表に示す。 4.ロータリエンコーダ・タッチセンサボード レギュレーター、DC−DCコンバーターなどは、規定通りの電圧を出力しているので問題なし。勝敗判定装置と結ばれるケーブルの異常かと思い、CN5の1−2pinを短絡して実験したが同様の結果だったのでケーブルにも異常なし。リレーと2つのダイオードが怪しいので、これらを取り外して調べることにした。リレーはON/OFF各接点とも異常なし、ダイオードも異常はなかった。よって、半田付け不良、もしくはパターンの不良と考えられる。再度リレーなどを取り付けるときに細心の注意を払って半田付けした。実験したところ問題なく動作した。 原因と対策 スタートスイッチを押す。勝敗判定装置のLEDが一瞬だけ点灯して消える。CN2、CN6の出力も一瞬のみである。しかし、リレー1(透明なリレー)は、目に見える限りでは、しっかりとONになっている。 症状 今回のPDボードのテストでは、スタートスイッチを押したとき勝敗判定装置のLEDが一瞬しか点灯しない、という問題が生じた。 修復 試験終了 勝敗判定装置のスイッチを押す。緑色LEDが消灯し、CN2が0Vになることを確認する。→異常なし 試験項目7 スタートスイッチを押す。緑色LEDが点灯し、CN2にCN1の入力電圧が現れることを確認する。→異常なし 試験項目6 メインスイッチを一度OFFにし、CN1にもバッテリーを接続する。その後、再度メインスイッチをONにし、緑色LEDが消灯、CN2が0Vであることを確認する。 →ここでも、バッテリーの代わりに7.2Vにセットした固定電圧源を使用した。異常はなかった。 試験項目5 勝敗判定装置を押し、CN6の2−3pin間が0Vになり勝敗判定装置のLEDが消灯することを確認する。→異常なし 試験項目4 スタートスイッチを押す。勝敗判定装置が点灯し、CN6の2−3pin間が5Vとなることを確認する。 →勝敗判定装置のLEDは、一瞬点灯したがそのまますぐ消えてしまう。修復後異常なし。(修復方法は後述「修復」の項を参照) 試験項目3 CN3にバッテリー、CN5に勝敗判定装置を接続し、メインスイッチをONにする。赤色LEDが点灯し、CN4の2−3pin間に+5Vが出力される。また、勝敗判定装置のLEDが消灯し、CN6の2−3pin間が0Vであることを確認する。 →バッテリーが用意できなかったので、代わりに電圧源を7.2Vにセットして使用した。発煙なし、火花なし、発熱なし、異臭なし、特に異常なし。 試験項目2 →異常なし 回路図を参照し、パターンの導通チェックをする。 試験項目1 検査結果 検査手順書:V94-SPEC-006(VPRO) 周辺回路:勝敗判定装置(試験済)、接続ケーブル      デジタルテスター 使用器具:可変電圧源(Max15V)2台、電源配線ケーブル 試験場所:電子制御工学科棟3階実験室 試験者 :土屋 啓、平澤剣吾、溝口敬浩 試験日 :1995年10月29日(土),30日(日) 5.PD  完了日・10/30  結果・・タイヤの回転方向が変わった。異常なし。  検査・・CN1の3、5番ピンを’L’に落としたまま、スイッチによってCN1の2、4番ピンを’L’に落とす。 (2)モータを回転させたまま、CN1の2番ピン(右車輪)、4番ピン(左車輪)に方向転換信号’L’を送る。そして、タイヤの回転方向が変わる事を調べる。 完了日・10/30           結果・・スイッチのレベルを’L’に落とすとタイヤが回転した。異常なし。  検査・・スイッチによってCN1の3、5番ピンを’L’や’H’にしたりしてパルスを送った。 (1)CN1の3番ピン(右車輪側)、5番ピン(左車輪側)にパルスを送る。そして’L’信号を送っている時間(Duty比)を変えることによってモータが回転し、回転数が変わることを調べる。 3.MPC 11/2 →付けなおし ・LS04のはんだ付け不良 選択された以外のLEDもデータを表示してしまう TMPによる動作試験 7 11/2 問題なし 回路図を参考にして、配線が正しく導通しているかどうか検査する 6 11/2 問題なし テスターを使って、各ICのVccとGNDが正しく接続されているかどうか検査する 5 11/2 問題なし テスターを使って、VccとGNDが正しく接続されているかどうか検査する 4 11/2 問題なし 抵抗、コンデンサの搭載位置、容量が正しいかどうか検査する 3 11/2 →向きを変えて付けなおす ・取付時のミス フロントボードのスイッチの向きが反対 部品図を参考にして、スイッチ、コネクタの型番、搭載されている向きが正しいかどうか検査する 2 11/2 問題なし 部品図を参考にして、ICの型番、搭載されている向きが正しいかどうか検査する 1 完了日 原因と対策 結果 検査項目 No. 検査項目とその結果及び原因と対策を下表に示す。 2.MMI 赤外線センサ周辺回路図 10/29 3ピンコネクタの接続がしっかりできていなかったため→接続し直す 違うケーブルを用いたため→正しいケーブルを使用する 以上の結果より赤外線センサ、及び赤外線センサ周辺回路は正常に動作する。 51〜   L 32〜50 不確定 0〜31 H センサ8 51〜   L 34〜50 不確定 0〜33 H センサ7 赤外線センサ周辺回路4とセンサ7、8を接続したとき 48〜   L 33〜47 不確定 0〜32 H センサ6 45〜   L 32〜44 不確定 0〜31 H 対策後 電源を入れると、Hが出力されつづける。 センサ5 赤外線センサ周辺回路3とセンサ5、6を接続したとき 46〜   L 31〜45 不確定 0〜30 H センサ4 46〜   L 33〜45 不確定 0〜32 H センサ3 赤外線センサ周辺回路2とセンサ3、4を接続したとき 46〜   L 33〜45 不確定 0〜33 H 対策後 赤外線LEDに反応せず センサ2 41〜   L 31〜40 不確定  0〜30 H センサ1 赤外線センサ周辺回路1とセンサ1、2を接続したとき 周辺回路、及びセンサの番号は図1参照 あればよい。 力が不安定、73cm以上で出力がlowlevelで 以下で出力がHighlevel、30〜73cmで出 赤外線センサに近づける。このとき約30cm 装置(検査済み)についている赤外線LEDを コネクタと接続し電源をつなぐ。次に勝敗判定 初めに赤外線センサを周辺回路中のMOLEX3pin 3 10/29 正しい導通を確認 導通チェックを行う (V94-CARD-203参照) 2 10/29 正しく配置されている 部品配置チェックを行う(V94-CARD-303参照) 1 完了日 原因と対策 結果 検査項目、方法 No. 検査項目とその結果及び原因と対策を下表に示す。 6.赤外線周辺回路   } : }else{ : : if(〜){ 例 if文において実行される部分の前後には必ず{、}を入れる。 (5)if文について    ・本文とコメントの間に入れる。         (見やすいようにそろえる。)       char____c; int_____i;       例:              は2つ(どうしても必要なら3つ) 変数の型と変数名の間に1つ又       }       ____printf("%d\n",a);       ____}       ________a=LIMIT;       ________puts("Over!!");       ____if(a>LIMIT){       ____scanf("%d",&a);       ____inta;       {       main()       #defineLIMIT1000       #include       (____をTABとする。)       例:関数の中には左側に最低1個のTABが入る。        {と}で囲まれる部分は、TAB1つ分(スペースを使わずにTABキーを押して)字下げする。 (4)TABについて *)関数の型は、int型のときは省略できることになっているが、後でデバッグする時のため等、考慮して、宣言するようにする。(他の型のときに宣言しなければならないのは、当然である。)               }          retuanc;          c=a+b;          intc;          { intadd(inta,intb)                 例:整数を加算する関数         } └───────────────┘ 関数の内容───────────┐ └───────────────┘ 内部変数の宣言─────────┐ { 関数の型 関数名(引数の型 引数名、引数の型 引数名、・・・)  (3)関数記述の規定 15字以下とする。 関数名はモジュール名を元に付ける。  (2)関数名について         */           =====================           = written by XXXX   =           = XXXXXX.C Ver.1.01 =           ===================== /*       例:     行頭の/*で始め、行頭の*/で終わる。        ・コメントが複数行にまたがる時,           ct=0;[TAB][TAB]/*カウンタ初期値*/       例:        コメントが次行にまたがらない時、ソースからタブを2つ開けて記述する。  (1)コメントの付け方 3 プログラム書式について 全てのversionのファイルを必ず取っておく  (3)version管理     *初期versionは、Ver.1.01      下位 −小さな変更の際、1増やす      上位 −大規模な変更の際、1増やす 書式:Ver.上位.下位  (2)プログラムには、version番号をつける。 モジュ−ル名.src (アセンブリ言語のソ-ス) モジュ−ル名.c  (C言語のソ−ス)  (1)プログラムはモジュ−ル毎に分割する。拡張子で、以下のように区別する。 2 ファイル管理について ファイル変更の際は、マスタ−ディスク中のファイルをコピ−したものを使って作業する。変更作業終了後、変更したディスクをマスタ−ディスクにコピ−する。 MIRSソフトウェアに関する全てのディスクをマスターディスクに保存する。ディスク損失に備え、ディスクはマスタ−ディスクとバックアップディスクの2ヶ所に保存することとする。 1 ディスク管理について MIRS ソフトウェア開発規約 HCPチャート 10-4受信データ解析モジュール 10-3受信データ作成モジュール 10-2送信データ作成モジュール 10-1データ送信モジュール 概略フロウ10 9−1:自己位置補正モジュール 概略フロウ9 8−2:起動補正モジュール 8−1:PWM制御モジュール 概略フロウ8 7−1:行動計画モジュール 概略フロウ7 6−4:単色LED制御モジュール 6−3:単色LEDデータ作成モジュール 6−2:7seg.LED制御モジュール 6−1:7seg.LEDデータ作成モジュール 概略フロウ6 5−1:タッチセンサモジュ−ル 概略フロウ5 4−1:赤外線センサ計測デ−タ作成モジュ−ル 概略フロウ4 3−2:超音波センサ制御モジュ−ル 3−1:超音波センサ計測デ−タ作成モジュ−ル 概略フロウ3 2−3:自己位置・姿勢演算モジュ−ル 2−2:ロ-タリエンコ-ダ積算カウンタリセットデ-タ作成モジュ−ル 2−1:ロ-タリエンコ-ダ計測デ−タ作成モジュ−ル 概略フロウ2 1−2:スタートスイッチ待ちモジュール 1−1:初期設定モジュール 概略フロウ 備考 初期値 論理仕様 リセット信号 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ re_rst シンボル ロータリーエンコーダー積算カウンタリセット信号 データ名 備考 初期値 論理仕様 補正データ 符号 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ pwm_c_r,pwm_c_l シンボル PWM補正データ データ名 備考 初期値 走行モード表参照 論理仕様 モード 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ run_mode シンボル 走行モード データ名 備考 初期値 競技モード表参照 論理仕様 モード 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ mode シンボル 競技モード データ名 備考 初期値 論理仕様 表示データ 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ disp_7seg[] シンボル 7seg.LED表示データ データ名 備考 初期値 初期化用データ 論理仕様 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ re_clr,pwm_clr,ir_clr,uss_clr,led_clr シンボル 初期化データ データ名 備考 初期値 論理仕様 位置データ・姿勢データ 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ m_pos_x[],m_pos_y[] シンボル 相手位置 データ名 備考 初期値 前進を正の向きにとった速度データ 論理仕様 速度データ 符号 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ self_v シンボル 速度データ データ名 備考 初期値 論理仕様 位置データ・姿勢データ 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ old_s_pos_x[],old_s_pos_y[],old_s_pos_th[] シンボル 過去の自己位置 データ名 備考 初期値 姿勢データ×360/255=姿勢角[°] 姿勢角は,スタート時の向きを0°とし 自己位置・姿勢データが格納される. 論理仕様 位置データ・姿勢データ 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ self_x,self_y,self_th シンボル 自己位置・姿勢 データ名 備考 初期値 論理仕様 補正データ 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ c_pos_x,c_pos_y,c_pos_th シンボル 自己位置補正データ データ名 備考 初期値 x=3左側面 x=2右側面 x=1前面 前回計測されたデータが格納される 論理仕様 計測データ 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ uss_old_cnt[x] シンボル 超音波センサ前計測データ データ名 備考 初期値 x=3左側面 x=2右側面 x=1前面 論理仕様 計測データ 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ uss_cnt[x] シンボル 超音波センサ計測データ データ名 備考 初期値 "1"=選択 論理仕様 左 右 前 − − − − − 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ uss_s シンボル 超音波センサ選択データ データ名 備考 初期値 01h= 1[cm] 00h= 0[cm] 超音波センサで測定した距離データ 論理仕様 距離データ 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ uss_dist シンボル 超音波センサ距離データ データ名 備考 初期値 "0"=無反応 "1"=反応 論理仕様 赤外線 後部 タッチ左 タッチ右 − − − − − 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ d_flag シンボル 危険フラグ データ名 備考 初期値 "0"=無反応 "1"=反応 論理仕様 後部 左側面 右側面 前面 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ ir_data シンボル 赤外線センサ感知データ データ名 備考 初期値 00h〜127h デューティー比=制御データ×50% PWMに与えるデューティー比 論理仕様 制御データ 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ pwm_r,pwm_l シンボル PWM制御データ右・左 データ名 備考 初期値 200[cm]=C8h 1[cm]=1h ロータリーエンコーダーのカウントデータで求めた位置 スタート時競技場左角(フェンス)を原点として, 論理仕様 位置データ又は,姿勢データ 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ re_x,re_y,re_th シンボル ロータリーエンコーダによる位置・姿勢 データ名 備考 初期値 7bit=0を正転,=1を逆転とする 負数は,2の補数で表す 論理仕様 カウントデータ 符号 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ re_r,re_l シンボル ロータリーエンコーダー計測データ右・左 データ名 備考 初期値 7bit=0を正転,=1を逆転とする 負数は,2の補数で表す 論理仕様 距離データ 符号 0 1 2 3 4 5 6 7 データ構成 種別 1byte サイズ re_dist シンボル ロータリーエンコーダー距離データ データ名 データ仕様 20 19 18 17 16 現在位置転送 M→H E:XF:YG:θ 0Fh PDATA 15 現在位置要求 M←H None 0Eh PRQ 14 BBデータ転送 M→H E:TaskNo.F〜J:BB-Data 0Dh BBDATA 13 BBデータ要求 M←H E:TaskNo. 0Ch BBRQ 12 MAXTaskNo.転送 M→H E:MaxTaskNo. 0Bh TASKNO 11 MAXTaskNo.要求 M←H None 0Ah TASKRQ 10 強制モード遷移 M←H E:Mode(モード表参照) 09h MODE 9 センサデータ転送 M→H E,F:ロータリーエンコーダー(R/L)G,H,I:SSW(F/R/L)J:IRK:SWL:LEDM:Mode(モード表参照) 08h SEDATA 8 センサデータ要求 M←H None 07h SERQ 7 停止 M←H None 06h STOP 6 パケット再送要求 M⇔H E:カウンタ 05h RETRY 5 PWMデータ転送 M←H E:R-DataF:L-DtataG,H:Time 04h PMWDATA 4 PWMデータ要求 M→H None 03h PMWRQ 3 命令の応答 M⇔H E:カウンタF:PINGの時FFh 02h OK 2 存在確認 M⇔H None 01h PING 1 意味 方向 オぺランド 命令 No 通信命令一覧表 P………STOPコード 終了コード”O” O………CRCコード  A〜Nを00hに順にEx−orをとったもの E〜N…オぺランド   命令一覧表参照(未使用時00h) D………命令      命令一覧表参照 C………カウンタ    0からスタート,FFhで0に戻る     Host→Mirs:”Y2” A,B…識別コード   Mirs→Host:”M5” ABCDEFGHIJKLMNOP □□□□□□□□□□□□□□□□ 3.パケットフォーム 通信速度9600[bps]、パリティ無、ストップビット1、パケット長16バイト固定とする 2.通信パラメーター MPUボードに搭載されているRS−232Cインターフェイスを使用してパケットを送受信することで行う. 1.通信方式 通信規約 (注)図中の番号は、DocumentNumber94DS-M-5-XXXXのXXXXを表す。 システム構成ツリー 主要な基盤はすべてVMEラック内に収容し、着脱を容易に行えるようにする。センサ類は個別に着脱可能とし、保守性の向上を図る。 本システムは、車輪シャーシと基盤シャーシの2段構造である。 (エレキ)・(ソフト)の部分については各担当に依頼する。 図中の番号は、DocumentNumber94DS-M-5-XXXXのXXXXを表す。 図1 MIRS9405構成ツリーB 図1 MIRS9405構成ツリーA 図1 MIRS9405構成ツリー@ 図1に、本システムの構成ツリーを示す。 システム構成 SFD Xm 40芯フラットケーブル ケーブル 2 PS-40SM-D4P1-1D(航空電子) コネクタ <ケーブル類> 1 VMEバススロット <その他> 1 IP-digital48 1 VIPC310 I/Oボード <I/Oボード> EP−ROM 1 VSBC1(PEP) MPU <MPUボード> 2 30kΩ 1 2.2kΩ 1 1.7kΩ 1 390Ω 1 270Ω 抵抗 1 GL5EG8Green(SHARP) 1 TLN105A LED 1 104(セキセラ) コンデンサ 2 103(マイラ) 3 103(セキセラ) 1 10μ25V(電解) コンデンサ 1 SN75453B 2 μPD5555C IC 2 SS-5GL スイッチ 1 5046-04A(MOLEX) コネクタ 1 30K(Sunhayato) 感光基板 <勝敗判定装置>(70*65mm) 1 14pin 1 8pin ICソケット 1 μPC4572C(LM4572) 1 4069 IC 1 4.7μF25V(電解 2 104(セキセラ) 1 103(セキセラ) 5 102(セキセラ) コンデンサ 2 ISS106 ダイオード 1 1MΩ 5 10kΩ 1 100kΩ半固定 抵抗 1 5046-04A(MOLEX) 4pコネクタ 1 MA40A5B Mic 1 MA40A5S 超音波センサーSpk 1 30K(Sunhayato) 感光基板 <超音波センサー部>(76*33mm)*感光基板以外のすべての部品を3組 1 5045-03A?(MOLEX) 3pコネクタ 1 IS1U60(SHARP) 赤外線センサー 1 30K(Sunhayato) 感光基板 <赤外線受信部>(36*22mm)*感光基板以外のすべての部品を8組 2 240kΩ 1 1kΩ 2 20Ω 抵抗 2 822(マイラ) 1 104(セキセラ) コンデンサ 1 74LS123 IC 1 5045-04A(MOLEX) 2 5045-03A(MOLEX) コネクタ 1 30K(Sunhayato) 感光基板 <赤外線センサ信号処理部>(36*47mm)*感光基板以外のすべての部品を4組 シリコングリス 1 40*30mm 絶縁フィルム 1 10kΩ 1 620Ω 1 390Ω 抵抗 1 334(セキセラ) 1 47μF25V(電解) 2 10μF25V(電解) コンデンサ 2 10D-1 ダイオード 1 SQ5-12D-250(ASIA) DC-DCコンバーター 2 φ3mm*10mm 放熱板取り付けビス 1 T220R41-25 レギュレーター用放熱板 1 STR9005(サンケン) 低損失レギュレーター 1 UB-16SKP1MR(ニッカイ) 1 UB-15SKP1MG(ニッカイ) スイッチ 1 G2VN-237P(omron) 1 G6B-1174P-US(omron) リレー 1 5046-03A(MOLEX) 1 5046-04A(MOLEX) 1 53259-0420(MOLEX) 3 53259-0220(MOLEX) コネクタ 1 30K(Sunhayato) 感光基板 <PD>(100*75mm) 2 SS-5GL スイッチ 1 24pin 2 20pin ICソケット 5 104(セキセラ) コンデンサ 4 6.2kΩ 抵抗 2 220Ω 2 1kΩラダー抵抗 抵抗 1 PS-10PE-D4T1-PKL1(航空電子) ジャンパ 1 A6DR-8(omron) 8bitDipSW 1 μPD4701AC(NEC) 1 74LS244 IC 2 GAL16V8B PLD 2 173279-3(AMP) 50pコネクタ 1 30K(Sunhayato) 感光基板 <ロータリー&タッチセンサボード>(45*99mm) 1 BB-15(ニッカイ) 押しボタンSW 1 5046-03A(MOLEX) 3pコネクタ 1 A6B-4101 4bitDipSW 1 GL5EG8Green(SHARP)相当 1 GL5ED8Red(SHARP)相当 LED 4 T312 7segmentLED> 1 (航空電子) 60pコネクタ 1 33K(Sunhayato) 感光基板 <MMIフロントボード>(60*133mm) 14 104(セキセラ) コンデンサ 4 10kΩ 35 330Ω 抵抗 1 PC817(SHARP) 4 MC14513B(モトローラ) 1 74LS08 2 74LS10 1 74LS14 1 74LS06 2 74LS04 1 74LS161 2 74LS00 IC 1 PS-40PE-D4T1-PN1(航空電子) 40pコネクタ 1 (航空電子) 60pコネクタ 1 33K(Sunhayato) 感光基板 <MMIメインボード>(150*100mm) 1 102(セキセラ) 1 103(セキセラ) 18 104(セキセラ) コンデンサ 1 ISS106 ダイオード 1 1MΩ 1 100kΩ 1 47kΩ 3 1kΩ 1 5.6kΩ 4 330Ω 抵抗 8 20pin 3 16pin 7 14pin ICソケット 2 GAL16V8B PLD 1 4052 1 μPC339(LM339) 1 4069 1 HD7407 1 74LS279 2 74LS04 1 74LS590 2 74LS684 2 74LS00 1 74LS688 3 74ALS574 IC 1 5046-05A(MOLEX) 5pコネクタ 2 PS-16PLB-D4LT1-FL1(航空電子) 16pコネクタ 1 PS-50PE-D4LM-LP1(航空電子) 50pコネクタ 1 DIN41612PCN10シリーズ VMEbusコネクタ 1 32K(Sunhayato) 感光基板 <I/OSubボード>(160*100mm) ※特に指定無き抵抗は1/4W※かっこ内はメーカー名 MIRS9405システム部品表 (エレク トロニクス編) -019 特性調査書 -018 取扱説明書 -017 検査手順書 V94-SPEC-016 作成手順書 -408 パターン図 V94-CARD-208 OrCAD回路図 <勝敗判定装置> -026 取扱説明書 -025 検査手順書 V94-SPEC-024 作成手順書 -416 パターン図 V94-CARD-216 OrCAD回路図 <超音波センサー送受信回路> -403 パターン図 V94-CARD-203 OrCAD回路図 <赤外線センサ信号処理部> V94-SPEC-005 取扱説明書 -207 OrCAD回路図 -407 部品配置図 -407 穴あけ図 V94-CARD-407 CAD SHEET -008 放熱板部品図 V94-PART-007 固定用板部品図 <PD> -004(PLDIC5) V94-PART-003(PLDIC4) PLDデータ -011 取扱説明書 -010 検査手順書 V94-SPEC-009 作成手順書 -501 改造手順書 -401 パターン図 V94-CARD-201 OrCAD回路図 <ロータリー&タッチセンサボード> -015 取扱説明書 -014 検査手順書 V94-SPEC-013 作成手順書 V94-CARD-015 その他 V94-PART-013 穴あけ図 -515 改造仕様書 -415 パターン図/実装図 V94-CARD-215 OrCAD回路図 <MMIフロントボード> -015 取扱説明書 -014 検査手順書 V94-SPEC-013 作成手順書 V94-PART-010 固定用部品図 V94-CARD-014 その他 V94-PART-012 穴あけ図 -514 改造仕様書 -414 パターン図/実装図 V94-CARD-214 OrCAD回路図 <MMIメインボード> -017(PLDIC14) V94-PART-016(PLDIC12) PLDデータ -023 取扱説明書 -021 検査手順書 V94-SPEC-020 作成手順書 V94-CARD-405/409/410 パターン図 -209(超音波部) -205(PWM部) V94-CARD-210(赤外線部) OrCAD回路図 <I/O Subボード> エレクトロニクス部については、V−Project94と川上教官室のMPCを用いる。以 下にその資料の一覧を示す。 MIRS9405エレクトロニクス詳細設計 94DS-E-5-0120 D-Sub15pin----7p5000mm----D-Sub25pin 15.MPU---外部端末:RS−232Cケーブル 94DS-E-5-0110 51067-0200----2p(太)200mm----Open 14.MPC---モーター 94DS-E-5-0100 5102-03----3p200mm----5102-03 13.赤外線センサ信号処理部---赤外線センサー 94DS-E-5-0090 51067-0200----2p(太)200mm----バッテリコネクタ 12.PD(CN1,CN3)---バッテリー (*2本作る) 94DS-E-5-0080 5102-04----4p200mm----5102-04 11.PD(CN5)---勝敗判定装置(CN1) 94DS-E-5-0070 51067-0200----2p(太)200mm----51067-0220 10.PD(CN2)---MPC 94DS-E-5-0060 5102-03----3p200mm----5102-03 9.PD(CN6)---MMIフロントボード(J2) 94DS-E-5-0050 51067-0400----4p(太)100mm----Open 8.PD(CN4)---VMEラック 94DS-E-5-0040 PS-16SEN-D4P1-1C----16p200mm----5102-04*4 7.I/OSub(CN4)---赤外線センサ処理部(CN1) 94DS-E-5-0030 PS-16SEN-D4P1-1C----16p200mm----5102-04*4 6.I/OSub(CN3)---超音波センサボード(CN4) 94DS-E-5-0020 5102-05----5p200mm----5102-05 5.I/OSub(CN5)---MPC 94DS-E-5-0010 PS-50SEN-D4P1-1C----50p200mm----PS-50SEN-D4P1-1C 4.IP-digital48---I/OSub(CN2) V94-PART-009 +--5102-03*3(TS) PS-50SEN-D4P1-1C----50p200mm----5102-05*2(RE) 3.RT(I/OBoard)---タッチセンサ&ロータリーエン コーダ V94-PART-014 PS-60SEN-D4P1-1C----60p300mm----PS-60SEN-D4P1-1C 2.MMIメインボード(J3)---MMIフロントボード (J4) V94-PART-015 PS-40SEN-D4P1-1C----40p200mm----PS-40SEN-D4P1-1C 1.MPUMMI---メインボード(J1) 以下にケーブルの詳細を示す。大部分のケーブルは長いので、製作中に必要な長さにそろえる のがよいと思われる。 MIRS9405ケーブルに関する詳細 MPUボードのリセットスイッチを押すことにより、現在の状態は リセットされ、スタート スイッチを押す前の状態になります。 5.リセットスイッチ 停止     :マウスボタンを離します。         遅くするときはマウスを後ろに移動します。 スピード調節 :スピードを速くするときはマウスを前に移動させ、 左(右)回転 :キーボードのA(D)を押し続けます。 左(右)カーブ:マウスを左(右)に移動させます。 後進     :マウスの左ボタンを押し続けます。 直進     :マウスの右ボタンを押し続けます。  外部端末では、キーボードとマウスを使って操作します。操作方法 は以下の通りです。 まず、RS−232Cケーブルを介して外部端末を接続します。そして、モードをリモ コンモードに切り替えた後、スタートスイッチを押します。MIRSは外部端末の命令によっ て行動します。 4−4 リモコンモード モードをテストモードに切り替えた後、スタートスイッチを押します。 4−3 テストモード モードをペナルティ戦モードに切り替えた後、スタートスイッチを押します。 4−2 ペナルティ戦モード モードを通常モードに切り替えた後、電源基盤にある緑色のスタートスイッチを押しま す。 4−1 通常モード 4.各モードの操作 リモコンモード  :OFFOFFONON(03h) テストモード   :OFFOFFONOFF(02h) ペナルティ戦モード:OFFOFFOFFON(01h) 通常モード    :OFFOFFOFFOFF(00h) 各モードのスイッチ状態は以下の通りです。 モードの切り替えは、MMIフロントボードにある4bitDipSwitchで行います。 3.モードの切り替え 電源のON/OFFは、電源基盤にある赤色の押しボタンスイッチで行います。 2.電源のON/OFF 本チームのMIRS"YONAOSHIU"の運用を正常に行うため、この ドキュメントで各操作 仕様を規定します。このドキュメントの変更なしに、操作仕様の変更は認めません。 1.はじめに 5リセットスイッチ平田  4-4 リモコンモード平田  4-2 ペナルティ戦モード  4-1 通常モード 4 各モードの操作 3モードの切り替え平田 2電源のON/OFF平田 1はじめに平田 項目作成者 目次 システム運用マニュアル MIRS開発チーム第5班 1994年度  1-11勝敗判定装置が押されたとき、停止モードが動作するか。  1-10回避モードが正常に機能するか。  1-9後面の赤外線センサの反応により、回避モードへ遷移するか。  1-8タッチセンサの反応により、回避モードへ遷移するか。  1-7修正モードが正常に機能するか。  1-6赤外線を見失ったとき探索モードへ遷移するか。    最終的に相手MIRSの勝敗判定装置を押すことができるか。  1-5追跡モードにおいて、適切な行動をとるか。  1-4赤外線センサの反応により、追跡モードへ遷移するか。  1-3探索モードにおいて、適切な行動をとるか。  1-2超音波センサの反応により、初期モードから探索モードへ遷移するか。  1-1初期モードにおいて、適切な行動をとるか。 <検査項目>  @ あらゆる場面を想定し、MIRS競技を行う。 <手順>  相手MIRS(またはその代わりとなるもの) <使用器具>  通常モード(=実際の競技)において、MIRSが正常に動作する か調べる。この試験が最終の試験となる。 <目的> 8.通常モード試験  1-2最終的に相手MIRSの勝敗判定装置を押すか。  1-1リモコンモードで操作したデータの通りに行動するか。 <検査項目>  @ ペナルティ戦モードにおいて、実際にMIRSを走らせる。 <手順>  相手MIRS(またはその代わりとなるもの) <使用器具>  MIRSがペナルティ戦モードで正常に動作するか調べる。 <目的> 7.ペナルティ戦モード試験  1-2MIRSからのデータを外部端末側で取得できるか。  1-1MIRSが命令通りリアルタイムに行動するか。 <検査項目>    MIRSを操作する。  @ リモコンモードにおいて、リアルタイムに外部端末から <手順> 外部端末 <使用機器> また、相互間でデータの受け渡しが正常に行われるか調べる。 外部端末の操作によって、MIRSがその命令通りリアルタイムに 行動するか調べる。 <目的> 6.リモートコントロール機能試験  4-2衝撃により、勝敗判定装置が反応することがないか。  4-1走行中に勝敗判定装置が反応するか。その反応によりMIRSが停止するか。  3-2走行中にタッチセンサが反応するか。そのとき壁か相手機かを判断し、回避行動をとるか。 3-1静止した状態でタッチセンサが正常に反応するか。    MIRSが回避行動をとるか。  2-4走行中に後面の赤外線センサが反応するか。その反応により    MIRSが追跡行動をとるか。  2-3走行中に前面の赤外線センサが反応するか。その反応により  2-2走行中に左右の赤外線センサが反応するか。その反応によりMIRSが適切な行動をするか。 2-1静止した状態で赤外線センサが正常に反応するか。 1-3壁との距離を測定したとき、測定精度が十分であるか。  1-2走行中に超音波センサが反応するか。その反応によりMIRSが適切な行動をするか。  1-1静止した状態で超音波センサの測定値が実際の距離の±10%以内に収まっているか。   4-2MIRSに適当な衝撃を与え、勝敗判定装置が反応しないか調べる。<検査項目>   4-1MIRSを走行させ、故意に勝敗判定装置を押す。   3-3MIRSを走行させ、故意にタッチセンサを壁に接触させる。 C 勝敗判定装置性能試験   3-2MIRSを走行させ、タッチセンサを反応させる。     ロジックアナライザで反応を確かめる。   3-1静止した状態で、タッチセンサを反応させる。この時、  B タッチセンサ性能試験   2-5MIRSを走行させ、自機の赤外線LEDを反射させる。   2-4MIRSを走行させ、後面の赤外線センサに赤外線を当てる。   2-3MIRSを走行させ、前面の赤外線センサに赤外線を当てる。   2-2MIRSを走行させ、左右の赤外線センサに赤外線を当てる。   2-1静止した状態で、赤外線センサに赤外線を当てる。この時、ロジックアナライザで反応を確かめる。  A 赤外線センサ性能試験   1-3MIRSをフィールド上に置き、壁との距離を測定する。   1-2障害物をフィールド上に置き、MIRSを走行させ、超音波センサの反応を調べる。   1-1静止した状態で、障害物までの超音波センサの測定値と実際の距離を比較する。  @ 超音波センサ性能試験 <手順> 外部端末、障害物、メジャー、赤外線LED、ロジックアナライザ <使用器具> センサ部が正常に機能するかを調べる。そして、MIRSがセンサ の反応に対し適切な行動をするか調べる。 <目的> 5.センサ性能試験  6-2旋回の中心がずれないか。  6-1旋回がスムーズに行えるか。  5-28の字走行において、軌道がずれないか。  5-18の字走行において、定速で走行できているか。  4-2屈折走行において、回転角が90度になっているか。  4-1屈折走行において、スムーズに曲がることができるか。  3-2円走行において、軌道がずれないか。    どれだけ速く走行できるか。  3-1円走行において、定速で走行できているか。  2-2直線定速走行において、左右へずれないか。    速すぎたり、遅すぎたりしないか。  2-1直線定速走行において、速度が要求された速度に達しているか。  1-1自然に発進ができるか。加速が要求性能を満たしているか。 <検査項目>           左回りも同様に行う。  E 旋回    :その場で右回りに10回転以上回転させる。  D 8の字走行 :円走行と同様に、8の字に走行させる。  C 屈折走行  :屈折(直角カーブ)したライン上を走行させる。  B 円走行   :定速で、およそ半径50cmの円周上を10周以上走行させる。右回り・左回り両方行う。            その時の距離と時間を測定する。  A 直線定速走行:凹凸のない水平な10mほどの直線上を、0.3m/sec,1m/sec(最高速度)で定速走行させる。  @ 発進    :静止した状態からMIRSを発進させ、最高速まで加速する。その時の距離と時間を測定する。 <手順> 外部端末、ストップウォッチ、メジャー <使用器具> MIRSの基本的な駆動性能を調べる。 <目的> 4.単純走行試験  1-3LED表示は正常であるか。  1-2規定の場所に規定の電圧がきているか。  1-1電源投入後、モータなど各部分に異常な動きがないか。 <検査項目> @ 電源投入 <手順> テスター <使用器具> MIRSが完成して、最初に行なう試験である。電源投入から単純 走行試験に移る前に異常がないか調べる。 <目的> 3.初期状態試験 各試験の詳細は、以下に述べる。 通場モード試験 ペナルティー戦モード試験 リモートコントロール機能試験 センサ性能試験 単純走行試験 初期状態試験 システム総合試験は次の手順で行なう。 2.手順 各テストコマンドは外部端末よりRS−232Cを介して発行され、その結果は外部端末に返される。テストプログラムは使用しない。但し外部端末から操作が正常に行われない場合は、この限りではない。 システム総合試験の詳細を本ドキュメントで規定する。 1.概要 8通常モード試験土屋 平田 7ペナルティ戦モード試験平田 6リモートコントロール機能試験平田 5センサ性能試験平田 4単純走行試験平田 3初期状態試験平田 2手順平田 1概要平田 項目作成者 目次 システム総合試験計画書 MIRS開発チーム第5班 1994年度 MIRS9405成果物へ戻る mirsdoc/mirs94/mirs9405/program 実際のプログラムはmoonの以下の場所にあります。 14通信規約林 久米 平田 13データ仕様林 久米 平田 12概略フロウ10林 久米 平田 11概略フロウ9林 久米 平田 10概略フロウ8林 久米 平田 9概略フロウ7林 久米 平田 8概略フロウ6林 久米 平田 7概略フロウ5林 久米 平田 6概略フロウ4林 久米 平田 5概略フロウ3林 久米 平田 4概略フロウ2林 久米 平田 3概略フロウ1林 久米 平田 2HCPチャート林 久米 平田 1MIRSソフトウェア開発規約林 久米 平田 項目担当者 目次 システム詳細設計書(ソフトウェア) MIRS開発チーム第5班 1994年度 3部品一覧土屋 2ケーブル仕様土屋  1-8勝敗判定装置 土屋 平澤 溝口  1-7超音波センサ送受信回路  1-6赤外線センサ信号処理部  1-5PD  1-4ロータリエンコーダ・タッチセンサボード  1-3MMIフロントボード  1-2MMIメインボード  1-1I/O Subボード 1 資料一覧 項目作成者 目次 システム詳細設計書(エレクトロニクス編) MIRS開発チーム第5班 1994年度 1993年度小型知能ロボット設計製作 第4班 1993年度小型知能ロボット設計製作 第3班 1992年度小型知能ロボット設計製作 第2班 4、参考資料 3−3同期回路、前縁微分回路部について 3−2 チャッタレス回路部について 3−1 スイッチ部について   3、回路の概要 2、主な動作の手順 タッチセンサは、光センサや超音波センサの補助として用いるのが有効だと思われる。例えば、平常時は光や超音波を用いた非接触のセンサを作動させておき、もしMIRS本体が、誤動作などの何らかの理由で壁に衝突しそうになったとき、初めてタッチセンサが働くようにする。つまり、タッチセンサの高信頼性を活用して、非常時を検出する為のセンサとして利用する。 タッチセンサに障害物が接触すると、I/Oボ−ドに信号が送られ、障害物があると判断する。 1、タッチセンサの役割について 参考文書 タッチセンサに必要な回路の概要 主な動作の手順 タッチセンサの役割について 目次 本書は、MIRS構成部品の一つであるタッチセンサについて、その使用目的、仕組み、及び必要な装置、回路等について調査したものである。 本書の目的 タッチセンサ <超音波の指向性> 超音波は超音波スピーカからビーム状に広がる。指向性は、超音波放射面の寸法と周波数によって決まるが、指向性が緩いと計測された対象物体はぼやけて見える。この対策の一つとしては超音波センサの外部にホーンをとりつけることにより指向性を鋭くする方法がある。一般にホーン形状として、開口部が大きく全長が長いほど指向性が鋭くなる。以下に送信器の指向性の一例を示す。受信器の指向性もほぼ同じである。 <6.超音波の指向性> 以上の結果により、対象物の凹凸が約8.6[mm]以上の場合には散乱面とみなされる。 (式)λ=v÷f=343.5÷40k=8.6[mm] 超音波の周波数を40KHzとして波長λを求める。      v=343.5 ここで20℃の空気中の音の伝搬速度を求めると、   (式)v=λf 超音波のような波が対象物に当たった場合、対象物が凹凸のある表面を持っていたとするならば、超音波は散乱しあらゆる方向に反射波が進んでいく。しかし鏡面を持っていたとすると入射角と反射角の関係から反射波は反射角の方向にしか観測されない。センサに対して斜めの鏡面は観測されにくいと思われる。超音波にとってどの程度までが散乱面なのかは波長λから知ることが出来る。以下にその関係式を示す。 超音波トランスジューサーのように電気信号を機械的振動に変えたりその逆をする電気−振動変換素子は、原理的には一つの素子が送波器にも受波器にもはたらかせることが出来る。しかし送波と受波では空気の振動振幅が大幅に異なり、またインピーダンスを変えた方が効率がいいので実際はほとんど送波器、受波器で別個の素子を用いている。 超音波センサには電気信号を超音波に変えて空気中に発射する超音波スピーカ(送波器)部と、空気中を伝搬してきた超音波を受けてそれを電気信号に変える超音波マイクロホン(受波器)部とがある。この両者をあわせて超音波トランスジューサーという。 <5.超音波の反射特性> <ブロック図> <4.ブロック図> つまり、使用する周波数は170.20[KHz]となる。      =2.91[μs]      =2×1[mm]÷344[m/s]  (式)s=2r÷c また、距離を測る際に1パルスを1cmとして数えるためのクロックの周波数は先ほどの式(*)を用いて1m測定したとき誤差を1cm以内に収めるには、  その他に、カウンタ回路によってタイミングパルス(出力周期20ms、パルス幅4ms)が発信されているが、そのときの受信信号が16ms以下という条件を満たしているのでこのことは考える必要がない。 となるので、測定は1.16[msec]から11.6[msec]までの間だけ測定すればよいことがわかる。   (式)tmin=1.16[msec]、tmax=11.6[msec] また、このときのrの最小値を20cm、最大値は2mとすると、       where c=344[m/s] (式)t=2r÷c[s](*)  そこで、超音波を発信してから受信するまでの時間をt[s]、物体までの距離をr[m]、音速をc[m/s]として計算すると、  測定で注意しなければならないのは、超音波が直接送信機から回り込んでくることである。つまり、超音波を発信してからある時間は受信機が受け付けないようにしなければならない。  物体に当たり反射した超音波を受信して測定を行う。カウントの打ち切りは、前縁微分回路からの受信信号を受けたときあるいは後で述べる時間以内に信号が入ってこなかったときである。測定方法はブロック図を参照のこと。 (2)受信について  超音波は40KHzの周波数で発信される。超音波センサは送信信号によって制御され、超音波送信と同時にカウンターはカウントを始める。 (1)送信について <3.超音波センサの送信・受信>  超音波というのは、人間の可聴範囲以上(約16KHz)の音波をいう。我がMIRSにおいて、障害物の検知・距離測定と自機座標の確認をするセンサが超音波センサである。今回MIRSで使用する超音波センサは反射方式(独立型)を採用している。 <2.超音波センサの性質> 超音波センサの指向性を鋭くし、相手MIRSの位置を正確に捉える方法を探し出すこと。 <1.目的> 超音波の指向性 超音波の反射特性 ブロック図 超音波センサの送信・受信 超音波センサの性質 目的 目次 超音波センサ  赤外線受光範囲は、受光素子の指向角・受光素子の取り付け位置・角度によって変化する。赤外線は相手MIRSの勝敗判定装置の位置を知る唯一の情報であり、本MIRSの要求を実現するため、今後実験・調査検討を行って赤外線受光範囲を設定する必要がある。 <赤外線受光範囲のイメージ図> 下に、本MIRSにおける赤外線受光範囲のイメージ図を示す。 指向角特性については、前に述べたとおり、ある程度広い。場合によっては、ホーンなどにより指向角特性を狭める必要がある。(ただし、現時点では不必要だと考える) 赤外線センサがどの範囲で赤外線をとらえるかは、赤外線の放射強度によるので一概には言えないが、MIRS競技場の広さを考えれば、距離に関しては問題にならないと言える。 (2)赤外線受光範囲 <赤外線発光範囲> (1)赤外線発光範囲 5.検討 (仕様書参考)Y方向はθ=0゜とみなして考える。 注)Y方向特性については特に必要がないと考えられるので、ここでは省略する。 ※2)図1に示すバースト波を、送信機にて送信するものとする。 ※2 kHz − 38 − fo B.P.F中心周波数 ※2 μs 800 − 400 T2 ローレベルパルス幅 ※2 μs 800 − 400 T1 ハイレベルパルス幅 ※2,プルアップ抵抗2.2KΩ V 0.6 0.45 − VOL ローレベル出力電圧 ※2,出力端子OPEN V − − Vcc-0.2 VOH ハイレベル出力電圧 入力光なし、出力端子OPEN mA 1.5 2.8 − Icc 消費電流 備考 単位 MAX TYP MIN 記号 項目 電気的特性 (4)電気的特性 V 4.7〜5.3 Vcc 電源電圧 単位 動作条件 記号 項目 推奨動作条件 (3)推奨動作条件 ※1)結露なきこと。 ℃ 260 Tsol 半田温度 ℃ −20〜+70 Tstg 保存温度 ℃ −10〜+60 ※1 Topr 動作温度 V 0〜6.0 Vcc 電源電圧 単位 定格値 記号 項目 絶対最大定格 (2)絶対最大定格 <構成図> (1)構成図 <受光側> LED発光指向特性 <X方向特性> (3)LED発光指向特性 ° − ±23.5 − IF=50mA θ1/2 半値角 nm − 50 − IF=50mA Δλ スペクトル半値幅 nm − 950 − IF=50mA λP ピーク間容量 pF − 20 − VR=0,f=1MHz CT 端子間容量 mW − 11 − IF=50mA PO 光出力 mW/sr − 20 12 IF=50mA IE 放射強度 A 10 − − VR=5V IR 逆電流 V 1.5 1.35 − IF=100mA VF 順電圧 単位 最大 標準 最小 測定条件 記号 項目 電気的特性(Ta=25℃) (2)電気的特性(Ta=25℃) (注)パルス幅<=100μs、繰り返し周波数=100Hz ℃ ー30〜100 Tstg 保存温度 ℃ ー20〜75 Topr 動作温度 mW 150  PD 許容損失 V 5 VR 直流逆電圧 A 1 IFP(注) パルス順電流 mA/℃ −1.33 ΔIF/℃ 直流電流低域率(Ta>25℃) mA 100 IF 直流順電流 単位 定格 記号 項目 最大定格(Ta=25℃) (1)最大定格(Ta=25℃) ・赤外線LED <発光側> 4.素子の定格及び特性 <受光側> SHARP   IS1U60 <発光側> 東芝発光LED TLN105B 3.使用する素子 ところで、受光素子”SHARPIS1U60”は、送信機の発光とその他を区別するために、検出スレッショルドを自動的に上げる構造となっている。したがって、赤外線は38kHzの点灯パルスで発信される。そのためパルス電流をつくる回路が必要である。 <赤外線センサ信号処理回路> (2)赤外線センサ信号処理回路 <赤外線センサ信号回路> (1)赤外線センサ信号回路 2.回路構成 この回路は、赤外線センサ信号回路内の受光素子から送られてくる信号(HorL)を処理し、信号の状態が変化したときに、割り込み要求信号をMPUに送る。また、そのときの各受光素子の状態はレジスタから読み込まれる。 赤外線センサ信号回路と赤外線センサ信号処理回路で赤外線センサ回路は構成される。 1.赤外線センサ回路の概要   赤外線センサ タイマICによるPWMパルスの作り方 50Hz〜4kHz程度の基本周期をもつパルス列を発生させデューティ比を制御するには、専用のハードウェアかタイマICを用いるのが簡単である。 タイマICによるPWMパルスの作り方 これより、モーターに供給されるエネルギ変化の様子が分かります。 A図はPWM制御の波形を示したものである。図(a)は信号Aが急激に変化した場合の、電力変化のあるパルス列となる。 アナログ制御とPWM制御との違い アナログ制御とPWM制御との違いを下の図に示す。 適当なパルスを発生し、そのパルスによりスイッチングを行って、モータの端子に電圧を印加したり、開放したりする。このときパルスのデューティ比変えることにより、等価的なアナログ制御を行なう方式をいう。 PWM制御方式 これを解決したのがダイオードD1で、一般にこれをフライホイールダイオードと呼んでいる。この働きは、モータオフ時にゆうはつする逆方向の電力をダイオードを介して同じモータに回生してやる事である。こうすることによって、高レベルの電気雑音が抑制されるだけでなく、そのエネルギーをオフタイム中、モータに流す事が出来るので、モータ電流が連続的となり、その結果エネルギー効率が上がり、なおかつモータの動きもスムーズになる。 ところで、PWMを含めたパルス制御法は、電力パルスがオンの時だけモーター電流を流し、それ以外の時は休んでいるので、その間トランジスタや電流の負担が軽くなるのは良いが、汚点がない分けではない。これは、オフタイム中に起きてしまう事で、モータもコイルがある限り、そこには必ず何がしかのインダクタンスを有するので、これにオフ時の自己誘導作用が発生し、大きな逆起電力を誘発する。これは、制御用トランジスタを破壊するだけでなく、非常に大きな雑音を周囲に巻き散らし、ひいては大きな電磁波被害となる。 Duty比 また真ん中は、デューティ50%で、この時オンタイムオフタイム共に等しく、制御回路のちょうど中間を表わしている。 反対に下側のデューテュ小は、回転数もそれに対応して低くなっているが、この時、オフタイムが最も長い。 モータのPWM制御は、パルス制御法の発展形でありこの方式はオンパルスの通電幅を任意に変化させている。つまり、パルス幅を変調することによって結果的にモータへの供結エネルギーをコントロールしている。 PWM制御 なおこの回路では、モータへのピーク電圧が電源電圧とほぼ同じになるが、この場合、オフタイムがあるのでその平均電力は低くなる。 パルス制御原理図 しかし、パルス駆動によるモータの振動音、ブラシ、コシュテータの著しい磨耗、それに電気ノイズの発生等のいろいろな問題を抱えている。下の図はパルス制御法の原理図である。 パルス制御法はモータのオンオフ制御をパルスによって行う方法である。これによりオフタイムでの電池の消耗が全くなくなる。またオンタイムでも制御トランジスタが完全に飽和しているので、ここでの電力ロスも最小限に抑えられ、トランジスタの電力ロスが著しく軽減される。 パルス制御法 PWM制御とは 更に必要な時間だけ通電しますので、モータ・ドライブ回路全体の効率があがり、電圧の負担も軽くなります。 従って、パワー・トランジスタを飽和領域で使用する為、電力ロスが軽減され、トランジスタもそれ程発熱しません。 PWM(Pulse Width Modulation)回路とは、周期は一定で、入力信号(DCレベル)の大きさに応じて、パルス幅のデュ−ティ・サイクル(パルス幅のHとLの比)を変え、モーターを制御する回路である。従来の制御にたいして、これは飽和(スイッチング)領域での制御となります。 PWMの役割について PWM制御 例外処理VECTORは、CPUが例外処理ルーチンのアドレスを得る為に0〜255番までの256種類が用意され、0番地から3FF番地までの1Kバイトに配置されている。このため必要とする応じた例外処理プログラムの先頭番地をVECTORTABLEに書き込んでおかなければならない。 例外処理 68000は、1、4、8、16、32ビット長のデータを取り扱うことができる。これらの内容としては、ビットデータ、二進化十進数、バイトデータ、ワードデータ、ロングバイトデータを持つことができる。データレジスタは、4種類のデータを保持することができるが、アドレスレジスタは、16ビット、32ビットを単位として扱う。 68000が扱えるデータ型 68000は、システムプログラムが資源管理などの操作をすることができるように、実行時の状態をスーパバイザステートとユーザステートに分けて、幾つかの命令は、スーパバイザステートでしか実行できないようにしている。これらの命令は、特権命令と呼ばれSRの変更や割り込み処理に関する命令郡がこれに属する。 スーパバイザステートとユーザステート 68000のレジスタは、データレジスタDn(n:0〜7)、アドレスレジスタAn(n:0〜7)、ステータスレジスタSR、プログラムカウンタPCがある。データレジスタ・アドレスレジスタのうち用途が決まっているのは、スーパバイザ用スタックポインタ(SSP)とユーザ用スタックポインタ(USP)の2本だけで後は、汎用レジスタとして使うことができる。SSP・USP共にA7割り当てられていて、どちらを使うかはSRの内容(Sビット)によって決まる。 レジスタ モトローラのMPU68000は、特別な入出力命令を持たず、I/Oをメモリー空間に配置するメモリー・マップト方式を採用している。常に16Mバイトのメモリー空間を一様にアクセスすることができる。68000では、常にCLK入力の10クロック分のE信号を定期的に出力している。通常68000のデータ入出力は、E信号と関係なく非同期に行われている。68000は16ビットCPUでありながら内部レジスタは、すべて32ビットになっている。又、レジスタは用途に関してあまり制限の少ない汎用レジスタ方式を採用しているので、レジスタ間のデータ転送などの回数を減らすことができる。 特徴 MPU 1.5[m/s]÷3.4877[m/s2]≒0.4300[s] (5.0kgの場合) 1.5[m/s]÷4.3164[m/s2]≒0.3475[s] (4.5kgの場合) 1.5[m/s]÷4.8559[m/s2]≒0.3089[s] (4.0kgの場合) 最高速到達時間[s]=希望速度[m/s]÷加速度[m/s2] 最高速到達時間 19.4236÷5.0≒3.8847[m/s2] (5.0kgの場合) 19.4236÷4.5≒4.3164[m/s2] (4.5kgの場合) 19.4236÷4.0≒4.8559[m/s2] (4.0kgの場合) 加速度[m/s2]=加速時必要力[N]÷質量[kg] 加速度 236.67[rps]÷5.97[rps]=39.64321≒39.64 減速比=定格回転数[rps]÷回転数[rps] 減速比 1.5[m/s]÷(0.08[m]×π)=5.968310≒5.97[rps] 回転数[rps]=希望最高速[m/s]÷円周[m] 回転数 本システム希望最高速  1.5[m/s] タイヤ半径       4[cm] 本システム総質量(仮定)4.0、4.5、5.0[kg] 定格回転数(適正負荷時回転数)14200[rpm]≒236.67[rps] 定格トルク(適正負荷)100[gfcm]≒0.98[N.cm] これより以下にあげるデータから本システム、駆動系における回転数、減速比、加速度、最高速度到達時間を求める. 重量 最高速度は、0.67[m/s]程度で十分と思われるので、ギヤ比は、89.29とする。 V=0.67[m/s] (a=1[m/s2]のとき) a=0.67[m/s2] (V=1[m/s]のとき) のとき、最高速度、最高加速度をそれぞれ重視した場合についてもとめる。 定格トルク=0.98[Nm] 定格回転数=236.67[rps] d=0.08[cm] M=3.5[kg] とすると、ギヤ比iは、次式で求められる。 最高加速度  a[m/s2] 最高速度   V[m/s] タイヤの直径  d[m] MIRSの総重量 M[kg] ギヤ比の設定 トランジスタ技術増刊号 4.参考文献 バッテリーとは別のバッテリーを使うようにします。 述べたように、ノイズでのロジックの誤動作を防ぐため、TTL用の5Vの 駆動用の7.2V電源は、バッテリーから直接供給します。ただし、前項にも のです。(別紙「3端子レギュレーターについて」参照)そのため、入出力間電圧の少ない低損失型の3端子レギュレータを使用します。 1.2Vしかないので、78シリーズ等に必要な最低の電圧差3Vに満たない もう一つは、電源電圧が7.2Vで要求電圧が5.0Vと入出力電圧差が に近いところに配置し外部ノイズを防ぎます。 回転ノイズが乗らないようにします。そして、平滑コンデンサもなるべくIC あるバッテリは、モータを使用する駆動用のバッテリとは別にしモータの ノイズができるだけ乗らないように工夫しなければなりません。まず、2本 この際気をつけなければならないことは、ロジック回路の電源となるので 電流の容量が分かっていませんが、2A用か4A用を使用します。 5Vに変換して作り出します。まだ、実際のボードがあがっていないので TTL用の5Vの電源は本体の7.2Vバッテリーより3端子レギュレーターで 別紙「3端子レギュレーターについて」参照) 組立の際には3端子レギュレーターの78/79シリーズを使用します。 また、MIRSにはその供給用のジャックをとりつけておきます。その外部電源 作り出さなくても外部電源が使用できるので、こちらを使用します。 接続されているときでしか使用しません。そのためMIRSの7.2Vの電源から まず±12Vの電源はRS−232C用であるため、MIRS本体に外部端末が これを見ると、電源は3系統に分けられます。TTL用の+5V電源とRSー232C用の電源±12V、そして駆動用の電源+7.2Vです。 3.検討 RS−232C    ±12V およそ100mA その他の回路部    +5V およそ2A 駆動部(モーター)  +7.2V MPUボード     +5V 600mA 2.要求される電源 7.2V 1700mAh 2本 田宮 NiCdバッテリー 1.与えられる電源 ここでは、MIRSの生命の源となる「電源」について調査しました。別紙に「3端子レギュレーター」について詳しく調査した資料を用意しましたので、そちらと併せてご覧ください。 電源 モータは理想的には入力電流と回転数は比例し、トルクと回転数は逆の比例関係にある。しかし、実際のモータでは回転数の上限の方で特性が曲がったり、低回転領域でリプルが生じる。 トルクを大きく取り出す場合は、回転数を低めに、また、回転数を高く使う時には、トルクが低めになるようにしなければならない。 モータのトルクが最大となるのは、起動時とモータが過負荷で動けない拘束状態の時である。モータの最大トルクを超えるような負荷が加わっていると起動できず、ジュール熱により発熱し、モータを焼損させるので、使用負荷は、モータの持つ最大トルクの1/3〜1/2程度にしなければならない。 上図は、モータ起動時の電流特性、運転中急激な過負荷がかかった時の電流変化、モータがモータがロックしている場合の電流値をそれぞれ示します. DCモータの電流特性 DCモータの電流特性 DCモーターの特性を算出する公式 V/rpm 逆起電力定数 Ke rad/sec 回転角速度 ω W 最高出力 Wm N・m/A トルク定数 Km W 出力 W A 無負荷電流 I0 % 最高効率 ηm A 起動電流 It % 効率 η rps(rpm) 無負荷回転数 Na V 逆起電圧 Ec rps(rpm) 無損失時の無負荷回転数 Nt Ω 電機子抵抗 Ra N・m 損失トルク T0 rps(rpm) 回転数 N N・m 有効出力トルク Ta V 電機子端子電圧 Ea N・m 全発生トルク Tt 単位 名称 記号 単位 名称 記号 DCモーターの特性を表す記号 0.33[Ω] 電成子抵抗 0.00044[V/r.p.m.] 逆起電力定数 34.5[gfcm/A] トルク定数 16400[r.p.m] 無負荷回転数 70[%] 効率(定格時) 20.9[W] 消費電力 14.6[W] 定格出力 14200[r.p.m] 定格回転数 2.9[A] 定格電流 100[gfcm] 定格負荷(トルク) 7.2[V] 定格電圧 製品名 マブチRS−380 PH DCモータ ・・・現在調査中です。 7.メモリー効果について ・・・現在調査中です。 6.温度特性 ・・・現在調査中です。 5.充電特性 ・・・現在調査中です。 4.放電特性 接続コネクタ <接続コネクタ> 形状 <形状> 3.形状・接続コネクタ   <定格容量> 1700mAh   <定格電圧> 7.2V 2.定格電圧・容量 1700SCRRACINGPACK    <田宮模型> Item55056 (製造元:三洋電機) 1.調査したバッテリー バッテリー このためにあらかじめ、プログラムで通信用ドライバを創り、ROM等に組み込んでおく必要がある。そうすることでこちらからMIRSへデータ供出要求を出し、必要なデータを得、またはMIRSへのデータ転送要求を出し、データを与えることできる。 先程も述べたが、このインターフェイスを介してデータのやりとりをするためには、通信のための制御が必要である。 ※詳細はVSBCー1UsersManualPage3-2参照 我々のMIRSではMPUボード(VSBC-1)のシリアルI/O Piggybackmoduleが利用できる。これに15pinのコネクタで接続することができる。以下にRS232Cシリアルインターフェイスの仕様、及びピン配列を示す。 3.RS−232Cインターフェイス 通信方式には同期通信と非同期通信(調歩同期式通信)の2種類がある。RS−232Cを用いたデータ通信では、1本の信号線を使って1ビットずつ順番にデータを転送している。このため各ビットの送信時間と受信時間を決めるタイミング信号が必要となる。このタイミング信号を一方が他方から供給してもらうのが同期式で、それぞれの側で独自にタイミング信号を発生させて、送受信するのが非同期式である。非同期式では、開始のタイミングを示すスタートビットと1バイトのデータの終わりを示すストップビットを使って、タイミングをあわせている。非同期式は、信号線の数が少なくてすむが、高速の通信には向かない。パソコン通信などでは2400bps位までが非同期式となっているようだ。 2.通信方式 RS−232CというのはEIA(米国電子工業会)が定めたコンピュータなどのデータ処理装置(DTE)とモデムなどの波形変換装置(DCE)の間のデータ変換のためのインターフェイスに関する規格である。2つの装置の間のデータ変換に必要な信号とレベル、信号の流れる方向、及びコネクタのピン配列などに関して規定している。RS−232Cインターフェイスを持った機器どうしは、信号を規定通りに接続することによりデータのやりとりをすることが出来る。ただし、信号のタイミングやデータ形式までは決めていない。そのため、データ長やパリティビットなどの通信パラメータが必要である。 1.RS−232Cとは RS−232C         各モードの詳細については5章・10章及び11章で述べる         リモコンモードを有すること 動作モード   通常モード・ペナルティ戦モード・テストモード・ 勝敗判定装置  MIRS競技規定に適合するもの         ロータリエンコーダ×2 情報収集機能  超音波距離計測機能×3,赤外線センサ×8, 最大走行速度  1m/s 駆動系制御方式 PWM制御による2輪独立駆動方式 MPU     VSBC1(PEP社製) 詳細は8章を参照         制御系 20W以下 (5V,4A 電源回路の制限による) 消費電力    駆動系 36W以下 (7.2V1700mAhのNi-Cd電池の制限による)         20分の連続運転が可能な電源容量を有すこと 電源      駆動系と制御系は電気的に完全に分離されており,各消費電力は 大きさ     25cm(縦)×25cm(横)×30cm(高さ)以内であること 重量      5Kg以内 名称  YONAOSHIU(世直し2号) 緒言 スイッチ部 連動してスイッチが入る。  おく。ピアノ線に障害物が接触し、力がかかると、それに 子で固定し、もう一方に、マイクロスイッチを備えつけて スイッチの接触部としては、ピアノ線等を使う。一方を捻 チが有効である。 でon/offでき、しかも信頼性の高いマイクロスイッ 本システムで使用するスイッチとしては、小型で数10g 2,スイッチ部について のセンサとして利用する。 タッチセンサの高信頼性を活用して、非常時を検出する為 ったとき、初めてタッチセンサが働くようにする。つまり、 本体が、誤動作などの何らかの理由で壁に衝突しそうにな を用いた非接触のセンサを作動させておき、もしMIRS いるのが有効だと思われる。例えば、平常時は光や超音波 タッチセンサは、光センサや超音波センサの補助として用 が送られ、障害物があると判断する。 タッチセンサに障害物が接触すると、I/Oボ−ドに信号 1,タッチセンサの役割について タッチセンサ   ホーンの形状  指向性を鋭くするために、ホーンを用いる。ホーン形状は、ホーン角度が30度、長さ50[mm]である。このホーンを用いることによって指向性が50度から12度以下に変わる。 5、ホーンについて  また、一定時間内に受信信号を捕らえる事ができなければカウンタはCarry信号を出力し、それを受けた7segLEDは9999を表示する。  40[KHz]の超音波とタイミングパルス(パルス幅0.35[ms])より超音波パルス信号を生成する。それを送信機より発信し、反射して受信するまでの時間を測定する(送信機から受信機への回り込み信号はカットする)。この測定時間と超音波の速度より障害物との距離を求める。測定可能距離は20[cm]〜2[m]に設定する。測定精度は、±1[cm]以内(温度補正後)である。 4、距離の測定について 一定時間経過したとき、または急加速後においてのロータリエンコーダの測定値の修正・自機位置の確認 相手機または壁との距離の測定 3、超音波センサの使用目的 反射方式(独立型) 2、超音波センサの検出方式 3個(左右、前方に1つずつ) 1、超音波センサ使用数  超音波センサ基本設計書 この場合、押した感触が重すぎないか軽すぎないか、また実際に走行させ押されたときに直ちに停止モードにはいるかどうかをチェックする。 「勝敗判定装置」は実際にはセンサーではないが、負けたことを調べるという点では一種のセンサーともいえる。 (iv)勝敗判定装置 出来るかどうかを調べる。 MIRSを走行させ、故意に壁に接触させ正しく回避 (2)走行状態におけるタッチセンサー回避試験 アナライザー等で信号が正しく出ているかを調べる。 MIRSを静止させ、タッチセンサーを押し、ロジック (1)静止状態におけるタッチセンサー反応試験 タッチセンサーもチェックする。まず、押した感覚で無理に他の部分への力がかからないかを十分にチェックしておく。そして、左右ともしっかり認知するか、また危険を認知したときに適切な回避行動がとれるかをチェックする。 (iii)タッチセンサー 追跡するかを調べる。 MIRSの前方で、赤外線LEDを移動させ、正しく (3)赤外線追跡モードの試験 正しく行動するかを調べる。 MIRSを走行させておき、(1)と同様に赤外線を当て (2)走行状態における赤外線センサー試験 調べる。 ロジックアナライザー等で信号が正しく出ているかを MIRSを静止させ、赤外線センサーに赤外線を当て、 (1)静止状態における赤外線反応試験 赤外線センサーも同様に、マンマシーンインターフェースなどで取得した情報が視覚的に評価できるような装置を使う。赤外線センサーはon/offの状態、や指向性などをチェックする。 (ii)赤外線センサー 修正モードにおいて測定精度が充分であるかを調べる。 MIRSをフィールド上に置き、壁との距離を測定させ (3)修正判定試験 捕捉又は回避できるか調べる。 走行中に障害物をフィールド上に置き、その障害物を (2)障害物反応試験 LEDに表示される測定値が、実際の距離の±10%以内におさまっているかを調べる。 障害物を、超音波センサーの設置してある方向に置き、 (1)距離測定試験 まずは、超音波センサーの性能を調べる。このときは、マンマシーンインターフェースやリモートコントロール用の外部端末によって超音波センサーで測定した距離が分かるようにする。そして、測定した距離が実際の距離の±10%以内におさまっているかを調べる。 (i)超音波センサー があり、それぞれをチェックする。 勝敗判定装置 タッチセンサー 赤外線センサー 超音波センサー 最後はMIRSのセンサー部の性能を試験する。このときに、MIRSが適切な危険回避などの処置が行われるかもあわせてチェックする。まず、センサーには、 (4)センサー性能試験 ここでは、リモートコントロールを使用した試験をする。別に制作したリモートコントロール用の外部端末を接続して、外部端末の指示通りに行動するか、機敏に行動しているかをチェックする。行動の内容は、先の単純走行試験の試験項目と同じとする。 (3)リモート走行試験 最後は、その場回転の試験である。その場でMIRSを10回転以上回転させ回転の中心が極端にずれていないかを調べる。 (vi)回転 MIRSを8の字に沿って走らせる。円走行の時と同様に極端な中心位置の変化がないかをチェックする。 (v)8の字走行 屈折走行は、MIRSを屈折(直角カーブ)したライン上を走行させ回転角が90度になっているか、機敏に曲がることができるかをチェックする。 (iv)屈折走行 円走行では、一定速度でおよそ半径50cmの円周上を10周以上走行させる。このときに中心が大きく変わっていないかを調べる。 (iii)円走行 次は、いわゆる全速力走行の試験である。調べる項目は「直線定速走行試験」と同様であるが、更に設計上予定していた最高速度(1m/sec)に達しているかを調べるものとする。なお、その際にはストップウォッチ等を用いる。 (ii)直線高速走行試験 まずMIRSを凹凸のない水平な場所に置き、10mほどの直線上を、およそ0.3m/secで定速走行させる。このときに、異常な音がしないか、極端な速度の変化がないか、またモータから臭いや煙がでていないかを調べる。さらに、10m走った時点で左右へのズレが±20cm以内に収まっているかをチェックする。 電源投入で異常が認められなかったときは、走行の基本である「直線定速走行」を試験する。 (i)直線定速走行試験 回転(右回り、左回り) 8の字走行 屈折走行 円走行 直線高速走行試験 直線定速走行試験 内容は次の通りである。 MIRSの基本的な駆動性能を調べるために行う試験である。 (2)単純走行試験 次は、MMIぼーどを検査する。7セグメントLEDが発光しているか単色のLEDは発光するか、また0000−9999までの数字が表示可能かを調べておく。 (iii)MMIボードのチェック 電源を投入したら、まず本体後面の赤外線LEDが発光しているかを調べる。赤外線は人間の目には見えないので、電流計などで調べる。LEDに規定の電流が流れていればLEDは発光している。また、オシロスコープやロジックアナライザなどを用いて、指示されたパルスで発光しているか調べておく。 (ii)赤外線LEDの発光検査 そのような異常もなく無事に電源が入ったら、まず電源電圧のテストをする。テスターなどを用いて規定の場所に規定の電圧がきているかを調べる。特にCPU周りは故障の原因となりやすいのでよく注意する。また電流が流れすぎていないかも調べておく。 準備がすんだら電源を入れる。電源を入れた後、変な音や臭い、煙などが発生した場合は直ちに電源を切る。 各配線等の検査を終えたらいよいよ電源投入にはいる。電源投入は検査の段階で最も重要な部分である。電源を入れた途端、突然モーターが回転しMIRSが急発進するかもしれないので十分注意する。 (i)電源投入 MMIボードのチェック 赤外線LED発光検査 電源投入 MIRSが電源投入から、走らせるまでの過程で正しく動作しているかどうかを調べるために行われる試験である。内容は以下の通り。 (1)部分機能試験 センサー性能試験・・・センサー等が機能しているかをチェック。 リモート走行試験・・・リモコンを用いた単純走行試験。 単純走行試験・・・・・主に、MIRSの駆動性能をチェックする。 部分機能試験・・・・・走行試験に入る前に各部分をチェックする。 総合試験は、大きく次に分けられる。 MIRSの性能を知る手段として、総合試験は欠かすことができない。ここでは、その総合試験の手順を検討する。 総合試験計画 ○:継続 ◆:このモードへは,遷移しない ○ ◆ 走行距離が一定値を越えた急激な加速の後 ◆ 修正モード 赤外線検出 ○ 赤外線検出 赤外線検出 追跡モード 補正完了後 赤外線を検出できない ○ 相手を捕捉できない 探索モード ◆ ◆ ◆ ○ 初期モード 修正モード 追跡モード 探索モード 初期モード fromto 通常モード遷移条件 モード遷移図 モード遷移図: × × ○ 左 × ○ ○ やや左 × ○ × 正面(接近) ○ ○ ○ 正面(遠方) ○ ○ × やや右 ○ × × 右 右 中央 左 方向 / センサ 表1.前面のセンサの状態と光源の方向 そして、左右側面のセンサは相手の光源をとらえ、次に追跡に移る(光源に自機の前面を向ける)ために使用する。また後面のセンサは、自機の後面と相手の後面が向かい合っている場合と、自機が発する赤外線が相手MIRSに反射した場合に反応する。 まず、前面のセンサは相手の光源を追跡することを主な目的とする。左・中央・右のセンサによって光源の方向、つまり勝敗判定装置の方向を推測する。(表1参照) 赤外線センサは、相手MIRSの発する赤外線点灯パルスを感知する。本MIRSでは、前面に3個、側面に各2個、後面に1個の合計8個の赤外線センサを配置する。 <受光側> 後面に赤外線発光LEDを1つ配置し、相手MIRSに自機MIRSの勝敗判定装置の位置を知らす。外部光と区別するため、赤外線は38kHzの点灯パルスで送信する。 <発光側> 2.機能 VPRO’94 赤外線センサ回路 SHARP リモコンセンサ IS1U60  8個 東芝 赤外線発光LED TLN105B   1個 1.使用部品 赤外線センサ その他ピン配列、詳細は調査資料及び VSBCー1UsersManualPage3-2参照。 通信を制御するためMIRSのROM等に通信ドライバを組込む必要あり。 端子の出力レベルは±12V。 3.注意点 MPUボ−ド(VSBC-1)上に15PinのRS−232C端子が2つ出ている。これに目的の機器を接続する。 2.利用方法 RS−232Cインタ−フェイスを介してMIRSと人との情報交換を行う事を目的とする。具体的にはパソコンを接続しMIRSの状態をモニタ−したりデ−タをやり取りする事である。 1.目的 RS−232Cインターフェイス リモコンモードで作成されたデータは外部端末側で拾得する。データにはタイムスライスされた微少時間の間の左右のモーターの出力率を記録する。この微少時間は小さければ小さいほど動きの再現性は優れてくるが、あまり小さすぎるとデータの肥大化とMIRSのCPUへの負担につながるので時と場合に応じてサンプルタイムを調整する。そして、このデータをフロッピーディスクにファイルとして記録し、そのデータを最終的にROMに取り込みMIRSに搭載する。 3.データ処理 本機能では次の2つの操作方法がある。ひとつは外部端末にジョイスティックやマウスを接続してリアルタイムに動かす方法であり、もうひとつはキーボードやマウスによって端末の画面に表示した仮想競技場に動きの軌跡を描いてそのライン上を動くようにするものである。前者はより人間的な動きをさせたいときに、後者は理論的な動きをさせたいときに有用である。 2.操作方法 その方法はMIRSに外部端末(PC−98noteなど)をRS−232Cにより接続して端末から動きのデータを送り込み、MIRSはそのデータに沿って行動するようにする(→リモコンモード) 本MIRSの最も特徴的な部分は、リモートコントロール機能を備えているところである。このリモートコントロール機能は、細かい動作をデータとしてプログラムする際に仕事の負担を軽減する。  1.概要 リモートコントロール機能 周期1.56kHzの方形波のdutyを0〜50%まで(8bitデータの中で,1つを方向とし0なら正転、1なら反転する.残りの7bitを使い)128段階で機能する.またこの回路は、LSI68230により制御され右速度方向データはLSI68230のportAから与えられ,左速度方向データはそれのportBから与えられる.LSI68230のToutを用いて200[kHz]のCLKを得る. PWM制御機能    周期1,56kHzの方形波のdutyを0〜50%まで(8bitデータの中で,1つを方向とし0なら正転、1なら反転する.残りの7bitを使い)128段階で機能する.またこの回路は、LSI68230により制御され右速度方向データはLSI68230のportAから与えられ,左速度方向データはそれのportBから与えられる.LSI68230のToutを用いて200[kHz]のCLKを得る. PWM制御 以上に示された規格の物を使用する。 0.33[Ω] 電成子抵抗 0.00044[V/r.p.m.] 逆起電力定数 34.5[gfcm/A] トルク定数 16400[r.p.m] 無負荷回転数 70[%] 効率(定格時) 20.9[W] 消費電力 14.6[W] 定格出力 14200[r.p.m] 定格回転数 2.9[A] 定格電流 100[gfcm] 定格負荷(トルク) 7.2[V] 定格電圧     製品名 マブチ RS−380 PH DCモータ 本MIRSの総重量は5kg以内とする 重量 ※詳細は、仕様書(UserManualIP-Digital48、IP-DualPI/T)参照 DC+5[V]220[mA] POWER Two24bitSYNCHRONOUScounters TIMER singlebufferedinput,bi-directional,bitI/O doublebufferedinputandoutput,non-latchedinput, 8/16bit DATATRANFERMODES 48Digitallines PARALLELI/O twoMC68230 LSI IP-Digital48ボードは、VIPC310に搭載されるIP(IndustryPack)の一種で、MC68230PI/Tを2個搭載している。 IP-Digital48ボード ※詳細は、仕様書(UserManualVIPC310)参照 DC+5[V]360[mA] POWER twogreesLEDs Frontpanelindicators IRQ1,IRQ3,IRQ4,IRQ6 VME-businterrupts 512Kbytes I/Osize A24/D16 IPI/OMapping A24/D16 IPMemoryMApping RevisionC.1 VME-busConformance VIPC310ボードは、IP(IndustryPack)を二つ搭載することが出来、INPUT/OUTPUT、割り込みといった機能がある。 VIPC310ボード I/Oボードは、VIPC310と、VIPC310上に搭載されるロータリエンコーダボード、及びIP-Digital48から構成される。 構成 I/Oボード機能及び仕様 ※詳細は、仕様書 VSBC-1 UsersManualDocumentNo.525-UM-0002を参照。 DIN41612CTYPE,96PINS,P1CONECTA CONECTA A24:D16/D8MASTER INTERFACE VME-BUS two15pinDsubsocket(RS-232C) Haltindicator(LED),Resetbutton,Abortbutton, FRONTPANELFUNCTIONS DC+5[V](±5%)750[mA],DC±12[V]100[mA](RS-232C) POWER 100×160(mm) BOARDSIZE Litium,cylindic,800mAh ONBOARDBATTERY 2SCSI 3PI/T 4SYSFAIL 5DUSCC(notautovector) 6RTC/TICK 7ACFAIL LEVEL7Abortswitch 7LEVELSONBOARDINTERRUPTVECTOR INTERRUPTHANDLER programmablealarmand/orperiodicinterrupt Dayofweekcounter 12/24Hourtime-keeping DP8573 RTC 16(2×8)digitallinesand4handshakelines MC68230PI/T PARALLELI/O RS232C2PORTS 68562DUSCC SERIALI/O ROM128Kbytes RAM512Kbytes MEMORY MC68HC000(12.5MHz) MPU SingleBoard(MC68HC000)ComputerModulefortheVME-bus 名称:VSBC-1 MPUボードの機能及び仕様 第5班の作製する自律型小型知能ロボットの基本仕様を記述する.  本仕様書はMIRS競技規定に基づき、我々1994年度MIRS開発チーム 1.目的 切り替えスイッチは、初期モードの後どのモードへ遷移するのかを選択するスイッチである. 押しボタンスイッチは,CPUへの割り込み信号を発生させる. LEDはできるだけ多く使い(ポートに余裕がある限り)多くのステートが分かるようにする. 4ビットのデータで0から9およびLとEを表示する為、また少スペース化を図る為,デコーダおよびラッチ回路はPLDで実する.7SEG-LED は、切り替えて使用する.切り替えて使用すれば実際に点灯している7SEG-LEDは,一つだけとなり省電力化を図ることができる.また、情報量も4ビット+2ビット(選択用データ)の計6ビットで4桁×4ビットより少なくてすむ. ブロック図 ブロック図: ステート表示 LED: スタート時モード選択用 切り替えスイッチ: モード遷移用 押しボタンスイッチ: 敗北時…L O S E と表示する. 超音波測定モード…4桁測定距離表示 通常・テストモード…1桁モード表示、3桁ステート表示 7SEG−LED4桁: 基本仕様 MAN-MACHINEINTERFACEの機能及び仕様 20kHz 最大周波数 100count カウント/回転 90°e±45°e 位相差 2チャンネル チャンネル数 5mA 最大出力電流/チャンネル 50ns 下降時間 250,000rad/s^2 最大加速度 200ns 立ち上がり時間 ≦0.05gcm^2 コード・ホイール慣性モーメント TTLコンパチブル 出力信号 -20/+85℃ 使用温度範囲 5.0V±10% 供給電圧 ロータリーエンコーダ (3)ロータリーエンコーダーの個別データ -20/+80℃ 使用温度範囲 6000rpm 推奨入力回転数 90g 重量 <0.5° 平均バックスラッシュ/段 2.25Nm 最大トルク(断続) 49N 最大許容挿入力 0.98Nm 最大トルク(連続) 49N 最大許容スラスト荷重 16:1 減速比 max.0.05mm スラスト型 76% 効率 0.02mm ラジアル型 176N 最大許容ラジアル荷重 ボールベアリング ベアリング 2段 段数 直線歯 プラネタリギアヘッド プラネタリアギアヘッド GP026A037-0016B1A00A 製品名 Themaxonmotor (2)ギアボックスの個別データ 1.24K/W 熱抵抗(ローター/ハウジング間) 600mA 最大連続電流 5.6K/W 熱抵抗(ハウジング/周囲間) 4400rpm 最大許容回転数 0.12mH 端子間インダクタンス 1.34ohm 端子間抵抗 9.19gcm^2 ローター慣性モーンメント 5360mA 起動電流 4.63msec 機械的時定数 21.56mA 無負荷電流 585rpm/V 回転数定数 19.24rpm/mNm 回転数/トルク勾配 16.3mNm/A トルク定数 87.6mNm 停動トルク 76% 最大効率 4080rpm 無負荷回転数 22080mW 公称電圧時最大出力 7.2V 公称電圧 9.78mNm 最大連続トルク 8W 定格出力 モーターデータ RE025-055-34EBA201A 製品名 Themaxonmotor (1)モーターの個別データ 61.5% 効率 36.9% 効率 49.4% 効率 2.38W 出力 7.20W 出力 6.30W 出力 538mA 電流 2714mA 電流 1771mA 電流 237rpm 回転数 131rpm 回転数 177rpm 回転数 0.10Nm トルク 0.53Nm トルク 0.34Nm トルク 最大効率時 最大出力時 最大連続電流時 製品名 Themaxonmotor 130g 重量 7.2V 端子間電圧 25.0℃ 周囲温度 53.90mA 無負荷電流 76% ギア効率 1.34ohm 端子間抵抗 16.00:1 ギア減速比 16.30mNm/A トルク定数 GP026A037-0016B1A00A ギア型番 RE025-055-34EBA200A モーター型番 製品名 Themaxonmotor 駆動部は、競技主宰者(学科)から支給されるモータ・ギア・ロータリーエンコーダーが一体になったmaxonモーターを使用する。 モータ・ギア・ロータリーエンコーダ    MPU: 各センサ及び過去のデータに基ずきMIRSの行動を決定し、各ブロックを制御する。 232C:リモコン操作の入出力や、デバッグ(68Kの内部ステータスを返す)のためのインターフェイス(MMIの一部)。 MMI: テストモード、競技モード等への切替、追跡時のLED表示、7セグメントLED、START,AVORT等で人とマシンの間の情報を取り持つ装置。 M  : PWMや加速度制御装置を用いてモータを制御する足まわり関係の装置一式である。 RE : タイヤの回転数から自分の位置を確認させるための装置である。 TS : 自機に何かが接触したことを知らせるためのセンサである。 IS : 相手を確認、追跡するまたは後部のセンサに反応したときは回避するためのセンサである。 SS : 距離測定をして相手を補足または自機の位置補正を行うためのセンサである。 次にこれらに示された各ブロックの詳細説明を添付する。 3.各ブロックの詳細説明 上記の各ブロックはソフトウェアにより制御されている。ソフトウェアはこれら各ハードウェアらの情報を元に我々の意図するシステム動作を実現すべく作成される。(ソフトは別資料を後日作成する。) なお今後各ブロックは(:)以降に示されるように表記する。 情報処理部(MPU:MPU) RS−232C(RS-232C:232C) マン・マシンインターフェイス(ManMachineInterface:MMI) 駆動部   (Moter:M) ロータリーエンコーダー (RotaryEncoder:RE) タッチセンサー(TouchSensor:TS) 赤外線センサー(InfraredraysSensor:IS) 超音波センサー(Supersonicwave Sensor:SS) 本システムは以下の各基本ブロックによって構成されている。 2.システム基本機能定義 本書は我々のチームのMIRSにおけるシステムの各機能を明確且つ具体的に記することを目的とし、システムの各ブロック間及びソフトウェア−ハードウェア間におけるインターフェイスを明確に定義づけ、詳細設計書への橋渡しとなるようにする。 1.目的 システム基本機能 ※詳細は、仕様書(UserManualIP-Digital48、IP-DualPI/T)参照 POWER:DC+5[V]220[mA] TIMER:Two24bitSYNCHRONOUScounters singlebufferedinput,bi-directional,bitI/O doublebufferedinputandoutput,non-latchedinput, 8/16bit 48DigitallinesDATATRANFERMODES: PARALLELI/O: LSI:TwoMC68230PI/T (IndustryPack)の一種で、MC68230PI/Tを2個搭載している。 IP-Digital48ボードは、VIPC310に搭載されるIP IP-Digital48ボード: ※詳細は、仕様書(UserManualVIPC310)参照 POWER:DC+5[V]360[mA] twogreenLEDs Frontpanelindicators: IRQ1,IRQ3,IRQ4,IRQ6 VME-businterrupts: I/Osize:512Kbytes A24/D16 IPI/OMapping: A24/D16 IPMemoryMApping: RevisionC.1 VME-busConformance: VIPC310ボードは、IP(IndustryPack)を二つ搭載することが出来、INPUT/OUTPUT、割り込みといった機能がある。 VIPC310ボード: ボード、及びIP-Digital48から構成される。 構成:I/Oボードは、VIPC310と、VIPC310上に搭載されるロータリエンコーダ I/Oボード 最高速度1[m/s]以下となる。 このときの加速度は、1.33[m/s2]以上、 ギヤ比は、59.45以上とする。 本体の重量3.5[kg]としたときの ギヤ比は、加速を重視する。 ギヤ比の設定 通常モード・ペナルティ戦モード・テストモード・リモコンモードを有すること 各モードの動作については5章・10章及び11章で述べる. 動作モード MIRS競技規定に適合するもの. 勝敗判定装置 超音波距離計測機能×3,赤外線センサ×8,ロータリエンコーダ×2. 情報収集機能 1m/s 最大走行速度 PWM制御による2輪独立駆動方式 駆動系制御方式 VSBC1(PEP社製).詳細は8章を参照. MPU 制御系 20W以下.(5V,3A 電源回路の制限による) 駆動系 36W以下.(7.2V1700mAhのNi-Cd電池の制限による) 消費電力 20分の連続運転が可能な電源容量を有すこと 駆動系と制御系は電気的に完全に分離されており,各消費電力は 電源 25cm(縦)×25cm(横)×35cm(高さ) 以内であること. 大きさ 5Kg以内 重量 3.緒言  本システムは、競技主宰者(学科)より貸与される、MPU及びI/Oボードを用い、自律的に行動する小型知能ロボットを実現する.本システムの移動は2つの車輪で行い、PWM制御による2輪独立駆動方式とする.情報収集機能として、超音波距離計測機能・赤外線探知機能・車輪の回転数を計測する機能・接触検知機能を有しており、これらから得られた情報をもとに、後に述べる行動計画に基づく動作をソフトウェアにて実現する.本システムの大きな特徴は、RS−232Cを介して外部端末より人間が操作できる機能(リモートコントロール機能)を持ち、その行動をMIRS競技において再現できることである。また,すべての事項はMIRS競技規定に適合するよう設計されている. 2.システム概要 第5班の作成する自律型小型知能ロボットの基本仕様を記述する.  本仕様書はMIRS競技規定に基づき、我々1994年度MIRS開発チーム 1.目的 外観図(左右) 外観図(後ろ) 外観図(前) 外観の特徴は、赤外線センサによる後方からの相手機の発見、前方および左右の超音波センサによる広範囲な障害物探索にある。 本MIRSの寸法は、幅25[cm]×奥行き25[cm]×高さ30[cm]である。 <外観図> ロータリ・エンコーダは、タイヤの回転量をパルス数に変換する。パルスはカウンタによってカウントされCPUの要求に応じてカウント値を出力する。駆動輪が逆転の時にはカウンタはダウンカウントし、0以下になるとカウント値は2の補数表示となる。また、データ出力は8ビットのパラレルデータを2回に分けて出力する。CPUでカウント値から左右それぞれのタイヤの回転数を計算し、自機MIRS座標位置・方向及び速度を測定する。 2.機能 VPRO’94 ロータリ・エンコーダ・ボード 光電式ロータリ・エンコーダ(インクリメンタル型) 2個 1.使用部品 ロータリ・エンコーダ  このモードはラジコンのようにいろいろな動きをリモコンによって操作できるようにしたものである。MIRSはRS−232Cで外部端末から送られてくる行動データーに基づき、リアルタイムで動作する。この場合MIRSは自律行動をしない。このモードはペナルティ戦や初期モードその他においてかなりの威力を発揮するものと期待をかけている。 4 リモコンモード  このモードはペナルティ戦に備えたものである。ペナルティー戦では通常モードと異なり、MIRSを試走させた時の最速の行動データを用い相手機の勝敗判定装置を押す。 3 ペナルティモード  このモードは各センサー、モジュール、メモリーなどを検査するためのモードである。このモードは、RS−232Cを介して外部端末とMIRSを接続して行う。外部端末より各テストコマンドをRSー232Cを介して発行し、MIRSはそのコマンドに基づき各部分を自己診断、テストを行い再度RS−232Cを介して外部端末に結果を返す。 2 テストモード このモードは勝敗判定装置が押されたとき、割り込みにより動作する。このモードでは”LOSE”とLEDに点灯してモーターを停止する。 (vi)停止モード  また、後ろに設置した赤外線センサが(自機の発信する)赤外線を捉えたときは、相手機が自機後ろにいる可能性が大きいので全速前進して逃げる。 回避モードは、MIRSに取り付けられたタッチセンサー、もしくはMIRS後面の赤外線センサーに反応があったとき、割り込みにより動作する。このモードは相手機や壁との衝突を防ぐためともう1つ相手機の追跡から逃れるためのものである。まず、障害物の回避はCPUが自機位置の座標を計算しながら動いているので起こることはないはずである。しかし、もしタッチセンサが触れてしまった場合は、相手か壁かを判断して回避する。壁の場合は壁と自機とある程度距離を取り、その場で回転して回避する。回転は、タッチセンサの左側が触れた時は右方向に、右側が触れた時は左方向に行なう。相手機の場合は相手との距離を取り、相手機の方向に向き直る。 (v)回避モード このモードはロータリエンコーダによる自機座標の測定値と超音波センサによる測定値の間に誤差が生じてくるので、ある程度誤差が大きくなった場合にそれを補正するものである。誤差の修正は、競技開始から積算した走行距離が一定値を越えた場合と、急激な加速の後に行う場合がある。 (iv)修正モード 反応した方向に90度回転し、追跡する 7.側面が反応した場合 すぐ目の前にいると判断し、前進する 6.正面のみ反応した場合 左斜め前方にいると判断し、左に曲がりながら追跡する 5.左が反応した場合 やや左寄りにいると判断し、左に寄りながら追跡する 4.正面、左が反応した場合 右斜め前方にいると判断し、右に曲がりながら追跡する 3.右が反応した場合 やや右寄りにいると判断し、右に寄りながら追跡する 2.正面、右が反応した場合 前方にいると判断し、前進する 1.3つ全て反応した場合 <赤外線センサに反応があった場合> このモードは探索モードで相手が捕足された時に入るモードである。この追跡モードでは超音波センサ・赤外線センサを用いて追跡を行う。前方に3つの赤外線センサを設置してあるので、相手が逃げてもかなりの確率で追跡できる。但し、相手機がその場で回転した場合など見失ってしまう場合もあるから、そのときはまだ近くにいる可能性が高いのでその場で1回転し、それでも見つからなければ探索モードに戻る。赤外線センサを用いての追跡は以下のとおり行う (iii)追跡モード 探索モードは、回転・待機等の動きを用い、超音波センサ・赤外線センサによって相手の位置をつかむモードである。超音波センサが左右・前方に付いているので、相手機を捉えやすい。自機からの距離をつかんだ後、相手の位置に自機を移動させ、相手機を追跡する。手順を以下に示す。 (ii)探索モード 相手は必ず自分の真正面にいるので、開始と同時に猛スピードで相手の後ろに回りこみ後ろをつく。相手も動くのでこれで捕まるとは思わないが、その場に待機するMIRSや故障して動かないMIRSに対しては有効である。これで捕まらないとしても、その後の探索やすくなる。この時に使用する行動データは、リモコンモードによって実際に走らせたときに記録される最速のデータである。  このモードは、スタートスイッチをおされた直後に入るモードである。この初期モードでは各変数のセットなどの初期設定をした後、MIRSの最初の行動である突撃(検討中)行動に入る。 (i)初期モード このモードは、MIRS自身に搭載されるCPUとそのプログラムによって自ら測定したデータを用い、人間が操作しなくとも自律的に行動するモードである。このモードは、実際の競技において使用される 1.通常モード 停止モード 回避モード 修正モード 追跡モード 探索モード 初期モード 更に通常モードは以下のように分けられる。 リモコンモード ペナルティーモード テストモード 通常モード 本MIRSのモードには次のものがある。 動作モードの内訳 WedJan25th1995  この電源は駆動用である。先に7.2Vは5Aと書いたが、この電圧は直接バッテリーから取り出すので容量は特に気に留めない。この電源系において、注意すべき点は電流容量が大きいので配線のコードを太めにすることと、他の部分へのノイズ対策である。 ・DC+7.2V  この電源はRS−232C用である。しかし、RS−232Cは競技中には使用しない。だから7.2Vの電源から12Vを作り出す大変な技術を用いなくても、外部から供給することができる。したがって+12Vの電源は、外部の家庭用電源や安定化電源から作り出してMIRSに供給する。 ・DC±12V  またMIRSに搭載される電源は7.2Vのニッカドバッテリーが2本である。MIRSでは駆動部にモーターを使用しているので、これからのノイズを防ぐため駆動部とMPU周辺は電源を別にする。  +5Vの電源を設計するにあたって、注意しなければならないことは損失のことである。MIRSに搭載される電源は7.2Vであるからシリーズレギュレーター(入出力間電圧差3V)を用いようとしても5Vを取り出すのは不可能である。そのため低損失型レギュレーター(入出力間電圧差が0.6〜1.0Vで済む)のSI3000VやSTR9000シリーズを使用する。  まずDC5Vは、MPUやその他のボードなどにかかせない電源である。MPUで600mA使用するので、残りの1.4Aが他のボードで使用可能な電流容量である。まだ、ボードの消費する電流が詳しく判明していないため、電流容量は多めに設定してある。ボードが増えたときのことや放熱の関係(ギリギリの容量設定ではレギュレーターの発熱が多くなる)から2Aをめどに設計する。 ・DC+5V DC+7.2V (駆動モーター用)    5A DC±12V (RS−232C用) 500mA DC+5V (MPUとその周辺機器用)  2A 本MIRSの電源部に要求される容量は以下の通り。 電源について 回路構成)  回路構成は以下の通り。 3.回路構成 以上のように割り当てる。 IO-Port6(8bit)…………ロータリーエンコーダーデータ(右) IO-Port5(8bit)…………ロータリーエンコーダーデータ(左) IO-Port4(8bit)…………モータへの出力データ IO-Port3(上位2bit)……赤外線・超音波センサの切り替え IO-Port2(8bit)…………超音波センサまたは赤外線センサのデータ IO-Port1(6,5bit)………タッチセンサの押し下げ信号(割り込み) CPU-Port2(7bit)…………押しボタンスイッチの信号 CPU-Port2(6bit)…………勝敗判定装置の押し下げ信号(割り込み) CPU-Port2(5bit)…………テスト信号出力 CPU-Port2(4bit)…………テスト信号入力 CPU-Port2(下位4bit)……4bitスイッチ信号 CPU-Port1(上位2bit)……MMIの単色LEDデータ CPU-Port1(4,5bit)………MMIの7segLEDカラム切り替え CPU-Port1(下位4bit)……MMIの7segLEDデータ  CPUボードは、8bitパラレルポートを2port有しているので、これらをCPU-Port1,CPU-Port2と呼ぶことにする。またI/Oボードの48bitI/Oポートも同様に8bitずつ区切り、下位8bitよりIO-Port1〜IO-Port6と呼ぶことにする。ここでは先に述べたボードを、これらPortに割り当てる。 2.ポート割り当て  電源ボードは、MIRSの電源部と駆動用回路とロータリーエンコーダーの回路を搭載する。 (v)電源ボード  センサーボードには、超音波センサと赤外線センサの回路が搭載されている。超音波センサ(8bit×3)と赤外線センサ(8bit)の4ポートは、2bitのCPUから送られる信号によって切り替えられる。 (iv)センサーボード  マン・マシンインターフェイスボード(略してMMI)には、7セグメントLEDと単色LED(赤・緑)スイッチ(ディップスイッチと押しボタンスイッチ)、さらには勝敗判定装置の回路が取り付けられている。 (iii)マン・マシンインターフェイスボード  I/Oボードには、48bitのパラレル信号を取り扱えさらに24bitのタイマカウンタを搭載したVIPC310を使用する。 (ii)I/Oボード CPUボードは、支給されるVSBC−1を搭載する。 (i)CPUボード 1.各ボードの概要  本システムに使用する基板類はすべて1994年度卒業研究のV−Project94で開発された最新版を用いる.各部の機能性能の概略は8章で述べる.詳細はD科ネットmoon:/mirs/mirs94/vpro94の中に格納されているファイルを参照のこと. 7.エレクトロニクスハードウェア構成 用語の定義 その他 総合試験計画 トレードオフ研究 対処法の検討 発生しうる故障の分析 故障発生時の対処方の検討 重量の検討 機動性能の検討 探知性能の検討 システム性能の検討 リモートコントロールの検討 リアルタイム制御方式の検討 リアルタイムモニタの調査研究 制御方式の検討 バッテリーの調査研究 ロータリーエンコーダーの調査研究 MPU・I/Oボードの調査研究 RS−232Cの調査研究 DCモーターの調査研究 超音波センサの調査研究 赤外線センサの調査研究 部品の性能・機能の調査研究 技術的実現可能性の調査研究 マンマシンインターフェイスの検討 RS−232Cの詳細検討 DCモーターの詳細検討 タッチセンサの詳細検討 超音波センサの詳細検討 赤外線センサの詳細検討 システム基本構造の詳細検討 システム基本構造の検討 システム機能配分 メンテナンスに関する検討 ペナルティー戦における行動パターンの検討 競技戦における行動パターンの検討 行動パターンの検討 通信プロトコルに関する検討 リモートコントロール機能の検討 駆動機能の検討 情報収集機能の検討 行動決定機能の検討 状況判断機能の検討 タッチセンサ信号処理機能の検討 超音波センサ信号処理機能の検討 赤外線センサ信号処理機能の検討 基本機能の詳細検討 基本機能の検討 システム基本機能 システム基本設計 システム基本設計の内訳 MIRS開発体制図  の障害物に接触したときの回避行動に役立てる。 タッチセンサーは、MIRS本体の左右側面に取り付けて壁など (7)タッチセンサーについて  EDは、交互にMIRS内のステータスを表示するようにする。  単に示すための7セグメントLED4桁を装備している。このL  ート・リセットスイッチ、電源スイッチ、内部のステータスを簡  スイッチ(ペナルティーモードなど)追跡中を示すLED、スタ  の場として大切なものである。このボード上にはモード切り替え マンマシーンインターフェイスは、人間とMIRSの情報交換 (6)Man-MachineInterfaceについて  せるものである。(案)  はモーターの急加速を防ぐために徐々にデューティー比を変化さ  せるものであり、AAC(AutomaticAccelerationControler)  ルスの幅(デューティー比)を調節してモーターの回転数を変化さ  RS全体を移動させる部分である。PWMは、モーターに与えるパ  駆動部はモータ2個とギアセット、PWM,AACから成り、MI  分の総称で、MPUの要求に対して忠実に動けることが大切である。  部分はこの駆動部である。駆動部はAAC,PWMなどをふくむ部 なんといっても中身がどうであれMIRSの中でもっとも大切な (5)駆動部について  うにする事が大切である。(通信プロトコルの開発)  チェックなどにより大量・正確なデータが手軽にやりとりできるよ  データの形を統一・転送の効率化・通信速度の向上・データエラー  のコミュニケーションを図るために大切なものである。ここでは、  デバッグなどのためにMIRS内部のステータスを返すなど人間と  その操作情報をパソコンで吸い上げて記録するといった作業や、  なものである。リモートコントロールのようにMIRSを動かし、 RS−232Cでの通信機能は、本MIRSにとってとても大切 (4)RS−232Cについて  てくる。  る修正にどれだけ頼るかという問題にも分解能などは大きく関係し  問題になってくる。前に述べた修正モードでの超音波センサーによ  を用いる。ここでもロータリーエンコーダーの精度・分解能などが 自機の位置を測定してデータを得るにはロータリーエンコーダー (3)自機位置測定について  試験が必要である。  るためである。これは、実現可能性が薄いので可能性に関する濃密  部に自機の発する赤外線パルスが反射して返ってきたものを検出す  は、相手が後ろから接近してきた場合相手のバンパーやマシンの一   赤外線センサーは、もう一つ後面にも取り付けられている。これ  なセンサーが要求される。  相手のLEDがこちらに向いていなくても発見できるように高感度  相手が左右に居るか居ないかを判断するのでできるだけ広範囲に、  とが大切である。左右側面のセンサーについては前面のとは反対に  移動位置によってどんなデータを出力するかをはっきりとつかむこ  確に測定するために3つの感度のバランスをうまく調整し、相手の  が大きなウエイトとなってくる。相手の左右へのズレをすばやく正  用されるので、3つ取り付けられたセンサーの感度の調整というの  手の光源を追い、勝敗判定装置を押すという重大な任務の最中に使  面のセンサーについては、3つ取り付けられたセンサーによって相  付け)に用いる。赤外線センサーの制作留意点は、まずMIRS前  置確認(主にMIRS側面取り付け)、相手の追跡(主に前面取り 赤外線センサーの主な役割は、相手の光源(赤外線LED)の位 (2)赤外線センサーについて  なければならない。  の精度が大きく関係してくるので分解能の調査・研究は念密に行わ  けの誤差が出たら修正モードに移すかという条件設定にもセンサー  生じる誤差を補正すること(修正モード)にも用いるので、どれだ   また、超音波センサーは自機のロータリーエンコーダーによって  た指向性の問題などを実験によって追求しなければならない。  題が非常に大きく関わってくる。どれだけの精度が得られるか、ま  を行うために取り付けるものである。従って分解能という精度の問 超音波センサーは主に、壁・相手などの障害物までの距離の測定 (1)超音波センサーについて タッチセンサーについて Man-MachineInterfaceについて 駆動部について RS−232Cについて 自機の位置測定について  赤外線センサーについて  超音波センサーについて  内容 システム基本機能の詳細 1994年度後期D科5班 MIRSschedule MIRS開発にあたり、MIRS開発の指針となる事項をまとめる。 MIRS開発計画書の目的 それぞれのタイヤを独立駆動させ、様々な動きをPWM制御によって可能にする。 <駆動部> LEDや7セグメントにシステムの状態を出力し、人間との通信をはかる。また、パソコンなどにより人間が命令を与える際にも用いる。 <マンマシンインターフェース> デバッグやリモコン操作などをする際にパソコンとMIRS間をつなぐときに用いる。 <RS−232C> タイヤの回転数により競技場内での自機位置を把握する。これにより相手や壁との衝突を防ぐ事が出来る。 <ロータリエンコーダ> 障害物との接触を防ぐために用いる。 <タッチセンサ> 相手の光源より発せられる赤外線をキャッチして追跡を行うために用いる。もう一つ、我がMIRSには回避を行うためのものとしても用いられる。 <赤外線センサ> 発振機より超音波を発してそれが受信機にはいってくるまでの時間を計る事により、障害物(相手、壁)との距離を測る。探索においてはこの超音波探索が主となる。また、競技内での自機位置の座標補正を行う。 <超音波センサ> システムの基本機能 すなわち『simpleisbest』を基に設計を考える。 優勝を目的とし、メンテナンスの良さを考え各部門の簡略化に重点を置く。 システム設計方針    ペナルティーモード・テストモード・リモコンモード また、マンマシーンインターフェイス内のスイッチにより以下のモードに切り替えることが出来る。    回避モード・停止モード    初期モード・追跡モード・探索モード・修正モード 本システムは以下のモードを有する。 モードについて 背面部に赤外線センサーを取り付け、回避行動に役立てる。 モーターに積分回路を設けてスリップが少なくなるようにする。 状況により速度が変えられるようにする。 モジュール化をし、インターフェイスの規格を定める。 RSー232Cを用いて人間が操作できるようにする。 システムの特徴 インターフェイスを確立し、相互のコミュニケーションを図る。 無駄を無くし素早い動きを実現する。 既成概念を打ち破り、画期的なアイデアを取り入れる。 本開発システムのコンセプトを、以下の3つにまとめる。 開発システムのコンセプト 競技規定を満足する小型知能ロボット(MIRS)の設計・製作を行い、MIRS競技において、優勝すること。 MIRS開発目的 MIRS概観図 その他は、標準MIRSに準ずる。 タッチセンサは予備のため左右を覆うように付ける。 超音波センサは前方、左右3ヶ所に1つずつ付ける。   赤外線センサは前方に3つ、左右に2つずつと後ろに1つの合計8つ用いる。 本MIRSの概観を次に示す。 システムの概要 競技会において、後部の赤外線センサにノイズが入り、誤動作を起こしたので、改善する必要がある。 ・残された問題点 詳細は/shosai/soft及び/programにあるファイルを参照の事。 作業は完了した。 ・ソフトウェア 詳細は/shosai/eledにあるファイルを参照の事。 作業は完了した。 ・エレクトロニクス 詳細は/shosai/mach2にあるファイルを参照の事。 作業は完了した。 ・メカニクス MIRS9405 完了報告書 22xh林 21wr_rom林 20makefile林 19make2林 18monent.s林 17mirx_rom.mak林 16mirx_ice.mak林 15mirx.mak林 14table.h林 13m9405.h林 12iodef.h林 11mirx_rom.cmd林 10mirx_ice.cmd林 9mirsx.cmd林 8taskini.c林 7task05.c林 6task04.c林 5task03.c林 4task02.c林 3task01.c林 2task00.c林 1mirx.c林 項目担当者 目次 プログラム(リアルタイムモニタ使用) 1994年度 MIRS開発チーム第5班 8勝敗判定装置土屋 平澤 溝口 7超音波センサ送受信回路土屋 平澤 溝口 6赤外線センサ周辺回路土屋 平澤 溝口 4ロータリエンコーダ・タッチセンサボード土屋 平澤 溝口5PD土屋 平澤 溝口 3MPC土屋 平澤 溝口 2MMIボード土屋 平澤 溝口 1I/OSubボード土屋 平澤 溝口 項目作成者 目次 エレクトロニクス試験成績書 MIRS開発チーム第5班 1994年度 11 タッチセンサ 久米 10超音波センサ平澤 溝口 9赤外線センサ平澤 堀内 8PWM制御冨岡 久米 7MPU林 6重量冨岡 5ギヤ比の設定杉山 4電源土屋 3DCモータ冨岡 杉山 2バッテリー土屋 1RS−232C溝口 項目担当者 目次 MIRS調査検討報告書 MIRS開発チーム第5班 1994年度 11 総合試験計画 土屋 10リモートコントロール機能土屋 9ソフトウェア構成林 8−10RS−232Cインターフェイス土屋 冨岡 溝口 8−9PWM制御機能土屋 冨岡 8−8モータ・ギア・ロータリーエンコーダ全員 8−7タッチセンサ久米 8−6赤外線センサ平田 8−5超音波センサ平澤 溝口 8−4MAN−MACHINE INTERFACE林 8−3I/Oボード全員 8−2MPUボード土屋 林 8−1電源冨岡 林 溝口 土屋 8機能・性能冨岡 林 溝口 7エレクトロニクスハードウェア構成土屋 6構造概要林 平田 5動作モード土屋 平澤 堀内 4外観平澤 溝口 3緒言平田 2システム概要平田 1目的平田 項目担当者 目次 MIRS基本設計仕様書 MIRS開発チーム第5班 1994年度 8MIRS開発スケジュール溝口 7MIRS開発体制平田 6システム基本設計の内訳林 5システムの基本機能の詳細土屋 4システムの基本機能平沢 3システム設計方針富岡 2開発システムの概要久米 1MIRS開発計画書の目的堀内 項目担当者 目次 MIRS開発計画書 1994年度 MIRS開発チーム第5班 ペナルティモードを選択したことを示す。 ペナルティモード信号 PENALTY テストモードを選択したことを示す。 テストモード信号 TEST 回避動作をしていることを示す。 回避動作信号 TOUCH 光源追跡をしていることを示す。 光源追跡信号 LIGHT どの赤外線センサが感知したのかをを示す信号。 光源方向データ LDIR 光センサが感知したのを示し、光源追跡を、開始する。 赤外線センサONデータ LMON PMM回路に左モータ速度データを送る。 左モーター速度データ PWML PMM回路に右モータ速度データを送る。 右モーター速度データ PWMR ENDM7 ENDM6 ENDM5 ENDM4 ENDM3 EMDM2 各動作モジュールの終了信号。 モード終了サイン ENDM1 ACT7 ACT6 ACT5 ACT4 ACT3 ACT2 行動計画モジュールによって、ACT1〜ACT7に指令信号が送られる。 移動指令データ ACT1 タッチセンサーが押された方向と自己位置を回避動作モジュールに送る。 タッチセンサー方向信号 TDR タッチセンサーがおさた事を示す。 タッチセンサーONデータ TMON 〃 左車輪距離データ LROTARYL ロータリエンコーダ計測データ作成モジュールから距離データを送る信号。 右車輪距離データ LROTARYR 左ロータリエンコーダの回転数を送る信号。 左車輪カウンタデータ PROTARYL 右ロータリエンコーダの回転数を送る信号。 右車輪カウンタデータ PROTARYR 超音波の計測データを送る。 超音波センサ計測データ LSUPER 超音波センサのカウントデータ信号。 超音波センサ計測信号 PSUPER CHMO3 CHMO2 各モードのSTARTをさせる。 モード選択信号 CHMO1 超音波センサを起動させる信号。 超音波センサ制御信号 SSCONT ソフトの行動計画をマンマシンI/Fモジュールに送る信号。 状態データ LSTATE 現在の動作状態をマンマシンI/Fボードに示す信号。 状態信号 PSTATE デップスイッチで押された信号を送る。 ディップスイッチデータ LMODE I/Fボードからの状態を示す信号。 ディップスイッチ信号 PMODE 現在の自機位置を示す信号。場合によっては、相手機の位置もしめす。 現在体位データ POSTURE 行動計画に体位を記録させる信号。 行動計画起動信号 MTIME タイマ割り込みハンドラから送られる信号。(超音波センサとロータリエンコーダに信号が振り分けられる。) タイマ割り込み制御信号 LTIME タイマ割り込みから来る信号。 タイマ割り込み信号 PTIME スタートスイッチが押されたことを示す信号。 スタート信号 START セットアップで決めたモードデータを行動計画に送る。 モードデータ MODE 初期化が終了した時点で送られる信号。 イニシャライズ終了サイン SYIN 電源スイッチが入ったときに送られる信号。 PowOn信号 POWON 内容 名称 記号 2 信号一覧表 詳細設計書(ソフトウェア)に戻る math.h数学関数定義 m94_ent.src m94_tst3.cテスト用プログラム(赤外線) m94_tst2.cテスト用プログラム(超音波) m94_tst1.cテスト用プログラム(走行) m94_test.cテスト用プログラム(走行) m94_055.c m94_054.c m94_053.cポート初期化 m94_052.c同上(ロングワード単位) m94_051.c同上(符号無しバイト単位) m94_050.cポート出力(符号付きバイト単位) m94_049.c同上(符号無しバイト単位) m94_048.cポート入力(符号付きバイト単位) m94_047.cPI/Tタイマー・カウンター設定 m94_046.cスタート・スイッチ入力待ち m94_045.c時間稼ぎ(タイマ割り込み使用) m94_044.c時間稼ぎ m94_043.cMIRSコマンド入力 m94_042.cMIRS状態LED表示 m94_041.c同上(超音波受信) m94_040.c同上(超音波送信) m94_039.c同上(全チャンネル超音波測定) m94_038.c同上(超音波測定) m94_037.c同上(距離算出) m94_036.c同上(垂直方向距離算出) m94_035.c同上(水平方向距離算出) m94_034.c同上(壁距離算出) m94_033.c同上(相手方位算出) m94_032.c同上(センサー方位角算出) m94_031.c超音波計測関係モジュール(設定距離確認) m94_030.c同上(光照度信号A/D変換) m94_029.c同上(光照度データ検出) m94_028.c同上(光センサー方位角算出) m94_027.c同上(光源方向演算) m94_026.c光センサー関係モジュール(初期化) m94_025.c同上(モータ指令データ・リミッタ) m94_024.c同上(モータ指令データ) m94_023.c同上(エンコーダ・データ符号変換) m94_022.c同上(ロータリ・エンコーダ) m94_021.c同上(姿勢角範囲設定) m94_020.c同上(運動制御) m94_019.c同上(自己状態演算) m94_018.c同上(データ換算係数設定) m94_017.c同上(フィードバック・ゲイン設定) m94_016.c運動制御関係モジュール(制御系初期化) m94_015.c同上(MIRS停止) m94_014.c同上(行動開始) m94_013.cシステム関係モジュール(システム初期化) m94_012.c同上(システム・テスト・モード) m94_011.c同上(回避モード) m94_010.h同上(光源追跡モード) m94_009.c同上(光源探索モード) m94_008.c同上(超音波追跡モード) m94_007.c同上(超音波捜索モード) m94_006.c基本動作モード処理(リセット・モード) m94_005.c同上(タイマ割り込みINT5) m94_004.cハードウェア割り込み処理(センサー割り込み) m94_003.cシステム動作モード処理 m94_002.c状況判断処理 m94_001.cメイン関数 m94.hヘッダファイル ファイル名 内容 MIRS9404プログラム MIRS9404成果物へ戻る プログラムを見る 4モジュールフローチャート一覧渋田,山本 3モジュール一覧渋田,山本 2信号一覧表渋田,山本 渋田,山本 1Software基本設計仕様について 内容登録者 94DS-4-E-2001 詳細設計書(ソフトウェア) > 10 ペナルティモジュール 注意:多数のフローチャートファイルは消失していました... 渋田,山本 10ペナルティモジュール 9フローチャート(メイン関数)渋田,山本 8赤外線追跡モジュール2渋田,山本 7赤外線追跡モジュール1渋田,山本 6行動計画モジュール渋田,山本 渋田,山本 5超音波センサ起動モジュール 4超音波計測データ作成モジュール渋田,山本 3接触方向演算・回避動作モジュール渋田,山本 2回避動作モジュール渋田,山本 渋田,山本 1イニシャライズモジュール 内容登録者 4 モジュールフローチャート一覧 > 9 フローチャート(メイン関数) > 8 赤外線追跡モジュール2 > 7 赤外線追跡モジュール1 6 行動計画モジュール 5 超音波センサ起動モジュール 4 超音波計測データ作成モジュール 3 接触方向演算・回避動作モジュール 2 回避動作モジュール 1 イニシャライズモジュール 渋田,山本 7−7初期化モジュール 渋田,山本 7−6回避動作モジュール 渋田,山本 7−5光源追跡動作モジュール 渋田,山本 7−4追跡動作モジュール2 渋田,山本 7−3追跡動作モジュール1 渋田,山本 7−2待ち伏せ動作モジュール 渋田,山本 7−1PWM駆動モジュール 7駆動用モジュール群  渋田,山本 6−2モード指定モジュール 渋田,山本 6−1体位演算記録・確認モジュール 6モニター系モジュール群  渋田,山本 5−2接触方向演算・自己状態確認モジュール 渋田,山本 5−1タッチセンサ起動モジュール   5タッチセンサ系モジュール群 渋田,山本 4−2光源方向演算モジュール 渋田,山本 4−1赤外線センサ起動モジュール   4赤外線センサ系モジュール群 渋田,山本 3−2超音波センサ起動モジュール 渋田,山本 3−1超音波計測データ作成モジュール 3超音波センサ系モジュール群  渋田,山本 2−2体位演算モジュール 渋田,山本 2−1エンコーダ計測データ作成モジュール   2ロータリーエンコーダ系モジュール群 渋田,山本 1−7ペナルティモジュール 渋田,山本 1−6テストモジュール 渋田,山本 1−5タイマー割込みハンドラ 渋田,山本 1−4マンマシンI/Fモジュール 渋田,山本 1−3行動計画モジュール 渋田,山本 1−2セットアップモジュール 渋田,山本 1−1イニシャライズモジュール 1共通モジュール群  内容登録者 3 モジュール一覧  改訂記録 PWM駆動モジュールに情報を送る。 行動計画モジュールの命令により、初期動作をするように 処理 PWM回路 PWM駆動モジュール 行動計画モジュール 関係するハードウェア 関係するモジュール 移動指令データ Output モード選択信号 Input 製作担当 C言語 使用言語 初期化モジュール モジュール名 ソフトウェア・モジュール仕様書7ー7 改訂記録 情報を送る。 接触方向データにより、回避動作をするようにPWM駆動モジュールに 処理 タッチセンサ PWM回路 行動計画モジュール PWM駆動モジュール 接触方向演算モジュール 関係するハードウェア 関係するモジュール 回避行動信号 移動指令データ Output タッチセンサ方向信号 Input 製作担当 C言語 使用言語 回避動作モジュール モジュール名 ソフトウェア・モジュール仕様書7ー6 改訂記録 情報を送る。 光源方向データにより、光源追跡をするようにPWM駆動モジュールに 処理 赤外線センサ PWM回路 行動計画モジュール PWM駆動モジュール 光源方向演算モジュール マンマシンI/Fモジュール 関係するハードウェア 関係するモジュール 光源追跡信号 移動指令データ Output 光源方向データ Input 製作担当 C言語 使用言語 光源追跡動作モジュール モジュール名 ソフトウェア・モジュール仕様書7ー5 改訂記録 PWM駆動モジュールに情報を送る。 行動計画モジュールの命令により、追跡動作2モードの動作をするように 処理 PWM回路 PWM駆動モジュール 行動計画モジュール 関係するハードウェア 関係するモジュール 移動指令データ Output モード選択信号 Input 製作担当 C言語 使用言語 追跡動作モジュール2 モジュール名 ソフトウェア・モジュール仕様書7ー4 改訂記録 PWM駆動モジュールに情報を送る。 行動計画モジュールの命令により、追跡動作1モードの動作をするように 処理 PWM回路 PWM駆動モジュール 行動計画モジュール 関係するハードウェア 関係するモジュール 移動指令データ Output モード選択信号 Input 製作担当 C言語 使用言語 追跡動作モジュール1 モジュール名 ソフトウェア・モジュール仕様書7ー3 改訂記録 PWM駆動モジュールに情報を送る。 行動計画モジュールの命令により、待ち伏せモードの動作をするように 処理 PWM回路 PWM駆動モジュール 行動計画モジュール 関係するハードウェア 関係するモジュール 移動指令データ Output モード選択信号 Input 製作担当 C言語 使用言語 待ち伏せ動作モジュール モジュール名 ソフトウェア・モジュール仕様書7ー2 改訂記録 行動指令によりPWM回路に速度データを送る。 処理 PWM回路 初期化モジュール 回避動作モジュール 光源追跡動作モジュール 待ち伏せ動作モジュール 旋回動作モジュール 追跡動作モジュール1,2 関係するハードウェア 関係するモジュール 左モーター速度データ 右モーター速度データ Output 移動指令データ Input 製作担当 C言語 使用言語 PWM駆動モジュール モジュール名 ソフトウェア・モジュール仕様書7ー1 改訂記録 決めてその行動をするモジュールに信号を送る。 現在位置とそれまでにとった行動やモードにより、次に行うモードを 処理 初期化モジュール 回避動作モジュール 光源追跡モジュール 待ち伏せ動作モジュール 追跡動作モジュール1,2 体位演算記録・確認モジュール タイマ割込みハンドラ マンマシンI/Fモジュール セットアップモジュール 関係するハードウェア 関係するモジュール モード指定信号 Output モード指定信号 行動データ Input 製作担当 C言語 使用言語 モード指定モジュール モジュール名 ソフトウェア・モジュール仕様書6ー2 改訂記録 現在どこを向いているのかを確認し、モード指定モジュールに情報を送る。 現在の位置を確認して、そこまで行くのにどのような経路をたどり、 処理 モード指定モジュール 体位演算モジュール 関係するハードウェア 関係するモジュール 行動データ Output 体位データ Input 製作担当 C言語 使用言語 体位演算記録・確認モジュール モジュール名 ソフトウェア・モジュール仕様書6ー1 改訂記録 ただし、光源追跡モードに入っているときは光源追跡モードの方が割込みレベルが高いので、それを優先させる。 回避動作モジュールに信号を送る。 タッチセンサの反応とその方向により、回避動作を考えて 処理 タッチセンサ 回避動作モジュール 関係するハードウェア 関係するモジュール タッチセンサ方向信号 Output タッチセンサON信号 Input 製作担当 C言語 使用言語 接触方向演算・自己状態確認モジュール モジュール名 ソフトウェア・モジュール仕様書5ー2 改訂記録 タッチセンサの反応によりタッチセンサONデータを接触方向演算・自己状態確認モジュールに送り、タッチセンサを起動させる。 処理 タッチセンサ 接触方向演算・自己状態確認モジュール 関係するハードウェア 関係するモジュール タッチセンサONデータ Output 接触信号 Input 製作担当 C言語 使用言語 タッチセンサ起動モジュール モジュール名 ソフトウェア・モジュール仕様書5ー1 改訂記録 光源追跡動作モジュールに信号を送る。 赤外線センサの反応した方向により光源の追跡方法を決め、 処理 赤外線センサ 光源追跡動作モジュール 赤外線センサ起動モジュール 関係するハードウェア 関係するモジュール 光源方向データ Output 赤外線センサON信号 Input 製作担当 C言語 使用言語 光源方向演算モジュール モジュール名 ソフトウェア・モジュール仕様書4ー2 改訂記録 赤外線の反応により赤外線センサON信号を光源方向演算モジュールに送り、赤外線センサを起動させる。 処理 赤外線センサ 光源方向演算モジュール 関係するハードウェア 関係するモジュール 赤外線センサON信号 Output 赤外線信号 Input 製作担当 C言語 使用言語 赤外線センサ起動モジュール モジュール名 ソフトウェア・モジュール仕様書4ー1 改訂記録 超音波を発進させる。 タイマ割込みハンドラからのタイマ割込み信号により、 処理 超音波センサ 超音波計測データ作成モジュール タイマ割込みハンドラ 関係するハードウェア 関係するモジュール 超音波センサ制御信号 Output タイマ割込み制御信号 Input 製作担当 C言語 使用言語 超音波センサ起動モジュール モジュール名 ソフトウェア・モジュール仕様書3ー2 改訂記録 求めた距離とその方向の情報を体位演算モジュールに送る。 壁や相手機の距離を計算する。 超音波を出してから戻るもでの時間により 処理 超音波センサ 体位演算モジュール 関係するハードウェア 関係するモジュール 超音波計測データ Output 超音波センサ計測信号 Input 製作担当 C言語 使用言語 超音波計測データ作成モジュール モジュール名 ソフトウェア・モジュール仕様書3ー1 改訂記録  また、代表的な位置、姿勢をとる時には、超音波センサ計測データとの比較をとる場合もある。  左右車輪距離データから、現在の自機の位置、姿勢を演算し、体位データとして出力する。 処理 超音波センサ ロータリーエンコーダ 体位演算記録・確認モジュール 行動計画モジュール 超音波計測データ作成モジュール 基本動作モジュール群 エンコーダ計測データ作成モジュール 関係するハードウェア 関係するモジュール 体位データ Output 超音波センサ計測データ 右車輪距離データ 左車輪距離データ Input 製作担当 C言語 使用言語 体位演算モジュール(2ー2) モジュール名 ソフトウェア・モジュール仕様書2ー2 改訂記録 モジュールへ出力する。  左右のロータリーエンコーダから右車輪カウンタデータ、左車輪カウンタデータを受け、右車輪距離データ、左車輪距離データを作成し、体位演算 処理 ロータリーエンコーダI/Fボード ロータリーエンコーダ 体位演算記録・確認モジュール 体位演算モジュール タイマー割り込みハンドラ 関係するハードウェア 関係するモジュール 左車輪距離データ 右車輪距離データ Output 左車輪カウンタデータ 右車輪カウンタデータ  Input 製作担当 C言語 使用言語 エンコーダ計測データ作成モジュール(2ー1) モジュール名 ソフトウェア・モジュール仕様書2ー1 改訂記録 する。 ペナルティモードを選択した場合、ペナルティモードの動作をするように 処理 PWM駆動モジュール セットアップモジュール 関係するハードウェア 関係するモジュール 移動指令データ Output ペナルティモード信号 Input 製作担当 C言語 使用言語 ペナルティモジュール モジュール名 ソフトウェア・モジュール仕様書1ー7 改訂記録 テスト、赤外線センサのテスト、タッチセンサのテストをする。 テストモードを選択した場合、選択肢により走行テスト、超音波センサの 処理 PWM駆動モジュール セットアップモジュール 関係するハードウェア 関係するモジュール 移動指令データ Output テストモード信号 Input 製作担当 C言語 使用言語 テストモジュール モジュール名 ソフトウェア・モジュール仕様書1ー6 改訂記録  タイマー割り込みの回数によって、処理を超音波センサ起動モジュールか、エンコーダ計測データ作成モジュールへ移す。 処理 PI/T エンコーダ計測データ作成モジュール 超音波センサ起動モジュール 関係するハードウェア 関係するモジュール 行動計画起動信号 タイマ割り込み制御信号 Output タイマ割り込み信号 Input 製作担当 C言語 使用言語 タイマー割り込みハンドラ(1ー5) モジュール名 ソフトウェア・モジュール仕様書1ー5 改訂記録 送る。  マンマシンインターフェースボードからディップスイッチ信号を受けたら、それらをディップスイッチデータに変換して、セットアップモジュールへ  光源追跡モジュールから追跡中信号を受けて、緑LED信号を出す。 処理 マンマシンインターフェースボード 光源追跡モジュール 行動計画モジュール セットアップモジュール 関係するハードウェア 関係するモジュール ディップスイッチデータ  状態信号 Output ディップスイッチ信号 状態データ Input 製作担当 C言語 使用言語 マンマシンI/Fモジュール モジュール名 ソフトウェア・モジュール仕様書1ー4 改訂記録  (6ー2)にあります。  (6ー2)の総称がこのモジュールなので、説明は(6ー1)、 *体位演算記録・確認モジュール(6ー1)、モード指定モジュール 処理 関係するハードウェア 関係するモジュール Output Input 製作担当 使用言語 行動計画モジュール モジュール名 ソフトウェア・モジュール仕様書1ー3 改訂記録  ディップスイッチに基づき、プログラムの初期化を行い、スタートスイッチの入力を待つ。 処理 マンマシンI/Oボード ペナルティモジュール テストモジュール 行動計画モジュール マンマシンI/Fモジュール イニシャライズモジュール 関係するハードウェア 関係するモジュール テストモード信号・ペナルティモード信号 モードデータ Output イニシャライズ終了サイン ディップスイッチデータ  Input 製作担当 C言語 使用言語 セットアップモジュール モジュール名 ソフトウェア・モジュール仕様書1ー2 改訂記録  初期化終了後、イニシャライズモジュールの終了信号としてイニシャライズ終了サインを出力し、セットアップモジュールの入力にする。 ON信号が入力され、68K I/Oボードの初期化を行なう。  パワーコントロールボードで電源スイッチを押すことにより、Power 処理 パワーコントロールボード スタートスイッチ(プッシュボタン) セットアップモジュール 関係するハードウェア 関係するモジュール イニシャライズ終了サイン Output Power ON信号 Input 製作担当 C言語 使用言語 イニシャライズモジュール モジュール名 ソフトウェア・モジュール仕様書1ー1 それぞれのモジュールから送られる信号、構成、動作等は別紙参照のこと。 *光センサを今回は使用しないので、赤外線センサのものと入れ替える。 *状況判断とそれによる行動選択(モード遷移図参照) *ソフトウェアビジビリティ(VPRO参照) CPUや作戦行動の違い等から、以下の点を変更しMIRS9404のプログラムとする。  MIRS9404では、MIRS93卒研のプログラムをベースに作成する。 1 Software基本設計仕様について ここのファイルは全てWincadファイルです。 94DS-4-M-5001 詳細設計書(メカニクス) ここのファイルは全てWincadファイルです。 94DS-4-E-1001 エレクトロニクス,インターフェイス全図 2.2.11 モーターパワーサーキットボード 2.2.10 勝敗判定装置 2.2.9 パワーディストリビューターボード 2.2.8 マンマシンインターフェイスボード(フロント) 2.2.7 マンマシンインターフェイスボード(メイン) 2.2.6 ロータリーエンコーダーボード 2.2.5 赤外線センサ外部ボード 2.2.4 超音波センサボード 2.2.3 I/OSUBボード VIPC310ボードの詳細についてはV94ーMEMO−010,020,031を照 2.2.2 I/Oボード VSBCー1ボードの詳細についてはV94ーMEMO−006を参照 2.2.1 MPUボード 2.2 各ボードの詳細 図消失 2.1 システム構成 2 システム詳細設計仕様書(エレクトロニクス) 3詳細設計書表紙(エレクトロニクス)明城 2詳細設計書(エレクトロニクス)明城 1基盤評価書不明 内容登録者 94DS-4-E-2001 詳細設計書(メカニクス) 不明 7I/OSubボード 不明 6ロータリーエンコーダボード 不明 5MPC 不明 4MMIボード 3Power Distributor不明 2赤外線センサ周辺回路不明 1勝敗判定装置不明 内容登録者 1基盤評価書    PWM回路と同様にI/Oボードの修正で赤外線の認識はされるようになった。しかし、赤外線による割り込みは検出されなかった。この原因はまだ不明である。 (結果) TMPを行う時、理想としては赤外線センサ及び赤外線周辺回路を用いて行うのだが代わりに8ビットディップスイッチを用いて簡単な試験ボードを作った方が早い。またデータの読みだしを行う試験で一番最初におかしなデータが出ることがあるがこれは68230の赤外線信号のポート設定をダブルバッファ出力にしている為であるから気にする必要はない。 7.3 赤外線センサ回路 最初はなにも反応がなかったがI/Oボードのピンの設定を直すと正常に動作した。 (結果) PWM回路のTMPは、I/OSubボードの他に可逆パワーボード、ギヤボックス、モータ、バッテリーを接続して行うと試験の結果を確認しやすい。試験内容は第一に様々な速度データを伴いモータの回転数が変化するか?である。これは、PWM信号波形をオシロスコープで観察し、得るべきDuty比の波形が得られているかを見ればいい。また目視で速度データによりタイヤの回転数が上がったり下がったりすることを確認する。二つ目に、方向データに伴いモータが正転又は、逆転するかの試験である。これは、タイヤの回転方向が方向データによって変化するかどうかを目視で確認すればいい。 7.2 PWM回路 センサ選択、送信、受信、割り込みとTMPの試験項目の全てで反応がなかった。センサ選択信号、送信信号がI/Oボードのピンからでているか、ロジアナでしらべたが、信号が出ていなかった。またCLKはでていた。I/Oボードのジャンパが間違っているか調べ直したがあっていた。プログラムもチェックしたが、正しかった。現時点で原因不明である。 (結果) 試験を行うにあたって、ICE,コンピュータ、ボード、センサ等を接続する。基板と送受信回路の取り付けかたについては超音波センサ回路取扱説明書を参  照の事。その他の接続に関しては、TMPの使用法のドキュメントを参照してください。準備が完了したら、TMPの指示に従ってセンサ選択機能、送信機能、受信機能、割り込み要求機能、カウントアンダーフロー機能の試験を行う事。回りこみ波を除去するため、あまり近い距離の計測はうまく行えないことに注意する事。 7.1 超音波センサ回路 3 TMPによる動作試験 2 導通チェック 1 部品実装チェック 検査手順 7 I/Osubボード基板評価書 "> 結果・・・異常なし はじめに赤外線センサを周辺回路のMOLEX3Pinと接続し電源をつなぐ。つぎに勝敗判定装置についている赤外線LEDを赤外線センサに近づける。このとき30cm以下で出力がhighlevel、30〜73cmで出力が不安定、73cm以上でlowlevelであればよい。(30cm〜73cmのときに出力がパルスになっているようであると74LS123が壊れている可能性あり) 2.3 結果・・・異常なし (V94-card-203参照) 導通のチェックを行なう。基板を焼くときに導線がきれる場合があるので気を付ける。 2.2 結果・・・異常なし (V94-card-303参照) 部品の配置のチェックを行なう。 2.1 検査手順とその結果 この評価書は、V94-card-103,203,303,403,403に対して適用される。 はじめに 2 赤外線センサ周辺回路評価書 "> *故障は特になし。 結果・・・異常なし (図消失) 1.7 受光素子(IS1U60)の1−3pinに電圧(+5V)を入力し、赤外線LEDに近づけ、受光素子の出力(2pin)をオシロスコープで調べ、下の図のようになっている事を確認する。 結果・・・異常なし 1.6 IC3のpinをオシロスコープで調べ、以下のような波形になっている事を確認する。 結果・・・異常なし 1.5 IC2のpinをオシロスコープで調べ、周期600μsぐらいである事を確認する。 結果・・・異常なし 1.4 C1のpinをオシロスコープで調べ、38kHz,Duty比10%ぐらいである事を確認する。 結果・・・異常なし 1.3 コネクタの3ー4pin間の+5Vの電圧を入力する。この時LEDが点灯する事を確認する。 結果・・・異常なし 1.2 コネクタの1ー2pin間の導通を調べる。この時、スイッチを押さないで導通し、押すと切れることを確認する。 結果・・・異常なし 回路図(JS.1)に従い、導通チェックをする。 1.1 評価手順と結果 1 勝敗判定装置評価書 ○ ○ ○ ○ ○ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? △ △ △ △ △ ○ ○ ○ ○ ○ 山本 ○ ○ ○ ○ ○ × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × ○ ○ ○ ○ ○ 鈴木 ○ ○ ○ ○ ○ × × × × × × × × ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 渋田 ○ ○ ○ ○ ○ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? △ △ △ △ △ ○ ○ ○ ○ ○ 堰沢 ○ ○ ○ ○ ○ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? × × × × × × × × × × × × × × ? ○ ○ ○ ○ ○ 望月 ○ ○ ○ ○ ○ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? △ △ △ △ △ ○ ○ ○ ○ ○ 武藤 ○ ○ ○ ○ ○ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? △ △ △ △ △ ○ ○ ○ ○ ○ 明城 ○ ○ ○ ○ ○ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? △ △ △ △ △ ○ ○ ○ ○ ○ 清水 8/25 8/24 8/23 8/22 8/21 8/20 8/19 8/18 8/17 8/16 8/15 8/14 8/13 8/12 8/11 8/10 8/9 8/8 8/7 8/6 8/5 8/4 8/3 8/2 8/1 7/31 7/30 7/29 7/28 7/27 7/26 7/25 7/24 7/23 7/22 7/21 7/20 7/19 7/18 7/17 ○:出席△:予備×:欠席?:必要性に応じて来る。又は自分の都合による。 4 MIRS9404夏休み計画表 このファイルはWincadファイルです。 3 MIRS部品樹形図 4夏休みスケジュール不明 3MIRS部品樹形図不明 2メカニクス総合部品表不明 1エレクトロニクス総合部品表不明 内容登録者 94DS-4-3001 MIRS9404総合部品表    メカニクス         4   M4     4   M3 ワッシャ スプリング   8   M8     4   M4 ワッシャ   16   M8     8   M4     48   M3     60   M2.3 ナット 支柱用 4   M8通しねじ(110mm)   固定用 M&P固定用アルミ板 4   M4なべ小ねじ(40mm)   固定用 超音波センサボード 4   M4なべ小ねじ(20mm)   モータ固定金具用 8   M3さら小ねじ(15mm)   バンパ用 2   M3なべ小ねじ(60mm)   固定用 タッチセンサワイヤ 2       モータ固定用 8       勝敗判定装置固定用 10       バンパ固定用 4   M3なべ小ねじ(10mm)   固定用 タッチセンサワイヤ 2   M3なべ小ねじ(30mm)   MPCボード固定用 2     超音波センサ固定用 12       赤外線周辺回路固定用 6   (5mm) M2.3なべ小ねじ   MPC固定台固定用 4       固定用 赤外線周辺回路固定台 6   (8mm) M2.3なべ小ねじ   超音波センサ固定用 12   (10mm)  M2.3なべ小ねじ   赤外線センサ固定用 10       固定用 マイクロスイッチ 2   (15mm)  M2.3なべ小ねじ   固定用 マイクロスイッチ 2   (20mm) M2通しねじ   ボールキャスタ固定用 6   M2なべ小ねじ(12mm) ねじ 備考 数量 型番 部品     1   VMEラック     1   勝敗判定装置ボード     1 B−1059−5 蝶番     3   赤外線周辺回路     5   赤外線センサボード     1   超音波センサボード   固定用 超音波センサボード 2   ボードスライド VMEラック付属   固定用 超音波センサボード 2   (40×30) アルミ板   厚さ1mm 勝敗判定装置基板用 1   (15×15×60mm) L字金具    厚さ2mm 勝敗判定装置固定用 1   (10×10×40mm) L字金具   厚さ2mm 超音波センサ固定用 6   (10×10×20mm) L字金具   厚さ5mm バッテリー固定用 4   (60×60×40mm) L字金具   固定用 ディストリビュータ マンマシン及びパワー 1   (132×180) アルミ板   勝敗判定装置用 35×60(mm) 1   塩ビ板(1mm)   赤外線周辺回路固定用 45×10(mm) 3   塩ビ板(5mm)   シャーシ(2F)用 250×230(mm) 1   塩ビ板(3mm) シャーシ(2F)   1   可逆パワー変換ボード   長さ1500mm 太さ1.5mm 1   ステンレス棒 タッチセンサ用     3 SS−5GL 接触感知スイッチ   厚さ2mm バンパ止め金具 1   (40×100) アルミ板   直径10mm 長さ56mm 4   (支柱スペーサ用) アルミ製パイプ 直径10mm 長さ250mm 2   (バンパ用) アルミ製パイプ     2 K−140−2 ボールキャスタ     2 ZD−433 ハブ      2 ZC−837 ホイール       2 クロスAA102 タイヤ      2   モータ固定用L字金具   ギア等含む 2 201AMAXON RE025-055-34EBA MAXONモータ   固定用 タッチセンサワイヤ 2   塩ビ板(1mm)   固定用 マイクロスイッチ 47×18(mm) 2   塩ビ板(5mm)   MPCボード固定台用 60×10(mm) 2   塩ビ板(5mm)   シャーシ(1F)用 250×230(mm) 1   塩ビ板(5mm) シャーシ(1F) 備考 数量 型番 部品   2 MIRS9404メカニクス総合部品表 1     VMEラック 3   74LS123   1   74LS688   3   74ALS574   1   74LS590 TTL 2   74LS684 TTL 1   7407 TTL 3   LM4572   1   74LS279   1   LM339   4 日立 HD14069UBP   1   MC4052 デコーダ 2 日立 2SK971 FET 5 SHARP IS1U60 受光素子 3   MA40B5RR マイクロホン 3   MA40B5SR スピーカー 4 SHARP GAL    16V8 GAL 1   74LS244 8bitバッファ 1   74LS279 S−Rラッチ 1   SN75453B ドライバIC 2 NEC μPD5555C タイマIC 3 航空電子 PS−10PF−D4T1−PKL1 ジャンパー 1   0Ω ジャンパー(抵抗) 4   20cm 太線(黒) 4   20cm 太線(赤) 1   40cm ケーブル 4     4芯ケーブル 3   30cm 2芯ケーブル 1     50芯フラットケーブル 1     50芯フラットケーブル 2   30cm 16芯フラットケーブル 1   40cm 50芯フラットケーブル 4   30cm 3芯フラットケーブル 1   30cm 60芯フラーブル 1   20cm 40芯フラットケーブル 2   2SC1815 トランジスタ 2   2SA1015 トランジスタ 2 OMRON LZN203 リレー 1 OMRON G6Bー1174PーUS リレー 1 OMRON G2VNー237P リレー 1 サンケン STR9005 低損失リニアレギュレータ 7 日立 1SS106 ダイオード 4   10Dー1 ダイオード 4   IS2455(100V/2,5A) ダイオード 1 SHARP PC847 フォトカプラ 1 SHARP PC817 フォトカプラ 4 MOTOROLA MC14513B デコーダ 1   74LS14 インバータシュミットトリガ 1   74LS06 インバータ 2   20ピン,7.26mm ICソケット 1   24ピン(PD4701A用)15.24mm ICソケット 2   20ピン(GAL16V8用)7.26mm ICソケット 16 MOLEX 50217ー9101 ターミナル 93 MOLEX 5103TL ターミナル 1 NEC UPD4701A エンコーダ用カウンタ 1   74LS161 4ビットバイナリカウンタ 4   74LS00 2入力NANDゲート 2   74LS10 3入力ANDゲート 4   74LS04 NOTゲート 1   74LS08 2入力ANDゲート 1 OMRON A6DR−8100 DIPスイッチ 6   SS−5GL マイクロスイッチ 1   DDK(PUSH SWITCH) スイッチ 1   MSー165/10A,125VAC スイッチ 1   MS−102 押しボタンスイッチ 1 OMRON A6B−4101 4ビットディップスイッチ 1 東芝 TLN105B 赤外線LED 1 東芝 TLRC336T 7segLED 2 SHARP GAL5EG8 Green−Led 3 SHARP GAL5HD8 Red−Led 1   15cm×6cm 基板(両面ガラスエポキシ) 1   100mm*75mm 基盤(ガラスエポキシ) 2 SUNHAYATO 250*200cm以上 基盤(片面紙フェノール) 1 SUNHAYATO 15*20cm以上 基盤(片面紙フェノール) 2 SUNHAYATO 10*20cm以上 基盤(両面ガラスエポキシ) 1 AMP DIN41612PCN10シリーズ174112ー1 VMEバス用コネクタ 2 Eagle   バッテリー用コネクタ(7,2V) 2 田宮模型 1700SCR ニッカドバッテリー7.2V 2 MOLEX 5102ー05 5ピンコネクタ 3 MOLEX 5102ー04 4ピンコネクタ 2 MOLEX 51067ー0400 4ピンコネクタ 4 MOLEX 51067ー0200 2ピンコネクタ 2   PS−16SEN−D4P1−C1 16ピンコネクタ 2   PS−50SEN−D4P1−1C 50ピンコネクタ 3 MOLEX 53259−0220 2ピンコネクタ 3 MOLEX 5046−05 5ピンコネクタ 1   フラットケーブル用2列 50ピンコネクタ(雌型) 2 MOLEX 5102ー05 5ピンコネクタ 2 AMP 1ー499506ー2 50ピンコネクタ 2 AMP 173279ー3 50ピンコネクタ 5 MOLEX 5046ー04 4ピンコネクタ 1 MOLEX 53259ー04 4ピンコネクタ 3 MOLEX 53259ー02 2ピンコネクタ 12 MOLEX 5102ー03 3ピンコネクタ 8 MOLEX 5102ー04 4ピンコネクタ 11 MOLEX 5045ー03 3ピンコネクタ 1 航空電子 PS−16PE−D4LT1−PN1 16ピンコネクタ 1 航空電子 PS−50PE−D4LT1−LP1 50ピンコネクタ 3 MOLEX 5046ー05 5ピンコネクタ 6 MOLEX 5045ー04 4ピンコネクタ 1 航空電子 PS−16PE−D4LT1−PN1 16ピンコネクタ 2 航空電子 PS−60SEN−D4P1−1C 60ピンコネクタ 2 航空電子 PS−40SEN−D4P1−1C 40ピンコネクタ 2 航空電子 PS−60PE−D4LT1−LN1 60ピンコネクタ 1 航空電子 PS−60PE−D4LT1−PN1 60ピンコネクタ 1 MOLEX 5046ー03A 3ピンコネクタ 1 航空電子 PS−40PE−D4T1−PN1 40ピンコネクタ 1   100μF コンデンサ 14 マイラ 102 コンデンサ 2 マイラ 103 コンデンサ 2 デンカイ 10μ(25V) コンデンサ 1 デンカイ 47μ(25V) コンデンサ 1 セキセラ 334(0.33μ) コンデンサ 6 マイラ 822 コンデンサ 3   4.7μ コンデンサ 47 セキセラ 104 コンデンサ 7 セキセラ 103 コンデンサ 3   0〜100K 可変抵抗 2   R 8LADDER 1k 抵抗 2   30K 抵抗 1   2.2K 抵抗 1   270 抵抗 1   1.7K 抵抗 2   220 抵抗 4   6.2k 抵抗 1   620 抵抗 4   3.9k 抵抗 2   390 抵抗 6   39K 抵抗 2   39 抵抗 6   220K 抵抗 4   1M 抵抗 1   47K 抵抗 6   1K 抵抗 1   100K 抵抗 1   5.6K 抵抗 19   10KΩ 抵抗 39   330Ω 抵抗 個数 メーカー 商品名 素子名 1 MIRS9404エレクトロニクス総合部品表 3ソフトウェア不明 2エレクトロニクス不明 1メカニクス不明 内容登録者 94DS-4-4001 完了報告書 来年からは、5班の使用したRAMをつかったデバッグを用いたほうがより優れたプログラムが出来ると思う。  プログラムの作成については、ICEの動きがあまり確実に動かないので時間がかかった。 プログラムを作った。自己座標についてはかなりうまくいった。 まず超音波モジュールについてだが、超音波センサーがうまく動かなかったので、結局超音波は使わずに赤外線と、自己座標のみで競技用の  当初の詳細設計の予定通りには、最終的には出来なかった。 3 ソフトウェア エレクトロニクス兼ソフトウェアのように、両方理解する人を最初の配分に入れたほうがいいと思う。  基板に関してはVMEラックに収納されたことによりすっきりとはしたが、取り出しにくかったり検査しにくかったりしたので、それらに改善の余地があると思われる。また検査のとき、コネクタをとったりくっつけたりしているとケーブルやコネクタ内部で断線していて、なかなかそれに気がつかなかったりしたので、ただ規定通りの基板を作成するのではなく、使い易いとか検査しやすいということを目的に考慮するべきである。今回で一番大変だったことははんだ付けの精度の低さである。これを改善するためには、基板を作成する前に一度はんだ付けの技術をあげておく必要があると思う。また、ケーブルの長さを適当に取ったために必要以上に長くて邪魔になったりしたので、MIRSの構造により長さを決定するべきである。最後に、メカニクス兼エレクトロニクスや 2 エレクトロニクス これは、シャーシの円形化に関しても同じ事がいえると思う。最後にアイデアについて言えば、シャーシの1階から2階にかけて弧状のタッチセンサにすれば高さにとらわれないで検出でき、精度も向上するだろうと考えられる。 シャーシを円形化したりすることにより、小回りが効くようになり軽量化にもつながると考えられる。また今回で分かったことは、エレクトロニクスと検討して、コネクタ間のケーブルを考慮して基盤の位置等のMIRSの構造を決定すれば、よりすっきりとした外観になりテストもしやすくなることである。またタッチセンサに関しては、横は大して重要ではないことが分かったので、前方及び斜め前方を重視して設計すれば、壁に引っ掛かって動けなくなるということはなくなると思われる。  軽量化に関してはまだできるのかもしれないが、これ以上検討してもそれだけの効果があらわれることが確信できないことと、今のままで十分動いていることから、する必要がないと思われる。小型化に関しては 1 メカニクス 年間スケジュール不明 13システム動作モードについての問題点及び改善案不明 12ソフトウェアから見た状態遷移図不明 11総合試験計画全員 10ソフトウェア構成全員 9競技モードにおける動作全員 8機能、性能全員 7エレクトロニクスハードウェア構成全員 6構造概要全員 5動作概要全員 4概観全員 3緒言全員 2システム概要全員 1目的全員 内容登録者 94DS-4-2001 基本設計書 勝敗判定装置割り込みに対してプログラムをbreakする センサ系の割り込みに対してフラグを立てる   決められた値をPWMに与える ペナルティ戦モード   動作モードのセット 電源投入時の制御 12 ソフトウェアから見た状態遷移図 4:相手機が、下図のように移動するタイプの場合。 3:相手機が、常に競技場を斜めに移動して捜索するタイプの場合。 2:自機よりも旋回のスピードが速い場合。 1:相手機が、あまり動かず止まっているタイプの場合。 13.3 <弱点> 9: SOFTとの話し合いが必要である。 8: 先生が審判員なのでどうしようもない。 7: これも、改善される予定なのでまだわからない。 6: とりあえず、60秒ごとに捜索モード軌道上に戻るように設定してあり、そこでリセットされる予定である。それ以外のトラブルは検討の余地あり。 5: 一定時間は60秒とする。対戦時間は5分間なのでそれを考慮した。 4: これも、競技場の広さと床が変更される予定であるので、まだわからない。 3: 前回の競技会で先生方も気付いたらしく、壁が変更される予定であるので、まだわからない。 2: 試験してみないと分からない。 1: 一定距離はMIRS1台分と考えて30cmとする。 13.2 <改善案> 9: 旋回中に超音波センサで相手機を捕らえたらどうするか? 8: 審判員がルールについての指導をしなかった。例えば、禁止事項の4ー3については不明な点があったと思う。 7: 競技場外側から回りこむことは不可能ではないのか? 6: 故障したらどうするのか? 5: 追跡モードでの一定時間とはどのくらいか? 4: これも前回の発表会で感じたことだが、ロータリーエンコーダは役に立たないということ。なぜかというと、床の凹凸で車輪が空転してしまうからである。 3: 前回の発表会で感じたことだが、超音波センサがあまり役に立たないのではないかということ。 2: バックしている時に、超音波センサで相手機を発見する動作があるが、バックしてすぐにその動作を実行すると、実行した時点ではまだ相手機は自機の横にいると思うので、理想の動作をしないと思われること。 1: 相手機を自機の横で発見した場合、バックする動作があるが、このときの一定距離とはどのくらいか? 13.1 <問題点> 13 システム動作モードについての問題点及び改善案  モード遷移図 9 競技モードにおける動作 電源系統図 8.10 電源回路  NiCd電池   1700SCR  容量       1700[mAh]  電圧       7.2[V] 8.9 電池  最大連続電流    :1500  <mA>  最大効率      :83.2  <%>  回転数定数     :585   <rpm/V>  トルク定数     :16.3  <mNm/A>  公称電圧      :1800  <V>  定格出力      :20    <W> The maxonmotor 8.8 モーター ある周期の方形波のdutyを0〜50%まで128段階で変化する機能及び方向を決定する機能を持つ。そしてこの回路は、LSI68230で制御されている。 8.7 PWM制御機能 このボードは、ロータリーエンコーダからの信号を取り込み、カウンタでカウントし、CPUの要求に応じてカウント値を出力するものである。また、タッチセンサの信号を取り込みスイッチの状態を調べ、スイッチ割込みの割込み信号を発生させるのも、このボードである。 IP−エンコーダーボード 詳細は、仕様書(UserManualIP-Digital48、IP-DualPI/T)参照。 IP−Dig.48ボードは、VIPC310に搭載されるIP(IndustryPack)の一種で、MC68230,PARALLEL INTERFACE/TIMER(PI/T)を2個搭載している。 IP−Dig.48 詳細は、仕様書(UserManualVIPC310)参照 VIPC310ボードは、IP(IndustryPack)を二つ搭載することが出来、INPUT/OUTPUT割り込みといった機能がある。(他にもメモリ機能、リチウムバッテリ(12〔V〕)を搭載しているが、今回は使用しない。) VIPC310   I/Oボードは、VIPC310と、VIPC310上に搭載されるエンコーダボード、及びIP−Dig.48から構成される。 8.6 I/Oボード 赤外線センサ回路は、赤外線を受光状態を2値(有り,無し)で得ることができる.この回路は、赤外線センサ信号回路内の受光素子から送られてくるHorLの信号を処理し、信号に状態変化がおきた時に、割り込み要求信号をCPUに送る機能を有し、またそのときの各受光素子の状態は後述のレジスタを読むことにより得ることができる。最大8個のセンサを処理できるが本システムでは5個使用する. 8.5 赤外線センサ 一定時間内に反射波を受信できなければカウンタはアンダーフロー信号を出力し 受信信号、又はアンダーフロー信号は割込み要求信号となり、データを読み込ま せる機能を持つ。 この機能は指定した超音波センサから超音波を送信させ、受信するまでの時間を カウント値として測定するものである。センサ選択信号を出力すると同時に出て くる信号をトリガとして用い、0.35msに引き伸ばし、それから40kHzの超音波を作り出し、送信する。最少測定距離20cm,測定精度±1cm以内(温度補正後). 8.4 超音波センサ回路   ・押しボタンスイッチは本機のスタートスイッチである。   ・7segLEDによりテスト時、各センサの測定値を表示。   ・Green、Red LEDにより、マシンの状態を表示。   ・4ビットスイッチにより16種類の命令が可能。 このボードの機能は、MPUボードと人間との間をつなぎ、マシンの状態や、人からの命令をMPUボードに伝えることである。 8.3 MMIボード データ出力は、8ビットのパラレルデータを2回に分けて出力する。 カウント値は2の歩数表示で、ロータリ・エンコーダが正転時はアップカウント、逆転時はダウンカウントする。 カウンタは、12ビット・バイナリ・アップ・ダウン・カウンタを用いる。 この機能は、ロータリ・エンコーダからの信号を取り込み、カウンタでカウントし、CPUの要求に応じてカウント値を得るものである。ロータリ・エンコーダは、A、B2相入力式を用いる。 8.2 ロータリ・エンコーダ 詳細は、仕様書VSBC-1 UsersManualDocumentNo.525-UM-0002を参照。    製造元:PEPModularComputers サイズ:100×160(mm) CPU:MC68HC000クロック12.5MHz 名称:VSBC-1SingleBoard(68HC000)ComputerModulefortheVMEbus 8.1 MPUボード 8 機能,性能 図5 ハードウェア構成 図5に本システムのエレクトロニクスハードウェア構成を示す.本システムに使 用する基板類は1994年度卒業研究のV-project94で開発された最新版を用いる.各部の機能性能の概略は8章で述べる.詳細はD科ネットワークmoon/mirs/mirs94/vpro94の中に格納されているファイルを参照すること. 7 エレクトロニクスハードウェア構成 本システムは,車輪シャーシと基板シャーシの2段構造からなり,車輪シャーシには主に駆動系の部分品が,基板シャーシには主に基板類が取り付けられる.主要な基板はすべてVMEラック内に収容し,着脱が容易に行えるようにする.個々のセンサ類は個別に着脱可能とし保守性の向上を図る.センサ類の位置は外観図(図1、2、3)を参照のこと.重心の位置は中央とし,タイヤは重心を通る線上に配置すること. 図4  MIRS4班構成ツリー 図4は,本システムの構成ツリーである.(このツリーはシステム全体を頂点として,システム全体や各部分品が,ブランチに示される部分品から構成されることを示している.) 6 構造概要 ペナルティー戦では相手の位置が分かっており、なお相手は動かないので相手の周りを四角に囲うように一周回る。この時、赤外線を捉えたらその方向に進む。 5.2 ペナルティー戦モードでの動作 競技が開始されると本機は競技場の外側を競技場の壁に沿って回るこの時サイドに取り付けられた赤外線センサを用い相手機を捜索する。この捜索で相手機が見つかった場合、相手機との距離をはかり、その後、相手機の進行を解析し、その時の自分の行動を決める。この行動で相手機の後ろをとった後、赤外線センサで相手機を追跡するのが理想である。また、この行動で相手機の後ろを取れない時などは、最初の競技場の外側を回るモードに戻る。 5.1 競技モードでの動作 試験モードは総合試験を行うためのモードで詳細は11章で規定する. 本システムは競技モード,ペナルティ戦モード,試験モードの3つの動作モードを有する. 5 動作概要 外観を、正面図、右側面図、左側面図、後面図、及び上方から見た図を順に次に示す。 4 外観 動作モード---競技モード,ペナルティ戦モードおよび試験モードを有すること.各モードの動作については5及9章で述べる. 勝敗判定装置---MIRS競技規定に適合するもの. 情報収集機能---超音波距離計測機能×3,赤外線センサ×5,ロータリエンコーダ×2,タッチセンサ×3 最大走行速度---1m/s 駆動系制御方式---PWM制御による2輪独立駆動方式 MPU---VSBC1(PEP社製).詳細は研究・調査と指導書を参照. 制御系-15W以下.(5V,3A 電源回路の制限による) 消費電力---駆動系36W以下(7.2V1700mAhのNi-Cd電池の制限による) 電源---駆動系と制御系は電気的に完全に分離されており,各消費電力は20分の連続運転が可能な電源容量を有すこと 大きさ---20.0cm(縦)×28.0cm(横)×40.0cm(高さ)以内であること.(規定では25.0cmであるが新モータの搭載により変更した。) 重量---4.0Kg以内 3 緒言  本システムは,競技主宰者(学科)より貸与される,MPU及びI/Oボードを 用い,自律的に行動する小型知能ロボットを実現する.本システムの移動は2つ の車輪で行い,PWM制御による2輪独立駆動方式とする.情報収集機能として, 超音波距離計測機能,赤外線探知機能,車輪の回転数を計測する機能,接触検知 機能を有しており,これらから得られた情報をもとに,後に述べる行動計画に基 づく動作をソフトウェアにて実現する.また,すべての事項はMIRS競技規定に適合するよう設計されている. 2 システム概要 11 動作がスムーズに出来る事を確認する。 10 タッチセンサの情報により壁か敵かを判断して動作できる事を確認する。 9 システムの起動及び終了が正常に行われる事を確認する。 8 カウンタにより一定時間が計れ、その情報によりモードが切り替わる事を確認する。 7 追跡モードに移ったときに追跡ランプが点灯することを確認する。 6 超音波センサ、赤外線センサ、タッチセンサ、ロータリーエンコーダの情報により動作する事を確認する。 5 2つ以上の動作が超音波センサ、赤外線センサ、タッチセンサ、ロータリーエンコーダの情報により連続して出来る事またモードが切り替わることを確認する。 4 直進及び後退が出来る事を確認する。 3 その場旋回が出来る事を確認する。 2 自機と相手機との距離の算出により、その場に合った旋回が出来る事を確認する。 1 捜索モードによる競技場外側を正方形を描くように移動する事を確認する。 (競技場動作モード試験詳細) 赤外線LEDを手に持って相手機の動きを想定し、自機が正しく(その場にあった)動作をするか確認する。 11.3 競技モード動作試験 ペナルティー戦の動作で示した通りに自機が移動する事を確認し、その後、赤外 線に反応して動作するか確かめる。 11.2 ペナルティ戦動作試験 図6 試験プログラム構成 2 センサ試験---各センサについて測定値を7SegLEDに表示し,目視により確認する. 1 規定走行試験---その場回転,直進,正方形,円走行試験を行う. 機能試験は試験プログラムによっておこなう.試験プログラムの構成を図6に示す. 11.1 機能試験 総合試験はハードウェアの組み立てが完了した後,機能試験,ペナルティ戦動作試験、競技モード動作試験の3段階に分けて行う. 11 総合試験計画 ここでは、monitorで与えられた値をもとにMIRSの最終的動作を決定する。MIRSの動作はモード遷移表に準ずる。モード遷移は「mode.sam」参照。 10.7 <状況判断ユニット> すべての処理を総括する。割込みについては上位から、勝敗判定、タッチセンサ、赤外線センサの順となっている。割込み処理等も含め最終的に駆動系に指令を出す。 10.6 <main詳細> ロータリエンコーダ、超音波センサのデータをここで計算し、mainと状況判断ユニットに値を与える。 10.5 <Monitor詳細> ソフトウエアの主たる部分であり、MIRSの頭脳である。追って後節で説明する。 10.4.3 状況判断ユニット バッチ処理の流れはここで行われる。状況判断ユニットはここに含まれる。 10.4.2 main 超音波センサ、ロータリエンコーダからのデータをもとに計算を行い、状況判断ユニットへの変数引渡を行なう。 10.4.1 monitor 10.4 <各ブロックの概略> 卒業研究の進行の困難が予想されるために、RTMの使用を見合わせる。ここで用いる「monitor」とは、各処理を直列に行う際にモジュール間のデータの受け渡しを円滑に行うための物である。 10.3 <リアルタイムモニターについて> 「kousei.sam」を参照のこと。 10.2 <構成概略図> I.C.EやXRAY等の開発支援ツールを有効活用し、製作の効率を図る為、この製作においてはC言語を使用する。 10.1 <使用言語> MIRS製作においてソフトウエアはMIRSの頭脳的役割を果たす。ここでは、その製作手段、目的を明確に示し、今後の製作がスムーズに進むようにする。 10 ソフトウェア構成  本仕様書はMIRS競技規定に基づき,チームの作成する自律型小型知能ロボットの基本仕様を記述する.   1 目的 6.8 相手戦略への対抗案 6.7 実現性の検討 ロータリーエンコーダの制御 タッチセンサの制御 MPU(CPU,I/O)の制御 DCモータの制御 赤外線センサの制御 超音波センサの制御 6.6 研究・調査(3) ロータリーエンコーダの回路 タッチセンサの回路 MPU(CPU,I/O)の回路 DCモータの回路 赤外線センサの回路 超音波センサの回路 6.5 研究・調査(2) ロータリーエンコーダ タッチセンサ MPU(CPU,I/O) 駆動系 赤外線センサ 6.4 研究・調査(1) 6.3 開発計画書訂正 6.2 開発計画書作成 6.1 システム概要検討 6 システム基本設計の内訳 7.4 予備設計 E 相手チームの戦略戦術の対抗策について D 不確実性要素について C 代替案について B システムの装置の配置について A システムの動作モードについて 7.3 検討 B 駆動部の強化について A システムの軽量化について 7.2 研究 C 相手チームの戦略戦術について B 各モジュールの入出力処理について A 各装置の性能について 7.1 調査 WBS図 ★ソフトウェア設計者   鈴木、山本、渋田 ★エレクトロニクス設計者 明城、武藤、清水 ★メカニクス設計者    望月、堰沢 鈴木 大成  山本 憲  望月 俊宏 渋田 裕司  堰沢 靖  武藤 麗 Menber Doc.Manager 明城 聡 Manager 清水 克彦 MIRS4班 7 システム開発体制図 2 旋回した後は、接触する前にしていた動作を続ける。 1 時機の右側のタッチセンサーが接触した場合は左旋回し、時機の左側のタッチセンサーが接触した場合は右旋回する。 (壁と接触した場合) <接触時回避モード2> 2 その後、捜索モードに移る。 1 競技場中心付近で相手機と接触した場合(図27)、その場で相手機がいる方向と反対の方に自機の背を向け、バックして捜索モード軌道上まで戻る(図28)。 (図27) (図28) <接触時回避モード1ー2> 2.その後捜索モードに移る。 1 @またはAの両方の場合(図25)において、(図26)のようにいったん自機の背を壁側に向ける。 (図25) (図26) (相手機と接触した場合) <接触時回避モード1ー1> 3その後追跡モード2に移る。 2接近してくるのなら(図22)のように旋回し、そこでその場旋回してから(図23)のような動作をする。また、前の超音波センサーから相手機が外れた場合は、(図24)のように旋回する。 1まず、相手機が接近してくるかどうか調べる。 (図22) (図23) (図24) <追跡モード3> *.超音波センサーで探している時に赤外線センサーで相手機を発見した時は、一定時間のタイマーはリセットされ、また赤外線センサーで相手機を見失った場合はタイマーをセットする。 4 超音波センサーで捜索モード軌道上にくるまでに相手機を発見できても、赤外線センサーで発見できない場合は、超音波センサーで探して軌道修正する動作を繰り返し、赤外線センサーで発見できない時間が一定時間を過ぎたら、過ぎた時点で向いている方向をそのまま前進し捜索モードの軌道上まで行き、捜索モードに移る。このとき(捜索モードの軌道上に戻っている時)に、超音波センサーで相手機を発見した場合はまた前に書いてある動作で追跡する。 3 前進し続け、超音波センサーで相手機を発見できず、捜索モード軌道上に乗ったら捜索モードに移る。また、前進している途中で相手機を超音波センサーで発見した場合(図20)は、(図21)のようにその方向へ旋回して前進する。 2 前進した後、またはしている時に相手機が赤外線センサーで見失った場合は、そのまま前進して超音波センサーに引っ掛かるまで前進する。 1 (図18)のように、自機が赤外線センサーで相手機を捕らえた場合、(図19)のようにその方向にその場旋回して前進する。 (図18) (図19) (図20) (図21) <追跡モード2> 3 それぞれの動作をし終わったら、追跡モード2に移る。 まる3のように相手機が移動している場合(図16)は、1で自機が旋回し終わった時横のセンサーで相手機を捕らえるので、(図17)のように旋回する。 まる2のように相手機が移動している場合は、バックしているときにも横の超音波センサーで相手機を捕らえているので、90度旋回する前に(図15)のように旋回する。 2 まる1のように相手機が移動している場合は、1で自機が旋回し終わった時、センサーには引っ掛からないので(図14)のように旋回する。 1 まず、一定距離だけバックしてから相手機がいた方向に90度旋回する。つまり、自機の背が壁と平行になるようにする。 (図13) (図14) (図15) (図16) (図17) <追跡モード1> 1 接触時回避モード2に移る。 (壁と接触した場合) Scene9 1 接触時回避モード1に移る。 (相手機と接触した場合) Scene8 2 赤外線センサーが相手機から外れた場合は、追跡モード2に移る。 1 相手機と自機との距離に関係なく相手機の方向へその場旋回し、赤外線センサーで相手機を捕らえている間は、その方向へ前進する。 (図12) (赤外線センサーで、相手機を捕らえた場合) Scene7 2 相手機と自機との距離が近い場合(図10)は、競技場内側に背を向け、その後(図11)のように旋回して追跡モード2に移る。 1 相手機と自機との距離が遠い場合は捜索モードを続ける。 (図10) (図11) 捜索モード中に相手機を前の超音波センサーで捕らえた場合) Scene6 1 相手機と自機との距離に関係なく捜索モードを続ける。 (図9) (自機が角で旋回しているときに、いずれかのセンサーで相手機を発見した場合) Scene5 2 相手機と自機との距離が近い場合(図8)は、追跡モード3に移る。 1 相手機と自機との距離が遠い場合は捜索モードを続ける。 (図8) (自機が旋回した直後に前のセンサーで相手機を捕らえた場合) Scene4 2 相手機と自機との距離が近い場合(図5)は、(図6)のように旋回してから(図7)のように動作する。 1 相手機と自機との距離が遠い場合は捜索モードを続ける。 (図5) (図6) (図7) (自機が角に来たとき横のセンサーで相手機を捕らえた場合) Scene3 2 相手機と自機との距離が近い場合(図4)は、図のように旋回してから追跡モード2に移る。 (図4) 1.相手機と自機との距離が遠い場合は捜索モードを続ける。 (競技場の角で、旋回した直後に相手機を横のセンサーで捕えた場合) Scene2 2 相手機と自機との距離が近い場合(図3)は、追跡モード1に移る。 1 相手機と自機との距離が遠い場合(図2)はそのまま捜索モードを続ける。 (図2) (図3) (相手機を横の超音波センサーで捕らえた場合) Scene1 1 競技場の一番外側を左回りにぐるぐる回って相手機を探す。 (図1) <捜索モード> ☆すべての場合において、赤外線センサーで相手機を捕らえた時は、赤外線追跡モードに移る。 ☆相手機をセンサーで一度捕らえて追跡モード2に移る場合は、追跡モードとして追跡ランプを点灯させる。 競技場の一番外側を左回りにぐるぐる回って相手機を探す。 ☆常に、超音波センサーと赤外線センサーはONにしておく。 <初期設定> 5 システムの基本機能の詳細 開発の指針となる事項をまとめる。 MIRS開発にあたって、MIRS 1 MIRS開発計画書の目的 計画書表紙鈴木、望月 8開発スケジュール不明 7開発体制鈴木,望月 6システム基本設計の内訳堰沢,山本 5システムの基本機能の詳細清水,鈴木,明城,山本,武藤,渋田 4システムの基本機能望月 3システム設計方針堰沢 2開発システムの概要清水,渋田 1MIRS開発計画書の目的堰沢 内容登録者 94DS-4-2001 MIRS開発計画書 4 システムの基本機能 武藤 麗 堰沢 靖 鈴木 大成 渋田 裕司 明城 聡 清水 克彦 山本 憲 望月 俊宏 MEMBER 4班 MIRS計画書 8 開発スケジュール システムの小型化 システムの軽量化 駆動部の強化 システムが、理想どおりに動くようにする 本システムの設計は、MIRS競技規定、及び次の項目の設計方針に基ずいて行なう。 3 システム設計方針 勝敗を判定するためのものであり、先に相手機のこれを押した側が勝者となり、押された側は敗者となる。 <勝敗判定装置> 物体との接触時にスイッチが入り、自機が何等かの物体と接触したことを認識させるための装置。図のように取り付けるため、自機がどの方向に接触したのか正確な方向を認識することができる。例えば、前方の2つのセンサーが同時に接触した場合は前方に障害物が存在すると認識し、左斜め前方のセンサーだけが接触した場合は、左斜め前方に障害物が存在すると認識する。 <ワイヤー型タッチセンサー> 赤外線により、相手機の光源の存在の有無を確認するための装置。スリットを用いて赤外線の有効範囲をしぼるようにする。これにより、図に示すように近づくほど相手機の正確な位置を確認することができる。 <赤外線センサー> 超音波を発信し、返ってきた信号の内容により、相手機の存在の有無を確認するための装置。捜索モードでは、超音波センサーと壁が常に並行になるように取り付けられているため、壁から反射されてくる信号を確実に受け取ることができる。 <超音波センサ> 2.2 システムの特徴及び機能の説明 図に表すように、まず超音波センサーは自機の前方、及び左右の計3個取り付ける。次に赤外線センサーは超音波センサーと同位置と、さらに左右の前方斜めに取り付ける。そしてワイヤー型タッチセンサーを左右の前方及び後方斜めに取り付ける。このとき、後方に取り付ける時は競技規定の3ー8に違反しないようにする。最後に勝敗判定装置を自機の後方に取り付ける。 <システム構成図の説明> 2.1 システム構成図 2 開発システムの概要 Fig6.7チャタリング除去回路例 下にチャタリングの影響と、その除去回路例を示す。なお、ソフトウェアにおいても、チャタリング除去は可能である。 スイッチを使用する上で注意しなければならないのはチャタリングである。チャタリングとはスイッチがONしたりOFFしたり瞬間に、機械的にバタつく現象で、このため、スイッチからの信号を直接論理回路の入力すると、1個のパルスが幾つにも見えてしまう。よってパルスを計算したりする場合は、誤差が生じる。 6.5 チャタリング Fig6.6マイクロスイッチの接続方法 Fig6.5マイクロスイッチの大きさ タッチセンサの本体は通常スイッチである。システムのワイヤー(触覚)が何らかの物体に当たった時、その接触力でレバーが押されてスイッチがONになり、それを検出してソフトウェアー部に伝達するのがタッチセンサの役割である。(利用するスイッチは、数10g重の小さな力でON/OFFでき、しかも信頼性の高いマイクロスイッチが有効である。) 6.4 小型マイクロスイッチ Fig6.4回路図 Fig6.3タイミングチャート 6.3 タイミングチャート及び回路図 *マイクロスイッチを使用する上では、チャタリングに注意して行う。 Fig6.2マイクロスイッチの詳細 Fig6.1タッチセンサ外観図 6.2 タッチセンサの外観図 タッチセンサは、赤外線センサや超音波センサの補助として用いるのが有効である。例えば、平常時は、赤外線や超音波を用いた非接触センサを動作させておき、もし本システムが誤動作等何らかの理由で壁に衝突しそうになったり、あるいは相手システムの必要以上の接近を受けた際に初めてタッチセンサが働くようにする。つまり、タッチセンサの高い信頼性を活用して、非常時を検出するためのセンサとする利用法である。 6.1 タッチセンサの利用目的 6. タッチセンサ               Fig3.21 G時間パルス  39KΩの抵抗によってヒステリングスをつくっている。10μFのコンデンサはリップノイズをバイパスさせ、電流インピーダンスを下げている。 +(REF)ピンの電圧が−(INV)ピンの電圧より大きければ出力は同極性の方向(Highレベル)に振れ、−ピンの方が+ピンの電圧よりも大きいと出力は逆極性の方向(Lowレベル)に振れる。出力の一部を入力に房し、ポジティブフィードバックを行っている。 アナログ量の信号をディジタル化するための回路でスレッショルドレベルを境にして、それ以上ならHighレベル、以下ならLowレベルに2進化している。コンパレータには2つの入力ピンがあって+と−またはREF、INVという記号がついている。 Fコンパレータ    C=1000p:パスフィルタ    IN60   :バイパスフィルタ 電圧のDC分でカットする。 E微分回路 したがって入力信号が約316倍となって出力される。    =316.2  G4≒1050/20 50dB=20logG GAIN:50dBなので 信号を増幅している。 Dイコライザーアンプ インバータが2段になってるのは、インバータからはき出される電流は決まっているのでそれを増やすためである。つまり1つのインバータから流れ出た電流の2倍の電流がMA40A5Sに流れ込む。 C信号増幅部 Fig3.20 Bパルスと振動数波の合計 Fig3.19 Fig3.18 R1が可変抵抗になっているので微調整を行い、40KHzに合わせる。 f=1/(1.5×560×10−12×30×103)=39.7×103[Hz] 値を代入して T≒1.5CR f=1/T R2:100kΩ R1:30kΩ C:560pF A振動数の決定 光エネルギーを電気エネルギーに変換するフォトダイオードは半導体のPN接合部に光が当たると電位差が生じる。光源電力効果を利用した光検出器(フォトセンサ)である。 @フォトダイオード Fig3.17  Fig3.16  Fig3.15 ブロック図 反射して戻ってきた超音波を送信部でキャッチし、コンパレータを通して、近距離の不要な反射波をキャンセルし、超音波反射時間の情報をカウンタへ送る。 シーケンサーによるパルスをフォカプラを通して伝え、その情報(一発パルス)とクロック(40kHz)とを合成して送信部から超音波を発射する。 3.3.3 送受信回路の概要 Fig3.14 Fig3.13 8bitカウンタは256カウントでほぼよい数である。よって8bitカウンタを使用する。 測定時間は16[ms]で打ち切りなので16[ms]/10[us]=266.6となり、従って267カウント前後のカウンタを必要とする。 超音波の波長は8.6[mm]であるから約1[cm]の精度以上での測定はできない。超音波の速度は3460[cm/s]であるから1[cm]を進むのに約30[us]かかる。超音波測定は超音波が行って返ってきたものを検出するのだから、1[cm]の測定をするのにカウンタは1カウント2[cm]であればよい。よって測定パルスは60[us]の周期にする。 カウンタの選択 カウントはPCが出力周期20[ms]のパルス信号をトリガとしてカウントを開始する。当然受信信号が16[ms]以上のものは受信できない。従って測定は16[ms]で打ち切ることになる。そくていを16[ms]で打ち切っても、音速は346[m/s]だから、超音波は5.5[m]進む。測定は返ってきた反射波だから5.5/2=2.75[m]まで測定できる。これは競技場内の最大の長さを上回っているので大丈夫である。 カウントの手段 3.3.2 カウンタ回路の検討 PCから20[ms]周期のパルスを出力する。 超音波センサ回路(送受信回路)は3セットである。 3.3.1 前提条件 3.3 詳細検討 Fig3.12 超音波センサの外形(MA40B5R/S) 検知距離0.2〜6.0m 分解能9 静電容量2000pF 指向性(半域全角)50° 音圧112dB以上 感度−47dB以上 公称周波数40kHz 特徴凡用・広帯域 品名MA40B5R/S (R:受信用 S:送信用) 構造送信・受信専用 超音波センサの定格 3.2.7 その他 Fig3.11 直接結合増幅回路は直流信号まで増幅できる。それゆえ、温度や電源電圧の変化によってICBOやVBE等が変化し、コレクタ電流が変化した場合、これを信号直流分と区別できない。入力の変動に原因せずに、電流が変動する現象をドリフトと呼ぶ。 <注1>ドリフト Fig3.10 基板へ超音波トランジューサを取り付ける方法の一例 続けて距離を測定する場合は、以前に発射した超音波に対する反射や残響が十分に減衰する時間(数[ns])をおいてから、次の超音波を発射する。 外部からの音響的な雑音に対しては、距離を2回測定して、その値が違っていたら再度センサを働かせるというようなソフトウェアによる対策が有効。 受信機はマイクロホンであるから、外部の音やシステム自体の機械的振動で誤動作する恐れがある。受信機はゴム等を用いて、機械的振動が伝わらないように取り付ける。 (Fig3.10) 受信機は、大きな増幅率をかせぐアナログ回路であり、回路の雑音に注意。 超音波トランジューサは、周波数選択性が著しいので、送波回路に発信機を用いる時は周波数調整を綿密に行う。経時変化や温度変化による発信機のドリフト<注1>にも注意が必要。 3.2.4でも述べたが、壁にたいして斜めに入射した超音波はほとんどもどってこない。 3.2.6 超音波センサ利用上の注意 ハードウェアタイマとしては、それぞれのCPUに周辺LSIとして準備されているタイマ用ICを使うのが簡単である。クロック発生回路とマイコンから読むことのできるカウンタ回路を構成すればそれで充分である。 超音波センサでは、1[μs]を0.17[mm]に換算する。したがって、ソフトウェアタイマの1回のループに用する時間を10[μs]とすると、CPUはこの間他の処理ができない。ハードウェアタイマを用いれば、その間も他の処理を行うことができる。 3.2.5 ハードウェア・タイマ まして相手MIRSを検出するのはさらに難しいであろう。試作品を製作し、実験をする必要があると思われる。 波にとって対象物が鏡面であるか錯乱面であるかは、その表面の粗さと波長の関係で決まる。競技場の壁は数十kHz超音波にとってほとんど鏡面となるから、超音波センサでは、斜めから壁を見た場合、通常その壁は検出できない。 超音波の波が対象物にあたった場合、対象物表面に凸凹があればそこで散乱し、あらゆる方向から反射錯乱波が観測される。しかし、もし対象物が鏡面になっていれば、錯乱せず、入射波=反射波の方向に反射するだけとなり、反射波の進行方向でしか反射波は検出されない。 Fig3.9 紙性ホーンアンテナの例 Fig3.8 ビームの広がりの影響 超音波センサの指向性が広いと、センサによって計測された対象物体の形はかなりボケたものになる。すなわち、超音波センサは、距離方向の分解能はよいが、横方向の分解能はよくない。この指向性を改善する方法として、トランジューサにホーンアンテナを取り付ける手段がある。アンテナには一般に指向性を鋭くすると同時に、中心方向のゲインをかせぐという利点がある。ただし、ホーンアンテナの設計を理論的に行なうことは難しいので、ある程度の試行錯誤によってホーンの形を決める必要がある。 市販されている超音波トランジューサの指向性は、それ程鋭くなく、半値角として20°〜30°程度の広がりを持つ。 超音波は、トランジューサから一定の広がりを持ってビーム状に発射される、そのビームの形状を超音波トランジューサの指向性と言う。 3.2.4 超音波の指向制と反射特性 超音波を発生するための送波回路にはCMOSゲート回路による発振器やマイクロコンピュータのクロック信号を分周する回路によってトランジューサの共振周波数のパルス列をつくり、これにより超音波トランジューサを駆動させる方式をとる。Fig3.6はこの例でマイコンからのコントロール信号が ”H”の間だけ発振が起こり超音波が送波される。 これらの電気振動変換素子は原理的には一つの素子が送波器にも受波器にも働くが送波と受波では空気の振動振幅にも大幅に異なり、しかもインピーダンスを変えたほうが効率がよいので別個のトランジューサを利用するのが通常である。 電気信号を超音波に変えて空気中に発射する超音波スピーカ(送波器)と空気中を飛んできた超音波を受けてそれを電気信号に変換する超音波マイクロホン(受波器)を合わせて超音波トランジューサという。音は空気の振動であるから超音波トランジューサ波電気信号を機械的振動に変えたり、その逆の役割も果たす。 3.2.3 超音波スピーカと超音波マイクロホン Fig3.7 超音波送波回路例 超音波を反射した後待ち時間をおいているのは超音波スピーカの振動が減衰せずその漏れが受信回路に入って受信波を検出したように誤動作してしまうのをふせぐためである。 Fig3.6 超音波トランジューサ(TDKSE-0540T/R) Fig3.5 ソフトウェアタイマを用いた超音波センサ制御ルーチンの流れ図 また、反射時間を測定するためにFig3.3のようなハードウェアタイマを用いず、マイクロコンピューターのソフトウェアでタイマを構成することも出来る。Fig3.5はソフトウェアタイマを用いた場合の超音波センサ制御ルーチンの流れ図である。 Fig3.4 超音波波形とタイミング Fig3.3 超音波センサの構成 Fig3.3の構成による各部の波形の例がFig3.4である。実際には反射波は物体の形によりエコーして残るが、この回路では反射波の先頭だけを検出して、最も近い所からの反射時間をはかる。Fig3.3では発振器を使用しているが発振波形でなく一発の高圧パルスで超音波スピーカを駆動することもある。 3.2.2 超音波センサの構成 Fig3.2 超音波センサの原理 Fig3.1 距離による音圧の減衰特性 減衰質について超音波は距離が長くなるほど減衰している。またFig3.1に示すように音波周波数が高くなる程減衰率が大きくなって到達距離が短くなる。通常周波数約100[KHz]では最大1〜2[m]検知可能距離となる。超音波では技術的にいえば1000[MHz]ぐらい迄発振可能となってきた。 物体の表面の起伏が大きい場合超音波が乱反射するため検知しにくいことがあるので、注意が必要である。 硬い物(金属、木材、コンクリート、ガラス、ゴム、紙など)は超音波をほぼ100%反射するのでこれらの物体の有無は十分検知することが出来るが、布、グラスウール、綿、の柔らかくて空気を含んでいる物体は超音波を吸収するため物体の有無を検知し辛い。 つまり、周囲温度によって音速が変化するので物体迄の距離を常に精度よく測定するには温度補正が必要となる。 v=331.5+0.607t[m/s]t:周囲温度 [℃] 温度の影響に対して空気中の音波伝搬速度vは簡易的に次式で表される。 で計算された。 d=0.5Tx340x0.001=0.17xT[mm] 超音波は音であるから常温の空気中を約340[m/s]という速度で伝播する。従って、音は1[cm]距離を約28[μsec]だけの時間をかけて進む。すなわち超音波を発射してから物体に反射して戻ってくる迄の時間を測定すれば、超音波の送受波器から物体までの距離を知ることができる。(Fig3.2)超音波を発射してから、反射はが検出されるまでの時間をTμsecとすると、壁までの距離dは 3.2.1 超音波の性質 以下6項目にわたって調査及び研究を行った。 3.2 調査及び検討 本書は、本システム主要構成部品のひとつである超音波センサについて、メカニクス、エレクトロニクス、ソフトウェアの面から、その基本性能を調査、理解し、後のシステム動作方式、統括制御方式の研究に役立てるためのものである。 3.1 主旨 3. 超音波センサ ここの部分は、恐らく、赤外線センサー受光部からの信号に変化が生じたときに割り込み信号を出すようになると思う。信号自体は、一発パルスではなく他の波形になると思われる。 割り込み信号部について 割り込み信号発生回路 同期回路 Fig4.11 回路構成 4.6 赤外線センサ信号処理回路 Fig4.10 赤外線センサ外形図 Fig4.9 Y方向特性 Fig4.8 X方向特性 指向角特性 Fig4.7 光学系 Fig4.6 送信機  ※3) 受光面照度を示す。 又、L=0.2〜3m、Ee<10lx、X方向φ=0°、Y方向θ≦15°のとき表4.5の電気的特性を満足すること。 図2において、L=0.2〜3m、Ee<10lx、X方向φ≦30°、Y方向θ=0°のとき表4.5の電気的特性を満足すること。 指向角受信距離特性 Fig4.7において、L=0.2〜5m、Ee<10lx(※3)、φ=0°のとき、出力信号が表4.5の電気的特性を満足すること。 直線受信距離特性 Fig4.6に示す送信機を用いて、Fig4.7の光学系においてリモコンセンサの出力信号が下記の各項目を満足すること。 性能 Fig4.5 バースト波 ※2)下図に示すバースト波を、Fig4.6に示す送信機にて送信するものとする。 B.P.F.中心周波数f0---38---kHz ローレベルパルス幅T2400---800μS※2 ハイレベルパルス幅T1400---800μS※2 ローレベル出力電圧VOL---0.450.6V※2,プルアップ抵抗kΩ ハイレベル出力電圧VOHVcc-0.2------V※2,出力端子OPEN 消費電流Icc---2.84.5mA入力光なし、出力端子OPEN 項目記号MINTYPMAX単位備考 表4.5 電気的特性 (特に指定の無い限りTa=25℃,Vcc=5V) 電源電圧Vcc4.7〜5.3V 項目記号動作条件単位 表4.4 推奨動作条件 ※1)結露なきこと。  ※2)樹脂端面より下部の位置で5秒間 保存温度Tsol260※2℃ 保存温度Tstg-20〜+70℃ 動作温度Topr-10〜+60※1℃ 電源電圧Vcc0〜6.0V 項目記号定格値単位 表4.3 絶対最大定格 Fig4.4 構成図 定格及び特性 4.5.2 センサ Fig4.3 指向特性[標準値](Ta=25℃) Fig4.2 波長特性[標準値](IF=50mA,Ta=25℃) 半値角θ1/2IF=50mA---±23.5---° スペクトル半値幅ΔλIF=50mA---50---nm ピーク発光波長λPIF=50mA---950---nm 端子間容量CTVR=0,f=1MHz---20---pF 光出力POIF=50mA---11---mW 放射強度IEIF=50mA1220---mW/sr 逆電圧IRVR=5V------10μA 順電圧VFIF=100mA---1.351.5V 項目記号測定条件最小標準最大単位 表4.2 電気的特性(Ta=25℃) Fig4.1 外形 (注)パルス幅≦100μs,繰り返し周波数=100Hz 保存温度Tstg-30〜100℃ 動作温度Topr-20〜75℃ 許容損失PD150mW 直流逆電圧VR5V パルス順電流IFP(注)1A 直流順電流低減率(Ta>25℃)ΔIF/℃-1.33mA/℃ 直流順電流IF100mA 項   目記号定格単位 表4.1 最大定格(Ta=25) 4.5.1 送信機 4.5 赤外線センサと送信機(詳細) これから実際に使われるセンサの詳細を示す。 焦電効果は強誘電体における自発分極の温度特性を利用している。温度上昇によって焦電体セラミックスの分極の大きさが変化するとその変化分が電荷として放出されることになる。 ※焦電効果とは 赤外線を熱に変換し、その熱を電気量に変換するセンサである。熱型赤外線センサは安価だが一般に周波数応答が低い。この熱型赤外線センサの一種で、焦電型センサというものがあり、これは他の熱型センサに比べ感度が高く、また構造が簡単であるためよく使われている。これは、焦電効果によって発っせられた電荷によって創られる電圧をFETで増幅し出力するセンサである。 4.4.2 熱型 フォトンを吸収しキャリアを励起することによって直接赤外線を検出するセンサである。このセンサは後に述べる熱型センサより100〜1000倍の検出能力を持つが、動作温度が低いため通常は液体窒素などで冷却の必要がある。 4.4.1 光電子型、量子型 4.4 赤外線センサの種類 周波数が物質を構成している分子の固有振動数とだいたい同程度の範囲にあるため物質に当たると電磁的な共振がおこり、そのエネルギーが無駄なく物質に吸収される。 波長が可視光線や紫外線に比べて長いので微粒子によって散乱される度合が少なく空気中を比較的よく透過する。 肉眼で直接観測できない。 4.3 赤外線の特徴 可視光線の長波長側の限界(〜0.75mm)から約1mmまでの波長の電磁波は赤外線と呼ばれる。また、赤外線は熱線ともいわれる。それは、赤外線は強い熱効果、すなわち物質に吸収されてその物質を発熱される効果があるためである。 4.2 赤外線とは 本書は、本システム主要構成部品のひとつである赤外線センサについてその基本性能を調査、理解し、後のシステム動作方式、統括制御方式の研究に役立てるためのものである。 4.1 主旨 4. 赤外センサの調査・研究 データ通信を行う際に、データが正しく送られたことを、受信側が送信側へ報告すること。 アクノリッジ CPUが命令を取り出すこと。 フェッチ 演算部を構成する主要なレジスタの一つであり、算術演算や論理演算を行うデータを記憶したり、演算の結果を貯えておいたりする場所。 アキュームレータ 処理がFIFO(First In First Out)であるデータの集まりの構造。待ち行列ともいう。 キュー 無駄に費やされる時間または記憶領域。主に、OSが存在している領域や、それが働いている時間をさす場合が多い。 オーバーヘッド プログラムが大きくて一度に主記憶に格納できない場合、または主記憶装置を有効に使うためにプログラムをモジュール化する場合に、細分化されるプログラムの各部分。 セグメント 命令の機能、データの表現機能等の、ハードウェアとソフトウェアの開発に必要となるハードウェアの仕様のこと。 アーキテクチャ 2.5 付録 Fig2.2 メモリーマップ さらに、PI/Tによりタイマ割り込み(レベル5オートベクタ)を可能としている。 また、本システムでは、汎用インテーフェースLSI(PI/T及び3個のPIA)を搭載し、各LSIの割込み要求端子を開放して(図4に示すJP1により割り込みレベル選択可、オートベクタ割り込み)、多様なモードでのI/Oコントロールを可能としている。図5〜7に各I/Oコネクタのピン・アサインを示す。 本システムのメモリーマップを図3に示す。本システムは、電源オン又は外部リセットにより、ROM領域の先頭番地FC0000から2ワードをそれぞれSSPおよびPCとして取り込み、PCに書かれたメインエントリールーチンのエントリーポイントからプログラムを実行するようになっている。 図2に示すように、68KボードはMPUボードとI/Oボードの二枚一組で構成されるI/Oコントロール指向のシステム構成となっている。さらに表1に示す80Pマザーバスコネクタにシステムバスを開放しているため、必要に応じて拡張することが出来る。 種々のアクチュエータ及びセンサー等をコントロールするために小型基盤上(12cm×12cm)に高密度で実装された小型68Kボードである。同時に、バッテリー駆動を前提としているため、ハイスピードC−MOSを使用した省電力型のボードコンピュータである。 2.4 制御用68Kボード システム制御の命令には、特権命令、トラップ命令、及びSRのシステムバイトを操作する命令がある。 2.3.8 システム制御 ジャンプ・コールには、無条件分岐、条件分岐の2つがあり、他にも手続きの呼び出し、手続きからの復帰がある。 2.3.7 ジャンプ/コール ほとんどのデータ移動に関するプログラムはMOVE命令によって行われる。MOVE命令は、ソース、デスティネーションとも6ビットで指定される。 2.3.6 データ移動 BCD演算は加減算(ABCD)と符号反転(NBCD)がある。一度に扱えるオペランドサイズは8ビットである。 2.3.5 BCD演算 テスト後の操作には、BTST(何もしない)、BSET(1にする)、BCLR(0にする)、BCHG(反転する)がある。 テスト後の操作 指定されたビットが”0”なら、Zフラグを立てる。 ビットテスト ビット操作はビットテストとテストしたビットに対して行う操作との組みである。 2.3.4 ビット操作 シフトとローテートは、レジスタに対しても、メモリに対しても実行できる。但し、メモリ内のデータに対しては16ビットオペランドで1ビットのシフトに限られる。 2.3.3 シフト/ローテート 論理演算には、AND,OR,EOR,NOTがあり、前三者については即値を使う命令(ANDl,ORl,EORl)がある。アドレシングモードの指定により、これらわSRをデスティネーションとすることができる。 2.3.2 論理演算 算術演算には、加減剰余の他に、比較、クリア、ネゲートなどがある。剰余算には符号ありと符号なしの両方が用意されている。これらの演算は、アドレスに対しては、16又は32ビットでデータに対してはすべてのオぺランドサイズで使用できる。 2.3.1 算術演算 68Kの持つ命令セットは、次のように分類できる。 2.3 インストラクションセット オペランドとしてレジスタを使う際には、単にそのレジスタの名前を指定すればよい。メモリアドレスについては、プログラム実行時にいくつかのレジスタや定数を使ってメモリアドレスを計算し、その値をオペラントとして指定することができる。この時の計算をアドレス計算、計算の結果得られたメモリ番地を実行アドレスという。 オペランドとして指定されうるものは、各種レジスタとメモリ内の番地である。こういったものをオペランドとして指定する方法はいくつかあり、これらをアドレシングモードと呼ぶ。 2.2.2 オペランドの指定 ソースがデータそのものに注目しているのに対し、デスティネーションは内容だけでなくその場所にも重要性がある。 デスティネーションオペランド・・・データを受け入れる。 ソースオペランド・・・データを供給する。 2.2.1 オペランドの種類 2.2 アドレシングモード データをメモリに記憶させる場合はワード(2ビット)を単位とする。この際、低アドレス側に上位バイトのデータを、高アドレス側に下位バイトのデータを納める。 メモリ データレジスタは4種類の長さのデータを全て保持することができる。アドレスレジスタは16ビット又は32ビットを単位として扱う。 レジスタ 68Kは、1ビット(ビットデータ)、4ビット(BCDデータ)、8ビット(バイトデータ)、16ビット(ワードデータ)、32ビット(ロングワードデータ)のデータを取り扱うことができる。 2.1.4 68Kのデータ型 スーパバイザステートでしか実行できない命令。SRのシステムバイトの変更や、割込み処理に関する命令群。 特権命令 Fig2.1 68kのレジスタ構成 68KはOSの存在を前提としているため、システムプログラムが資源管理などの操作をすることができるように、実行時の状態がスーパバイザステートとユーザステートに分かれている。 2.1.3 スーパバイザステート・ユーザステート SRは16ビット長で、上位半分はシステムバイト、下位半分はユーザバイトとなっている。システムバイトはシステムの状態を示し、ユーザステートのときはこ内容を書き換えられない。ユーザバイトはZ80のFレジスタのようなものである。 ステータスレジスタ(SR) PCは32ビットである。しかし、使用できるのは下位24ビットなので、アドレス空間は16Mバイトである。 プログラムカウンタ(PC) データレジスタは、いわゆるアキュムレータとして使うのに便利にできていて、下から8ビット及び16ビットに切っても使える。(下の8ビットにデータをロードした時、上の24ビットは変化しない。) データレジスタ(D0〜D7) アドレスレジスタは、アドレスベースに使う事を目的としているので、アドレシングモードがたくさん作られている。A0〜A6までがアドレスレジスタ、A7は裏表に分かれていて、それぞれスーパーバイザ用のスタックポインタ(SSP),ユーザ用のスタックポインタ(USP)として使用される。 アドレスレジスタ(A0〜A7) 2.1.2 68Kのレジスタ群 第三に、68Kはスタックやキューを用いた演算処理ルーチンの記述が容易な命令セットとアドレッシングモードを持っている。これは、CやPascalなどの構造化プログラミング言語の実行に際し、都合がよい。また、汎用レジスタ方式をとっているため、同時に複数個のスタックを管理できる。 第二に、68Kの内部レジスタは全て32ビットになっている。このため、剰余算やアドレス計算が容易に行える。更に、そのレジスタ群は用途についてあまり制限がない汎用レジスタ方式をとっていて、レジスタ間のデータ転送やデータのセーブ・ロードの回数が少なくてすむ。 第一に、セグメントという概念がない。そのため、常に16Mバイト(224バイト)のメモリ空間を一様にアクセスする事ができる。これは、機器組み込み用のCPUとして大きなメモリ空間があまり問題にならないときに、余計なオーバーヘッドがなく、都合がよい。 68Kには、3つの特徴がある。 2.1.1 68Kの特徴 2.1 68Kのアーキテクチャ 2. MPUの調査 MIRS制作に必要な部品の性能・機能を調査する事を目的とする。 1. 目的   許容損失低減率:ー1.1mV/゜C        コレクタ損失:90mW   コレクタ電流:25mA   エミッタ・コレクタ電圧:6V   コレクタ・エミッタ電圧:40V  Photo Transister   許容損失低減率:ー1.1mW/゜C   許容損失:90mW   逆電圧:6V   最大電流:60mA  LED 5.2.4 素子の最大定格     保存温度範囲:ー20ー80゜     使用温度範囲:0ー50゜C 5.2.3 環境仕様     正味重量:25g以下     最高回転数:6000rpm         スラスト:200g     軸荷重:ラジアル:200g     軸慣性モーメント:0.1g・cm2     軸始動トルク:5g・cm以下 5.2.2 機械仕様     光源:LED(GAAS)     出力振幅変動率:40%以下     出力信号振幅:150mVpーp以上     応答周波数:10kHz     出力信号:90゜±45゜位相差2信号     出力波形:近似サイン波     使用電源:5V±5%  40mA or less 5.2.1 電気仕様 5.2 マイクロエンコーダー仕様 A、Bの周波数は回転数に比例するからBのパルスを一定時間毎にカウントし回転数をデータ化する。データの読み込みはタイマー割り込みを使い、そのたびにカウンタはリセットされる   Fig5.2 A:Bの立ち上がり時にAはLなので出力はHとなる @:Bの立ち上がり時にAはHなので出力はHとなる 波形整形回路からの出力は2種類あり位相が90度ずれている。回転方向によってずれかたが違う。 また、フォト・インタラプタで発生したパルスを回転方向を含めてアップ/ダウン・カウンタでカウントすればモータの回転角度の累積値すなわち現在の、角度、位置を求める事ができる。カウントしたパルス数は7bitのパラレルデータに変換。カウンタはデータ保持のためD・F/Fを使用。 モータが一定回転するたびに一つのパルスを発生するロータリーエンコーダはインクリメンタル型と呼ばれ、この種のロータリーエンコーダは一般に円盤にスリットを切ってフォト・インタラプタによりスリットの通過を検出するようになっている。90°位相のずれた2ヵ所にフォト・インタラプタを配置すると、二個のフォト・インタラプタの位相関係からモータの回転方向を検出できる。 ロータリーエンコーダによる位置と速度の検出 5.1.2 位相弁別回路、カウンタ ロータリーエンコーダからの波形を方形パルスに整形しサーボボードに送る 5.1.1 ロータリーエンコーダ波形整形回路 回転軸の回転速度に比例した周波数を持つ2種類の擬似sin波を出力 既製品にコネクタを接続し、波形整形回路に接続できるようにしたもの 5.1 ロータリーエンコーダ Fig5.1 信号処理 5. ロータリーエンコーダの調査 ソフトから送られてくる8bitデータを、PWM制御回路を通すことにより、パルスを生成する。このパルスによってモータを動かすことにより、モータはパルス信号が送られていない間も惰性で回転するため、消費電力を節約するという利点がある。 7.11 パルスの説明 Cパルス生成回路(左)・・・B回路と同じ作業をする。 Bパルス生成回路(右)・・・ソフト部から送られてくる7bitの速度データをPWM信号に変換している。 Aキャリア信号生成回路・・・@回路からくる200[kHz]のクロックを256分周して、780[Hz]のキャリア信号を作る。 @クロック分周回路・・・MPUから出ている800[kHz]のクロックを4分周して200[kHz]にする。 7.10 PWM制御回路の説明 モータに電流が流れると、一時的に電力が急上昇し、それと同時にソフト部の電力が急降下し、支障が出る。そのため電源を別々にしなければならない。また、モータによるノイズがソフト部に影響を及ぼすので、グランドも別々にしなければならない。したがってソフト部との電気的つながりを一切断たなければならない。そこでフォトトランジスター(TLP521)を利用し、(2SK971)に電圧をかけ、モータのスイッチをON,OFFしたり、リレー回路によってモータに流れる電流の向きを変換させ、モータの回転方向を変換する。 7.9 可逆パワー変換ボードの説明 Fig7.5 可逆パワー変換ボード 7.8 可逆パワー変換ボード Fig7.4 速度データの説明 7.7 速度データの説明 Fig7.3 回路概略図 7.6 回路概略図 ∴A≦i≦B の間からギア比iを選ぶ。 速度面では i≦定格回転数・π・d/最高速度=B トルク面では i≧Tmax/適性負荷=A ギア比iは、 加減速に必要なトルク Tmax=Fmax・d/2 加減速に必要な力 Fmax=M・αmax 最高加速度      αmax [m/s2]とすると 最高速度       Vmax[m/s] タイヤの直径     d[m] MIRS本体の総重量  M[kg] 7.5 ギア比の算出方法 MIRSの電源としてNi−Cdバッテリー(7.2V−1700mAh)を2本使用する。1本は5Vに変換し、センサI/Fボードと68000I/Oボードに送られて、もう1本は、駆動用として可逆パワー変換ボードに送られる。メインスイッチにより5V電源が入り、スタートスイッチにより駆動用電源が入るようになっている。 7.4 バッテリーの調査 PWM制御は、直流モータをアナログ的に制御し、希望する回転数で回転させるための一つの方法である。その方法は、次のようである。適当なパルス列を発生、そのパルスによりスイッチングを行って、モータの端子に電圧を印加したり、開放したりする。この時、そのパルスのデューティー比を変えることにより、等価的なアナログ制御を行う。 7.3 PWM制御の調査 直流モータは、@モータの端子間に電圧をかけると、電流が流れトルクを発生してモータの回転を加速します。Aモータの端子間を短絡させると、モータは発電機となり、逆向きの電流が流れるため、回転をとめようとするトルクが発生しま。又、Bモータの端子間を開放すると、電流は流れないので、トルクは発生せず、惰性で回転を続けます。これをアナログ的に制御し、希望する回転数で回転させる方法の一つにPWM制御があります。 Fig7.2 DCモータのしくみ 7.3 DCモータのしくみ Fig7.1直流モータの特性 7.2 直流モータの特性 電機子抵抗 R0.33(Ω) 逆起電力定数 KE0.00044(v/rpm) トルク定数 Kt34.5(gf・cm/A) 無負荷回転数ωmax16400(rpm) 効率(定格時)70(%) 消費電力20.9(w) 定格出力 14.6(w) 定格回転数 ωn14200(rpm) 定格電流 in2900(mA) 定格負荷 τn100(gf・cm) 定格電圧 eo7.2(v) 製品名(メーカー)RS−380PH 7.1今回使用するモータの緒言 7.DCモータ 7DCモータの調査橋本秀史 6タッチセンサの調査大山利之 5ロータリエンコーダの調査落合剛 4赤外線センサの調査三尾雅彦 3超音波センサの調査和田淳 デヴィッド 2MicroProcessingUnit(MPU)の調査内山都茂子 1目的阿部巧 内容作成者 目次 調査研究報告書 赤外線LEDの故障 受光の故障 受光素子の接続が間違っている 波形が全く出ない 4.4.9   ICの故障 正常な波形が出ない 4.4.8   ICの故障 ICの取付方向が逆 波形が全く出ない 4.4.7   抵抗、コンデンサの間違い 波形が周期600μsぐらいにならない 4.4.6   ICの故障 ICの取付方向が逆 波形が全く出ない 4.4.5   抵抗、コンデンサの間違い(R3、R4が逆等) 波形が、38kHz,Duty比10%ぐらいでない 4.4.4   ICの故障 ICの取付方向が逆 電源の接続の間違い 波形が全く出ない 4.4.3   LEDの故障 LEDが点灯しない。 4.4.2   スイッチの故障 スイッチを押さないで導通しない。押しても切れない。 4.4.1   4.4 故障と原因について Fig4.1 受光素子の出力 受光素子(IS1U60)の1−3pinに電圧(+5V)を入力し、赤外線LEDに近ずけ、受光素子の出力(2pin)をオシロスコープで調べ、下の図のようになっている事を確認する。 4.3.5 IC3の3pinをオシロスコープで調べ、下の図のような波形になっている事を確認する。 4.3.4 IC2の3pinをオシロスコープで調べ、周期600μsぐらいである事を確認する。 4.3.3 IC1の3pinをオシロスコープで調べ、38kHz,Duty比10%ぐらいである事を確認する。 4.3.2 コネクタの3−4pin間の+5Vの電圧を入力する。この時LEDが点灯する事を確認する。 4.3.1 4.3 動作試験 コネクタの1−2pin間の導通を調べる。この時、スイッチを押さないで導通し、押すと切れる事を確認する。 4.2.2 回路図(JS.1)に従い、導通チェックをする。 4.2.1 4.2 導通チェック 4.1 部品実装チェック 検査手順 4. 勝敗判定装置 はじめに赤外線センサを周辺回路中のMOLEX3Pinと接続し電源をつなぐ。つぎに勝敗判定装置についている赤外線LEDを赤外線センサにちかづける。このとき30cm以下で出力がhighlevel、30〜73cmで出力が不安定、73cm以上で出力がlowlevelであればよい。(30cm以下もしくは73cm以上のときに出力がパルスになっているようであると74LS123が壊れている可能性あり。) 2.3 動作試験 CN3付近は配線が複雑なので、注意する事。 スルーホールが多いので、重点的にチェックする事。 CMOSが使われているので電流を流しすぎて壊すことがない様に注意する事。 GNDとVCCが接近している場所があるのでその部分の導通チェックは丹念に行う事。 その時、以下の事に注意すること。 回路図を見て、回路通りの結線がなされているかを確認する。(V94-CARD-203参照) 2.2 導通チェック 部品表と基板実装図を元に、部品の取付位置、取付方法をチェックする。(V94-CARD-303参照) 2.1 部品実装チェック 検査手順 この検査仕様書は、V94-CARD-103,203,303,403,503に適用される。 2. 赤外線センサ周辺回路 リレー回路の故障 緑色LEDが消灯せず、CN2が0Vでない。 6.4.7 緑色LEDの故障 緑色LEDが点灯せず、CN2が7.2Vでない。 6.4.6 リレー1の故障 緑色LEDが点灯し、CN2が0Vでない。 6.4.5 勝敗判定装置のスイッチが故障 リレー回路の故障 勝敗判定装置のLEDが消灯せず、CN6の2−3pin間が0Vとならない。 6.4.4 勝敗判定装置のスイッチ部の断線 リレー回路の故障 スタートスイッチの故障 勝敗判定装置のLEDが点灯しない。CN6の2−3pin間が5Vとならない。 6.4.3 リレーの回路の故障 勝敗判定装置が点灯、CN5の2−3pinが5V。 6.4.2 LEDの点灯回路の故障 STR9005の故障 メインスイッチの故障 メインスイッチによりLEDが点灯しない、+5Vが出ない。 6.4.1 6.4故障と原因について 勝敗判定装置を押す。この時、緑色LEDが消灯し、CN2が0Vである事を確認する。 6.3.6 スタートスイッを押す。この時、緑色LEDが点灯し、CN2が7.2Vである事を確認する。(但し、バッテリーの電圧は、変化するので、このようにならない事もある。) 6.3.5 メインスイッチを切り、バッテリーをCN1にもつなぐ。その後、メインスイッチを押す。この時、緑色LEDが消えており、CN2が0Vである事を確認する。 6.3.4 勝敗判定装置を押す。このとき、勝敗判定装置のLEDが消灯し、CN6の2−3pin間が0Vとなる事を確認する。 6.3.3 スタートスイッチを押す。この時、勝敗判定装置のLEDが点灯し、CN6の2−3pin間が5Vとなる事を確認する。 6.3.2 CN3にバッテリー、CN5に勝敗判定装置(検査済み)をつなぎ、メインスイッチをオンにする。この時、赤色LEDが点灯し、CN4の2−3pin間で、5Vが出ている事を確認する。また、勝敗判定装置のLEDが消灯し、CN6の2−3pinが0Vとなっている事を確認する。 6.3.1 6.3 動作試験 6.2 導通チェック 6.1 部品実装チェック 6. PowerDistributor SW1をOFFにして、勝敗判定装置のスイッチを押す。この時、モータの回転が止まる事を確認する。 8.3.5 電源ボードのメインスイッチをOFFにして、2pinにつながっていたものを4pinに、3pinにつながっていたものを5pinにつなぎかえる。この時、3と同じ動作を確認する。 8.3.4 SW1をOFF,SW2をONにして、電源ボードのメインスイッチをONにする。電源ボードのスタートスイッチをONにする。この時、右のモータが正転している事を確認する。次にSW2をOFFにする。この時、右のモータが逆転している事を確認する。そして、SW1をONにして、モータが止まる事を確認する。 8.3.3 Fig8.1 可逆パワー変換ボード検査回路 可逆パワー変換ボードのCN2に下の図のような回路をつなぐ。 8.3.2 可逆パワー変換ボードのCN3に右、CN4に左のモータをつなぐ。電源ボード(試験済み)のCN1,3にバッテリーをつなぐ。CN5に勝敗判定装置(試験済み)をつなぐ。電源ボード(試験済み)のCN2と可逆パワー変換ボードのCN2をつなぐ。 8.3.1 8.3 動作試験 8.2 導通チェック 8.1 部品実装チェック 検査手順 可逆パワー変換ボード 74LS161のCLKにHandshake2を接続しなければならなかったのに、Handshake1を接続している。 5.4.1 7Seg−Ledが順に表示しない(パルス点灯しない)。 5.4 故障と原因について 押しボタンを1回押してみてチャタリングが起きずに割り込みが1回発生しているかどうか確認する。 5.3.5 押しボタンスイッチ割り込み試験 図4のように4ビットスイッチをON/OFFさせて、それぞれ正しく入力されているかどうか確認する。 5.3.4 ビットスイッチデータ読み込み試験 図3のようにGreen,Red−Ledを点灯/消灯させて、それぞれ正しく点灯、消灯しているかを確認する。 5.3.3 Green,Red−Led.点灯/消灯試験 図2のように4桁の7Seg.−Led.が下位の桁から上位の桁へ、それぞれ正しく0〜9が表示されているかどうかを視認する。(点灯速度は確認可能な速さ。) 5.3.2 7Seg.−Led.表示試験 図1のように7Seg.−Led.が上位の桁から下位の桁へ正しく順番に表示されているかを確認する。(点灯速度は確認可能な速さ。) Fig5.4 4ビットスイッチデータ読込み試験 Fig5.3 green,red-LED.点灯/消灯試験 Fig5.2 7Seg-Led表示試験 Fig5.1 7Seg-Led順次表示試験 5.3.1 7Seg.−Led順次表示試験 5.3動作試験(テストプログラムによる試験) 5.2導通チェック 5.1部品実装チェック 検査手順 5. MMIボード TMPを行うとき理想としては赤外線センサ及び赤外線周辺回路を用いて行うのだが代わりに8ビットディップスイッチを用いて簡単な試験ボードを作ったほうが早い。またデータの読みだしを行う試験で一番最初におかしなデータが出る事ことがあるがこれは68230の赤外線信号のポート設定をダブルバッファ出力にしている為であるから気にする必要はない。 3.3.3 赤外線センサ回路 PWM回路のTMPは、I/OSubボードの他に可逆パワーボード、ギヤボックス、モータ、バッテリーを接続して行なうと試験の結果を確認しやすい。試験内容は第一に様々な速度データに伴いモータの回転数が変化するか?である。これは、PWM信号波形をオシロスコープで観察し、得るべきDuty比の波形が得られているかをみれば良い。また目視で速度データによりタイヤの回転数が上がったり下がったりすることを確認する。二つめに、方向データに伴いモータが正転又は、逆転するか?の試験である。これは、タイヤの回転方向が方向データによって変化するかどうかを目視で確認すれば良い。 3.3.2 PWM回路 試験を行うにあたって、ICE、コンピュータ、ボード、センサ等を接続する。基板と送受信回路の取り付け方については超音波センサ回路取扱説明書を参照の事。その他の接続に関しては、TMPの使用法のドキュメントを参照してください。準備が完了したら、TMPの指示に従ってセンサ選択機能、送信機能、受信機能、割込み要求機能、カウンタアンダーフロー機能の試験を行う事。回りこみ波を除去するため、あまり近い距離の計測はうまく行えない事に注意する事。 3.3.1超音波センサ回路 3.3 TMPによる動作試験 3.2 導通チェック 3.1 部品実装チェック 検査手順 この仕様書は、V94-CARD-**4、5、9、10、11、12に適用される。 3. I/Osubボード このドキュメントは、作製した基板についての評価・検査を行うための手順・方法を示す。 1. はじめに TMPの指示に従ってカウンタのアップカウント、ダウンカウント、タッチセンサのON、OFF、割り込みの動作等の試験を行うこと。カウント値は、ロータリエンコーダにOME−200−2Tを用いた時、ロータリエンコーダ1回転で1440となることを目安にしてください。 7.3.2 動作試験 TMPによる試験の為には、ice、コンピュータ、ボード、センサ等を接続しなければならない。I/Oボードとロータリエンコーダ・ボード、センサ類の取り付けにはロータリエンコーダ・ボード取扱い説明書(V94−SPEC−xxx)を参照すること。その他の接続は、TMPの使用法のドキュメントを参照すること。 7.3.1 準備 7.3 TMPによる動作試験 導通チェックに使用するテスターは、CMOS対応のものを用いること。(ICに電流を流しすぎて壊すことがないようにする為)GNDは基板の設計上、ロータリエンコーダ・ボード上では2つの島に分かれています。(2つのGNDは、I/Oボード(VIPC310)内でつながっています)コネクタJ3の1ピン、26ピン、IC5の11ピンの3ヶ所で1つの島、残りがもう一つの島になっています。ロータリエンコーダ・ボード単体では、2つの島をまたいでは導通しません。島の中だけで、導通チェックすること。 7.2 導通チェック 7.1 部品実装チェック 検査手順 7 ロータリーエンコーダボード 8可逆パワー変換ボード 7ロータリエンコーダボード 6PowerDistributor 5MMI/Fボード 4勝敗判定装置 3I/Osubボード 2赤外線センサ周辺回路 1はじめに 目次 エレクトロニクス基板検査手順書             計9名   和田 淳42ソフトウェア 三尾雅彦33ソフトウェア 塩崎晃弘15エレクトロニクス デビッドスギャント21エレクトロニクス 橋本秀史27エレクトロニクス 落合 剛10メカニクス Member内山都茂子4メカニクス D−Manager大山利之8メカニクス Manager阿部 巧1エレクトロニクス MIRS開発体制 Fig1.1 モジュール構成図 1 ソフトウェア構成 6.16タイマ割り込み処理 6.15システム関係モジュール 6.14超音波測定 6.13超音波モード 6.12モード選択 6.11リセットモード 6.10赤外線モード 6.9ノーマルモード 6.8メイン関数 6.7ポート入出力 6.6イニシャライズモジュール 6.5回避モード 6.4mmi表示 6.3運動制御 6.2自己状態演算 6.1タイマ割り込み処理コマンド入力 MIRS9401本線用プログラム −目次− 6 プログラム *(B),(C),(D),(F)は本戦と同じである。 *タッチセンサの(後)とは勝敗判定装置のことである。 超音波センサ試験(循環)5 (F) 超音波センサ試験(左)4 (D) 超音波センサ試験(前)3 (C) 超音波センサ試験(右)2 (B) タッチセンサ試験1(左)(後)(右) 赤外線センサ試験0(左)(前)(右) 試験名7SEG_LED 7SEG_LED 3.2 各センサ試験時 赤外線センサが反応したときに光る。 緑LED 5 4 3 2 1 初期動作モード 回避モード 超音波モード 赤外線モード ノーマルモード モードは次のように表示する。 ビット3:現在のモード ビット2:現在位置(1〜5) ビット1:行動 ビット0:各モードにより異なる 7SEG_LED 3.1 本戦、ペナルティー戦の時 各モードにおける表示データ *基本正方形の一辺の長さ[cm] 0xxx左回り1xxx右回り x0xx低速x1xx高速 xx0xmode=NOMALxx1xS=120 xxx0mode=NOMALxxx1mode=INI_M パターンモード名パターンモード名 ディップスイッチパターンとモードの対応   ディップスイッチ * 4   赤LED     * 1   緑LED     * 1   7SEG−LED * 4 MIRSの状態の確認、モードの選択をするのに次のようなスイッチ、LEDを用いる。 3 マンマシンインターフェイス仕様 Fig2.2 フローチャート2 Fig2.1 フローチャート1 2.2 フローチャート 一定間隔で呼び出され、必要な関数を起動する。 処理 超音波測定、自己状態演算 関係するモジュール Output Input 三尾 製作担当 C言語 使用言語 タイマ割り込みモジュール モジュール名 MIRS鋸王道開始、停止の動作を行う。 処理 イニシャライズモジュール 関係するモジュール Output Input 三尾 製作担当 C言語 使用言語 システム関係モジュール モジュール名 タイマ割り込みにより起動され、定期的に超音波センサの値を読むと同時 に超音波送信もする。 処理 超音波モード、タイマ割り込みモード 関係するモジュール 超音波測定データ Output Input 三尾 製作担当 C言語 使用言語 超音波測定 モジュール名 超音波センサのデータに基づいて探索行動をする。 処理 超音波測定、自己状態演算、運動制御 関係するモジュール 行動命令 Output 超音波センサデータ、現在位置 Input     製作担当 C言語 使用言語 超音波モード モジュール名 各データに基づいてモードの選択をする。 処理 ノーマルモード、赤外線モード、回避モード、自己状態演算 関係するモジュール モード Output 現在位置、タッチセンサデータ、赤外線センサデータ Input 和田 製作担当 C言語 使用言語 モード選択 モジュール名 変数の初期化等。 処理 イニシャライズモジュール 関係するモジュール Output Input 三尾 製作担当 C言語 使用言語 リセットモード モジュール名 赤外線データを元に追跡動作を行う。 処理 運動制御 関係するモジュール 行動命令 Output 赤外線センサデータ Input 和田 製作担当 C言語 使用言語 赤外線モード モジュール名 現在位置を元に通常動作を行う 処理 自己状態演算、運動制御 関係するモジュール 行動命令 Output 現在位置 Input 三尾 製作担当 C言語 使用言語 ノーマルモード モジュール名 ポートの入出力 処理 関係するモジュール 各信号 Output レジスタの内容 Input 三尾 製作担当 C言語 使用言語 ポート入出力 モジュール名 各変数の初期化、MMIの設定 処理 ポート入出力 関係するモジュール Output Input 三尾 製作担当 C言語 使用言語 イニシャライズモジュール モジュール名  タッチセンサの反応と自己位置より回避行動をする。 処理 自己状態演算、運動制御 関係するモジュール 行動命令 Output 現在位置、タッチセンサ信号 Input 和田 製作担当 C言語 使用言語 回避モード モジュール名 MIRSの様子をLEDを通して知らせる。 処理 関係するモジュール mmi信号 Output 現在位置、行動、モード Input 三尾 製作担当 C言語 使用言語 mmi表示 モジュール名 各モードから行動命令を受け取り、それに伴った動きをするようPWM信 号を出す。 処理 ノーマルモード、赤外線モード、回避モード、超音波モード 関係するモジュール PWM信号 Output 行動命令 Input 和田 製作担当 C言語 使用言語 運動制御 モジュール名 ロータリエンコーダの値を読み込み、自己位置の計算を行う 処理 回避モード、赤外線モード、ノーマルモード 関係するモジュール 自己位置、ロータリエンコーダカウント値 Output Input 和田 製作担当 C言語 使用言語 自己状態演算 モジュール名 ディップスイッチの値を読み込みそれにあったモードを決定する。 処理 モード選択  関係するモジュール 決定モード Output ディップスイッチ入力信号 Input 三尾 製作担当 C言語 使用言語 コマンド入力 モジュール名 2.1 ソフトウェア・モジュール仕様書 2 モジュールの詳細 変更した時は、Ver Noを変える。 自分で使う作業用FDを別に用意しておき変更等を行う 個人で持ち出ししない。 学校内に、プログラムをFDに一通りセーブしておく。 5.8 FD管理規定、変更管理規定 その他の内部変数は、プログラム製作者に任せる。又、必要があれば内部変数の説明の為にコメントを加える。 while文でカウントする時、内部変数はconutを用いる。 for文での内部変数は、i,j,k を用いる。 5.7 内部変数の定義 }               その関数の説明、関数の名称*/         (  ); /*他の関数を呼び出す時    :  プログラム開始  内部変数 { 引き数の定義 [tab][tab]/*各因数の意味*/ (関数名)( )[tab][tab]/*内容の説明*/ コメントを書く場合は、以下のようにする。 5.6 コメント }              プログラム終了                  : :              プログラム開始 [tab] } [tab][tab]    プログラム  [tab]     for(   ){           :            :  [tab]      プログラム開始 [tab]      内部変数 { 引き数の定義 (戻り値の型)(関数名)(データ) 関数本体の書式を以下に示す (仕様言語はC言語) 5.5 開発本体の規約 書式 (関数名称) ( ) 共通の関数 書式(名称)(モジュール番号) ( ) あるモジュール内の関数 書式   (モジュール名)[ス]MOJ( ) モジュールを関数にする場合 関数の書式を以下に示す 5.4 関数名の規定 書式   (名称)(Ver.No).(c等の拡張子) ファイルの書式を以下に示す 5.3 ファイル名の規定 その他特記事項 前回変更した日付の下に書き込む プログラムの変更日付 書式   〇〇〇〇.〇〇.〇〇 プログラムの作成日付 小さな訂正をした場合   □を変える 大きな訂正をした場合   △を変える バージョンナンバーの変更は以下のように行う 書式   Ver No △−□ プログラムのバージョンナンバー プログラムの内容を簡単に横に記す プログラム名 プログラムのはじめに次に示す内容を記す。 5.2 プログラム書法の規定 (名称)−DAT データの名称 (名称)−MOJ モジュールの名称 5.1 モジュール名称、データ名称の規定 5 開発規約 Z進行距離累積[cm] Th自己姿勢角 Xc,Yc自己座標[cm] Th_ref目標角 Pr,Pl左右車輪の進行距離[cm] 4.3 float関数群 PulsePWM信号(0〜127) Mr,Ml左右車輪の進行距離[cm] 4.2 unsignedint関数群 Led2redダイオードデータ(ON,OFF) Led1greenダイオードデータ(ON,OFF) Seg[4]7セグメントLedデータ Z_ref目標前進距離[cm] Ze前進確認信号(1:OK 2:NO) 1:OK2:大 3:小 Th_e目標角に対する位置 Act行動命令 Tc,Sc遷移カウンタ Ts_dタッチセンサデータ Ps_d赤外線センサデータ Posi自己位置 Tmcタイマカウンタ Dist[3]    超音波センサデータ(0:左1:前2:右)[cm] 3:回避モード4:超音波モード mode1:ノーマルモード2:赤外線モード flagON:遷移可 OFF:遷移不可 MirsON:正常  OFF:異常 Turn1:左回り 2:右回り V1直線進行速度 S基本正方形の一辺の長さ/2[cm] 4.1 int型関数群 *外部変数のみの仕様とする。内部変数につては各関数内で表記する。 4 変数仕様書 MIRS9401成果物へ戻る 6プログラム 5開発規約 4変数仕様 3マンマシンI/F仕様 2モジュールの詳細 1ソフトウェア構成 内容 目次 ソフトウェア詳細設計仕様書 まずまずの動きができるようになった。 <結果> テスト走行用プログラムを元に本線用プログラムを作成。このプログラムでMIRS競技会に挑戦。 3 本線用プログラム このプログラムにより一通りの動きができることを確認。 <結果>  13:右超音波センサ試験  12:前超音波センサ試験  11:左超音波センサ試験  10:タッチセンサ試験   9:ノーマルモード動作試験   8:赤外線センサ試験   7:右に45度回転   6:左に45度回転   5:右に180度回転   4:左に180度回転   3:右に90度回転   2:左に90度回転   1:一メートル進んで停止 規定走行で上手くいかなっかった原因を見つけるため、テスト走行用プログラムを作成。ディップスイッチによって、いくつかの試験が可能。 2 テスト用プログラム 一応、PWMの制御はできたが予想と違う動きをした。原因はこの時点ではつかめなかった。後になってロータリエンコーダの制御の仕方が悪かったのに気がつく。 <結果> 一辺一メートルの正方形を描くようなプログラムを作った。 1 規定走行用プログラム ソフトウェア試験報告 4-3基板シャーシ図面一覧表 1 F_CHAS_3.SAM 96/3/8 5 4-2車輪シャーシ図面一覧表 1 F_CHAS_1.SAM 96/3/8 4 パイプ 3 M0001_1.ZWD 96/1/31 3 MIRS9401システム(側面図) 6 M0000_2.ZWD 96/2/14 2 MIRS9401システム(正面図) 8 M0000_1.ZWD 96/2/19 1 Check Contents Revision Filename Date No. 4.1 機械図面一覧表 4 図面一覧表 壁や相手機との接触による衝撃で勝敗判定装置が自動的に押されないように考慮する。 シャーシの連結にはM8のとおしネジを使う。シャーシとシャーシの間隔はネジにパイプを通すことによって同じ幅にする。 2.2.3 その他 塩ビ板に駆動系とタッチセンサを配置する。駆動系に正常な動作をさせる為に左右対称に配置する。 2.2.2 下段シャーシ部 また、シャーシの上下に赤外線センサ、超音波センサ、モーターパワーサーキット、後部には勝敗判定装置を取り付ける。また、左右の赤外線センサ、超音波センサは、正面に対し45度になるように取り付ける。 塩ビ板の中央にVMEラック、左右にバッテリをのせる。VMEラックの上にはマンマシンインターフェースフロントボードとパワーディストリビュータをのせるために基板固定補助板を取り付ける。重い部品が多いので左右のバランスを考慮して配置する。バッテリーは取り外しが簡単にできる様に固定する。VMEラックの中にはVSPC310、I/Oサブボード、マンマシンインターフェースボード、VSBCー1をのせる。     2.2.1 上段シャーシ部 2.2 構造要求仕様 システムに、取り付けられる部品は、すべて取り外し可能とし、保守性の向上を図る。 2.1.9 その他 ケーブル・コネクタは、システムを分解せずに取り付け可能にし、ケーブルはテープなどで固定しコネクタに負担がかからないようにする。 2.1.8 ケーブル・コネクタ SW操作、LED表示による操作性、視認性の向上を図る。 2.1.7 マンマシーンインターフェイス系 バッテリーは2つ使用し、取り外しができるようにする。また、上段シャーシに取り付け、配線しやすいようにする。 2.1.6 電源系 規定の高さに取り付ける。相手にスイッチを押されたときに壊れないようにする。 2.1.5 勝敗判定装置系 タッチセンサは、下段シャーシの前方に2つ取り付ける。 2.1.4 タッチセンサ系 前と左右にそれぞれ1対ずつの超音波センサを取り付ける。取り付け方については、正面に対し90度になるように取り付ける。センサの前方にはMIRS本体の部品等が無いように配置する。センサは上段に取り付ける。 2.1.3 超音波センサ系 前と左右に1つずつ、計3つの赤外線センサを上段シャーシに取り付ける。左右の赤外線センサは、正面に対し45度になるように取り付ける。センサの前方にはMIRS本体の部品等が無いように配置する。 2.1.2 赤外線センサ系 2つのタイヤとモータ、モーターパワーサーキットによって、前進・後退や方向転換を行う。また2つの補助輪を取り付けることでシステムの安定を保つ。 2.1.1 駆動系 2.1 機能要求仕様 2 要求仕様 3 組立図ツリー "> 基本設計書に基づき、MIRS9401のメカニクスに関する詳細設計を行なうことを目的とする。 1 目的 6図面(頭脳WinCAD) 5部品表 4図面一覧表 3組立図ツリー 2要求仕様 1目的 subtitle 目次 メカニクス詳細設計仕様書 各モードの動作やモードの遷移が正しく実施されるのを確認し、できることなら他の班のMIRSと競技を実施する。 12.3 競技モード動作試験 ペナルティ戦動作試験では、競技場相当の壁を置き、MIRSの大きさに近くやわらかい素材のものを相手とみなして実施する。 12.2 ペナルティ戦動作試験 赤外線センサが正常に動作することを確認する。また、光源の位置を変化させ、その光源を追尾できるかを確認する。 赤外線センサ性能試験 超音波センサが正常に動作することを確認する。また、相手(または障害物)との距離を計測できるかを確認する。 超音波センサ性能試験 ロータリーエンコーダの情報より、一番近い角に行くかを確認する。また、角まで移動したら、正面の超音波センサを用いて、自分の位置を確認し、位置の補正を行ない、自機が競技場の対角線方向を向くことを確認する。 自己位置修正試験 タッチセンサに反応があった場合、ロータリーエンコーダの情報により壁か相手かを判断できるかを確認する。また、その時正常に回避するかも確認する。 回避試験 相手の真横に行き、向きを相手の方にむけることを確認する。また、相手がいなくなるもしくは光源を発見するまで行うことを確認する。 回りこみ試験 ロータリーエンコーダにより、一定の角度を回転できることを確認する。 回転走行試験 初期動作モードにおいて一定時間停止していることを確認する。また、対角線上を移動している時、壁がある程度接近したら、停止することを確認する。 一旦停止試験 ロータリーエンコーダで確認しつつ、MIRSがまっすぐ進むこと・対角線上を進むことを確認する。 直線及び対角線走行試験 MIRSシステムの起動及び終了が正常に行われることを確認する。 システム起動試験  試験項目 (これら試験は、複数の試験を組み合わせても行う。) その場回転、直進、正方形、円、の走行試験を行う。 12.1.2 規定走行試験 各センサについて測定値を7segLEDに表示し、目視により確認する。 12.1.1 センサ試験 12.1 機能試験(試験モード) 総合試験はハードウェアの組み立てが完了した後、機能試験、ペナルティ戦動作試験、競技モード動作試験の3段階に分けて行う。 12 総合試験計画 センサ類  超音波センサ、赤外線センサ、タッチセンサを使用する。 勝敗判定装置ロボット後面に取り付ける(詳細位置は未定)。 モータ   MAXON 34 基本I/O基盤 VIPC310 MPUボード  VSBC1(PEP社製)       制御系 15W以下(5V、3A 電源回路の制限による)。 消費電力  駆動系 36W以下(7.2V1700mAhのNi-Cd電池の制限による)。 電源    駆動系と制御系は電気的に完全に分離されており、各消費電力は20分の連続運転が可能な電源容量を有すること。 塗装    ロボットの前面、後面及び側面はつや消し黒で塗装すること。 寸法    ロボット本体の寸法は縦25p、横25p以内であること。(未定) 3 諸元 Fig11.1 モジュールの遷移 各モジュールのデータに基づき、9章に記載される動作を実現する.このモジュールにより走行制御モジュールが起動される。 1.行動計画モジュール 3つの超音波センサの測定したデータに基づき,時機の位置を確認し、自己位置確認モジュールのデータを補正する。 2.自己位置補正モジュール タッチセンサが反応するとこのモジュールが起動される。タッチセンサの状態を読み込む。 3.タッチセンサモジュール 行動計画モジュールから起動される。起動時に軌跡と目的位置のデータが入る。目的位置に到達するまで0.5秒毎に再起動され、与えられた軌道に対する差を補正しながら自機を移動させる。目的位置に到達したときは行動計画モジュールを起動させる。実行中に実行を強制停止する機能を有する。 4.走行制御モジュール 赤外線センサが反応するとこのモジュールが起動される。赤外センサの状態を読み込む。 5.赤外線センサモジュール 3つの超音波センサにより順次距離を測定する。 6.超音波センサモジュール ロータリエンコーダのカウント値を読み込み,自己位置(X,Y,Θ:姿勢角)を計算する。 7.自己位置認識モジュール 電源投入時またはリセットボタン挿下時に一回だけ起動され、処理終了後、行動計画モジュールを起動する。初期診断プログラムの実行、ハードウェアの初期設定,自己位置を競技開始位置に設定,モジュールの初期化を行う。またDIPスイッチの内容を読み込む。 8.初期設定モジュール 本ソフトウェアは、昨年までのソフトを基にして、独自のソフトウェアを作成する。以下に各モジュールについて説明する。 11 ソフトウェア構成 本仕様書はMIRS競技規定に基づき94年度1班の作成する自立型小型知能ロボットの基本仕様を記述する。 1 目的 MIRS9401は、車輪シャーシと基板シャーシの2段構造からなる。車輪シャーシには主に駆動系の部分品が、基板シャーシには主に基板類が取り付けられる。主な基板はすべてVMEラック内に収容し、取り付けや取り外しが簡単に出来るようにする。センサ類はそれぞれ取り外し可能とし、保守性の向上を図る。センサ類の位置は、外観図に示す。 上図は、MIRS9401の構成を示している。 Fig7.1 MIRS9401構成ツリー 7 システム構造 9.割込み発生装置(押しボタンスイッチ) 10.緑、赤のLEDによるマシンの状態の表示。 11.4桁の7セグメントLEDによる、0000〜9999までの表示。 9.10 マンマシンインターフェース また、スタートスイッチが押されてから勝敗判定装置が押されるまで電力をモータへ供給する。      ±12[V] 最大 100[mA] をエレクトロニクス回路に供給する。 電源より +5 [V] 最大 3 [A] 9.9 電源回路 ・容量:1700[mAh] ・電圧:7.2[V] ・電池 Ni-Cd電池 1700SCR(田宮) 9.8 電源   ギア効率 :76[%]   ギア減速比:16.00:1   ギア型番 :GPO26A037-0016b1A00A   端子間電圧:7.2[v]   無負荷電流:53.90[mA]   端子間抵抗:1.34[ohm]   トルク定数:16,30[mNm/A]   モータ型番:REO25-055-34EBA200A 9.7 モータ ロータリエンコーダから信号を読み込んでカウンタでカウントし、CPUの要求に応じてカウント値を出力するものである。 9.6 ロータリエンコーダ機能 方形波のduty比を0〜50%まで128段階で変化させる機能を持つ 9.5 PWM回路 マイクロスイッチを用い、異物との接触を判断するものである。本システムではマイクロスイッチを4個使用する。 9.4 タッチセンサ 赤外線センサ回路は、赤外線の受光状態を2つの値(反応有り,無し)で得るようになる。この回路は、赤外線センサの受光素子から送られてくるH又はLの信号を処理し、信号に状態変化が起きたときに、割り込み要求信号をCPUに送る機能を有する。最大8個のセンサを用いる事ができるが本システムでは3個使用する。 9.3 赤外線センサ回路 測定範囲は20cm〜6mで測定誤差は±1cm以内とする。一定時間内に反射波を受信できない場合カウンタはアンダーフロー信号を出す。信号としては測定距離を8ビットで表し、アンダーフロー信号は0016として表す。 検地距離     0.2〜6.0m 分解能       9 静電容量      2000pF 指向性(半減全角) 50° 音圧        112dB以上 感度        −67dB以上 公称周波数     40kHz 特徴        汎用・広帯域 品名        MA40B5R/S この機能は指定した超音波センサから超音波を送信させ、受信するまでの時間をカウント値として測定するものである。本システムは以下の超音波センサを用いる。 9.2 超音波センサ回路 詳細は、仕様書VSBC-1UsersManualDocumentNo.525-UM-0002Issue3を参照。 ・製造元:PEPModularComputers ・サイズ:100×160(mm) ・CPU:MC68HC000 クロック:12.5MHz      SingleBoard(68HC000)ComputerModulefortheVMEbus ・名称 :VSBC-1 9.1 MPUボード 9 各部品の有する機能・性能 MIRS本体の移動、回転速度は、モータの回転速度に比例する。 非常停止・・・左右のモータを停止させる。 左回転・・・・同じ速度で左モータを逆転、右モータを正転させる。 右回転・・・・同じ速度で左モータを正転、右モータを逆転させる。 後退・・・・・左右のモータを同じ速度で逆転させる。 前進・・・・・左右のモータを同じ速度で正転させる。 情報処理機能からの指令値を基に、モータを回転させる機能を有する。 6.2.3 駆動機能 各追跡モードで相手MIRSを見失ったとき、自己位置の補正をするとき、そしてタッチセンサで前方の障害物を確認したときなど必要に応じて、それまで保存したデータをメインへ送るようにする。 ロータリーエンコーダに対して 超音波探索、追跡モードと自己位置補正モードそして初期動作モードと回り込みモードのときに超音波を出すようにする。 超音波センサに対して 収集司令部 これにより、タイヤの回転数と回転方向(正転、逆転)を計測、認識する機能を有する。 ロータリーエンコーダ 自機の正面に障害物(相手MIRSもしくは壁)があるかないかを認識する機能を有する。 タッチセンサ 相手MIRSの光源(LED)を見つけるという機能を有する。また、3つ使うことで正面もしくは左右どちらかの斜め前のどこに光源があるかおおよその見当がつくようになっている。 赤外線センサ 自機から壁、もしくは相手MIRSまでの距離を計測する機能を有する。 超音波センサ 収集部 6.2.2 情報収集機能 自機位置、相手機位置、情報及び現在の動作モードを認識し次に行うべき動作モードを決定する。 モードマネージメント機能 駆動以外の動作の指令(情報収集指令など)をすべて行う。 行動指示機能 各動作モードに応じて時機を移動させるための指令を駆動機能に送る。 駆動指示機能 超音波センサ(タッチセンサ)からの情報と自己位置データを照らし合わせ相手位置を認識する。 相手位置認識機能 ロータリエンコーダ、(必要に応じて)超音波センサからの情報により自己位置を認識する。 自己位置認識機能 6.2.1 情報処理機能 6.2 基本機能説明 Fig6.2 基本機能概略図 6.1 基本機能概略図 6 システム基本機能 本システムは、競技主催者(学科)より貸与されるMPUボード及びI/Oボードを用い、自立的に行動する小型ロボットを実現する。本システムは超音波センサ、赤外線センサ、ロータリエンコーダなどを用い相手機を捜索、追跡し勝敗判定装置を押すことを目的とする。これらを実現するための機能として情報収集機能、情報処理機能、そして駆動機能を有する。本システムの移動は2つの車輪で行いそれぞれが独立駆動する。また、すべての事項はMIRS競技規定に適合するように設計されている。 2 システム概要 本システムの外観的な特徴は、変形六角形型で超音波及び赤外線センサが斜め45°を向いていることであり、それによって前方の広範囲の領域を探索できるようになっている点と、ただ真横にむけるよりも斜め前方(前方の超音波センサだけでは捕らえきれない領域)から来る相手を迅速に捕らえる事ができるという点で有利となると思われる。 外観を前項に示す。 4.2 特徴 Fig4.2 システム外観図[左側面] Fig4.1 システム外観図[前面] 4.1 システム外観 4 システム外観・特徴 Fig8.1 エレクトロニクスハードウェア構成 下図に本システムのエレクトロニクスハードウェア構成を示す。本システムに使用する基板はすべて1994年卒業研究のV-Project94で開発された最新版を用いる。各部の機能・性能の概略は9章で述べる。 8 エレクトロニクスハードウェア構成 *:遷移条件が成立しないとき現在のモードに留まる。 x:この状態へは遷移しない。 q:ディップスイッチによりペナルティ競技対応が選択されたとき。 p:ディップスイッチにより試験モードが選択されたとき。 o:位置修正が終わったとき。 n:相手機の光源を見失ったとき。 m:赤外線センサにより相手機の光源を捕らえている間繰り返す。 l:相手機を超音波センサで探知しているあいだ繰り返す。 k:超音波探索モードにおいて相手機を発見できなかった場合。 j:相手が30p以内にいる間、回り込みモードを繰り返す。 i:赤外線センサにより相手機の光源を発見したとき。 h:タッチセンサに相手、又は壁が触れたとき回避モードに移り、回避が終了したらもとのモードに戻る。 g:超音波センサにより相手機の移動を確認したとき。 f:超音波センサによる相手機の確認ができなくなったとき。 e:相手との距離が30p以上になったとき。 d:相手との距離が30p以内になったとき。 c:相手の動きを探知したとき(初期において相手の位置は既知) b:相手と一定距離(30p)まで近付いたとき。 a:ディップスイッチにより競技モードが選択されたとき。 動作モードの遷移条件 テストpxxxxxxx* 赤外線xiiiixhmx 回避xxhhhx*hx 自己位置xxxkf*xxx 超音波追xceglxhxx 超音波探qxx*xohxx 回りこみxbjxdxhxx 初期動作a*xxxxxxx 遷移先初期設定*xxxxxxxx 初期設定初期動作回りこみ超音波探超音波追自己位置 回避 赤外線 テスト  状態 表10.1 モード遷移表 Fig10.1 モード遷移図 ハードウェア組立完了後に行なう試験のためのモード。試験内容については12章に示す。 1.試験モード ロータリエンコーダを用い、競技場の角まで移動する。この時ロータリエンコーダの情報から一番近い角を選ぶ。角まで移動したら、正面の超音波センサを用いて、自分の位置を確認し、位置の補正を行う。その後、自機を競技場の対角線方向に向ける。 2.自己位置修正モード タッチセンサに反応があったら、壁か相手かロータリーエンコーダの情報から判断する。壁なら10cm程度後退して、180度回転する。相手だったら、しばらく待って10cm程度後退し90度回転する。 3.回避モード 3つの赤外線センサを用いて相手の光源を追跡する。正面のセンサで相手のLEDを捕える様に進む。 4.赤外線追跡モード まだ相手が正面にいたら、1.2.の動きをもう一度行う。 向きを相手の方に向ける。 相手の正面にいて45゜回転し、相手の真横に来るまで進む。 1.回りこみモード 3つの超音波センサを用いて常に正面の超音波センサで相手機を捕らえるように前進する。 2.超音波追跡モード 自機を前進させながら、超音波センサで相手を探す。 3.超音波探索モード スタートボタンが押されたら、ロータリエンコーダに自分の位置を読み込ませ、相手が規定の位置にいることを確認、一定時間待ち、相手が動かなかったら少し前進する。そこでいったん停止して、また、一定時間待ち、相手が動かなかったら少し前進する。この動作を繰り返す。 4.初期動作モード 必要なイニシャライズを行い、ディップスイッチにより競技モード、テストモード、ペナルティ戦対応のいずれかを選択する。 5.初期設定モード 10 システム動作モード MIRS組み立て終了後に行なう各種試験のためのモード。詳細は12章に示す。 5.3 試験モード 他は競技モードに同じ。 ペナルティ戦については競技開始時から超音波探索モードになる。 5.2 ペナルティ戦 モードの定義、遷移条件については10章で述べる。 競技が開始されると、まず、超音波センサで相手が前方にいることを確認する。相手が動かなかったら、相手が前方にいることを確認しながら前進する(初期動作モード)。相手を見失った場合、競技場の角まで移動して、競技場の対角線上を進みながら超音波センサで相手を探す(超音波探索モード)。相手を発見したら、前方の超音波センサで相手を追跡する。相手が前方のセンサから消えたら、左右のセンサにかかるまで待機し、相手がどちらに動いたか確認したら相手の方を向き追跡する(超音波追跡モード)。ある程度の距離まで接近したら、45度回転して相手の真横に移動する。いったん、相手の方を向いて相手が正面にいたら、また45度回転し、移動する(回りこみモード)。赤外線センサに反応があったら、3つのセンサを用いて相手の赤外線を追跡する(赤外線追跡モード)。タッチセンサに反応があったら、10p程度後退して90度、又は、180度回転する(回避モード)。 5.1 競技モードでの動作 本システムは、競技モード、試験モードおよびペナルティ戦対応の3つのモードを有する。試験モードは総合試験を行うためのモードで詳細は12章で規定する。 5 動作概要 12総合試験計画大山利之 三尾雅彦 11ソフトウェア構成和田淳 三尾雅彦 10システム動作モード和田淳 内山都茂子 大山利之 阿部巧 内山都茂子 三尾雅彦 和田淳 9各部品の有する機能・性能 8エレクトロニクスハードウェア構成内山都茂子 7システム構造内山都茂子 6システム基本機能阿部巧 三尾雅彦 橋本秀史 5システム動作概要内山都茂子 落合剛 三尾雅彦 4システム外観、特徴 3諸元阿部巧 2システム概要阿部巧 1目的阿部巧 内容作成者 目次 システム基本設計仕様書 4.3.5 試験完了 4.3.4 試験完了     対処:はんだを付けなおすことで解決。     原因:導通すべきところが、はんだ付けのミスで導通していない トラブル内容:IC1の3pinをオシロスコープで調べたが、38kHz,Duty比10%ぐらいの信号が現われない。 4.3.3 試験完了 4.3.2 試験完了 4.3.1 試験完了 4.3 動作試験 4.2.2 問題なし 4.2.1 導通すべき所が導通していない。 4.2 導通チェック 問題なし 4.1 部品実装チェック 4. 勝敗判定装置 試験完了 2.3 動作試験 問題なし 2.2 導通チェック 問題なし 2.1 部品実装チェック 2. 赤外線センサ周辺回路 6.3.5 試験完了 6.3.4 試験完了 6.3.3 試験完了 6.3.2 試験完了     対処:はんだを付けをおすことで解決。     原因:導通すべきところが、はんだ付けのミスで導通していない。 トラブル内容:Red−Ledが点灯しない。 6.3.1 試験完了 6.3 動作試験 導通すべき所が導通していないし、導通しなくてはならない所がしていない。 6.2 導通チェック Green−Ledの向きが逆さまである。 6.1 部品実装チェック 6. PowerDistributor 8.3.5 試験完了 8.3.4 試験完了 8.3.3 試験完了 8.3.2 試験完了 8.3.1 試験完了 8.3 動作試験 問題なし 8.2 導通チェック 問題なし 8.1 部品実装チェック 可逆パワー変換ボード 5.3.5試験完了 5.3.4試験完了     対処:リード線でパターンをつなげることで解決。     原因:パターンがきれている。 トラブル内容:Green−Ledが点灯しない。 5.3.3試験完了     対処:リード線でパターンをつなげ、はんだを付けなおすことで解決。     原因:パターンがきれている。導通すべきところがはんだ付けのミスで導通していない。 トラブル内容:最下位桁と最上位桁で、それぞれセグメントが1つ表示されない。 5.3.2試験完了     対処:リード線でパターンをつなげ、はんだを付けなおすことで解決。     原因:パターンがきれている。導通してはいけない所が、はんだ付けのミスで導通している。 トラブル内容:0と表示される所が4と表示されてしまう。 5.3.1試験完了 5.3動作試験 導通すべき所が導通していないし、導通しなくてはならない所がしていない。 5.2導通チェック 問題なし 5.1部品実装チェック 5. MMIボード     対処:新しいTMPを使用する事によって解決。     原因:TMPによる誤動作。        (ONになったりOFFになったりする。) トラブル内容:赤外線のデータが一定でない。 3.3.3 試験完了     対処:はんだを付けなおすことで解決。     原因:導通すべきところが、はんだ付けのミスで導通していない トラブル内容:左のモータがDuty比を0にしても止まらない。 3.3.2試験完了     対処:はんだを付けなおすことで解決     原因:導通すべきところが、はんだ付けのミスで導通していない トラブル内容:超音波を受信しない。 3.3.1試験完了 3.3 動作試験 導通すべき所が導通していないし、導通しなくてはならない所がしていない。 3.2 導通チェック 問題なし 3.1 部品実装チェック 3. I/Osubボード このドキュメントは、作製した基板をMIRS9401エレクトロニクス基板検査手順書(94DS-1-007)に基づいて検査・評価の結果を報告するものである。また、以下に示す番号はすべてMIRS9401エレクトロニクス基板検査手順書(94DS-1-007)と同様のものを使用している。 1. はじめに     対処:はんだを付けをなおすことで解決。     原因:導通すべきところがはんだ付けのミスで導通していない。 トラブル内容:カウント値が正しくない。タッチセンサの割り込みがはいらない。 7.3.2 試験完了 7.3.1 問題なし 7.3 動作試験 導通すべき所が導通していないし、導通しなくてはならない所がしていない。 7.2 導通チェック ラダー抵抗の向きが逆だった。 7.1 部品実装チェック ロータリーエンコーダボード 8可逆パワー変換ボード 7ロータリエンコーダボード 6PowerDistributor 5MMI/Fボード 4勝敗判定装置 3I/Osubボード 2赤外線センサ周辺回路 1はじめに 内容 目次 エレクトロニクス検査報告書 6.超音波センサの場合、一つずつ検査を行い適当な障害物を置いてそれを近づけたり遠ざけたりしてそこまでの測定距離を7segLEDにcm単位で表示させ、実際にメジャーで計った長さと比べた。結果はほぼ正確な長さを計ることができた。また、2m前後まで計ることができた。 7.赤外線センサの場合も同様に赤外線をあててみて、反応しているのなら7segLEDに表示するようにしたらすべてのセンサが反応した。 8.タッチセンサの場合、それを押してみて反応していたら7segLEDに表示をする様にしたところ、両方とも反応した。 2.3センサ類 9.目標角をその時の姿勢角に45度、90度、180度を足す、もしくは引いて、それぞれの場合において左回転、右回転をさせてみた。結果、やはり惰性で動くのを除いてほぼ正確な角度動いた。但し、許容範囲は±5度であるのでその範囲に入っていればよしとした。 2.2回転 10.10cmから1mまで10cm間隔で距離を設定しその距離だけ進むようなプログラムをROMに焼き、実行した。これは、最終的には惰性で動く分を除いてほぼ設定距離と実際の動きが一致した。 2.1直進 ここでは、簡単なプログラムを作りそれを用いて機体がそのプログラムに沿った動きをするかどうかを確かめた。 2.動作テスト ほぼこの3つの動作を繰り返し相手を追うようになる。 11.赤外線が反応している場合を除き、どの動作においてもタッチセンサが反応した場合、回避動作に移る。タッチセンサは左右斜めに一つずつついており、領域番号0で反応した場合ぶつかったのは相手と判断ししばらく待つ。それ以外で右が反応したら後ろに30cm下がり左に135度回転する。左が反応したら右の時とは逆にかいてんするようになっている。 B回避動作 12.赤外線を見失うとその時の動作をしばらく行った後、基本動作に戻る。 13.基本動作中に赤外線センサ(前方と左右斜め45度に取り付けた)が反応すると、それが前方(中央)であれば前進し、右であれば右に回転し左であればそちらに回転して赤外線を中央のセンサで捉えるように動く。 A追跡動作 14.前方もしくは左の超音波センサで50cm以内に障害物を認めたら左に90度回転し領域番号が変わるまで直進する。 15.それぞれの領域で目標角を設定し、自機がその姿勢角を保つように角度補正しながら前進する。また、その目標角は基本的には領域番号と90の積となる(360度=0度)。但し、領域0ではとくに目標角はなく、この領域に入った時の自機の姿勢角がそのまま目標角となる。 16.競技場全体を5分割してそれぞれに番号をつける。(右図参照) @基本動作 ここで、自分達の考えたMIRSの理想的な動きを示す。 1.理想的動作 自機の状態のほとんど(座標、姿勢角等)をロータリーエンコーダのデータから割り出していたので計算の誤差等も時間が経つに連れ蓄積されていったことも原因の一つと思われる。 センサ関係はしっかりと働いていたが、基本動作中で領域が変わって目標角まで回転する時、たまに逆回転することがあった。また、惰性により回りすぎたりもしくは許容範囲には行った時点でとまり、角度が不十分であったりしたため当初の計画では競技場の壁に沿った四角形を描くつもりが段々崩れていった。 3.実際の動作 最初考えていた段階では、座標等の補正をすることも考えていたが、時間的な余裕が無く、検討が煮詰まらなかったので実現することができず残念でした。また惰性による動きを押さえる対策も考えなかったのでそのあたりももっと検討すべきであったと思います。 4.反省、まとめ 4反省、まとめ 3実際の動作 2動作テスト 1理想的動作 内容 目次 完了報告書 6.7 総合評価 6.6 ペナルティ戦の検討 6.5 故障時の対処法 6.4 行動指針の詳細検討 6.3 相手MIRSの行動パターンの検討 17.ロータリエンコーダの詳細検討 18.モータ駆動機能の詳細検討 19.情報処理機能の詳細検討 20.タッチセンサの詳細検討 21.超音波センサの詳細検討 22.赤外線センサの詳細検討 6.2 システム基本設計の詳細の検討 23.ロータリエンコーダの調査  24.MPUの調査 25.DCモータ及び制御方法の調査 26.超音波センサの調査 27.赤外線センサの調査 6.1 部品の性能や機能等の調査 6. システム基本設計の内訳        計8名 (1994年11月現在)            和田 淳 (42)     ソフトウェア            三尾雅彦 (33)     ソフトウェア            デビッドスギャント(21) エレクトロニクス            橋本秀史 (27)     エレクトロニクス            落合剛  (10)     メカニクス            内山都茂子(4)     メカニクス D−Manager  大山利之 (8)     メカニクス Manager    阿部 巧 (1)     エレクトロニクス 7. システム開発体制 MIRS開発にあたり、MIRS開発の指針となる事項をまとめる。 1. システム開発計画書の目的   行動決定機能に基づき、左右独立のモータをそれぞれ回転させる 5.5 モータ駆動機能 障害物に接触したら回避行動をとる 回避 相手の勝敗判定装置を押すために、相手の光源に向かって追跡を続ける アタック 相手MIRSを探索し追跡を開始する 追跡 5.4 行動決定機能   タッチセンサにより、相手MIRSもしくは壁との接触を判断する 接触判断 5.3 タッチセンサ 超音波センサ群による情報から、物体との距離を測定する 距離測定 5.2 超音波センサ 信号処理機能       赤外線センサによって相手のLEDを測定する 照明測定 5.1 赤外線センサ 信号処理機能 5. システムの基本機能の詳細 モータ駆動機能 行動決定機能 タッチセンサ 超音波センサ 信号処理機能 赤外線センサ 信号処理機能 4. システムの基本機能        情報処理速度の高速化       回路構造の簡略化 駆動系の強化 システムの計量化 相手システムの追跡における行動を高速化するため、以下の4つの事項を徹底して行う。 本システムの設計はmirs競技においてシステムの目的を達成するために、以下の設計方針に基づいて行う。 3. システム設計方針   タッチセンサで接触を確認したら、いったん停止して赤外線センサで相手が後を向いていないか確かめる。反応したら、そのまま追跡を続ける。反応しなかったとき、次のような回避を行う。タッチセンサの右にだけ接触していたなら、左に90度回転し、左に接触していたなら、右に回転する。左右両方に接触していたなら、右に90度回転する。その後、50cm前進し、体勢を立て直す。 壁や相手に接触した場合 赤外線センサで追跡しているときは、相手がかなり近くにいると考えられる。このとき、相手を見失うと、相手に自分の勝敗判定装置の位置を見つけられてしまう可能性も大きい。これを防ぐために、相手を見失ったら50cm程度前進してから、体勢を立て直す。前進して、壁や相手に接触した場合は、回避モード2に移る。 赤外線センサで追跡しているとき、相手を見失った場合 回避モードは、次のように場合わけして示す。 2.5.6 回避モード 障害物にぶつかったときは、回避モードに移る。 赤外線を見失った時は、超音波捜索モードに移る。 正面のセンサーでとらえるように、3方向の赤外線センサーを用いながら相手機を追跡する。 2.5.5 赤外線追跡モード 障害物にぶつかったときは、回避モードに移る。 赤外線を見失った時は、超音波捜索モードに移る。 B 左側の赤外線センサーでとらえたら、正面のセンサーでとらえるように左側を向く。 A 右側の赤外線センサーでとらえたら、正面のセンサーでとらえるように右側を向く。 @ 正面のセンサーでとらえたら赤外線追跡モードに移る。 向きを変えてから、3方向で赤外線捜索を行う。 2.5.4 赤外線捜索モード   相手の正面30cm以内に入り、相手が動かなかったら、自機を45°回転し、相手の真横まで進む。そこで相手のいた方向に正面を向ける。相手がまだ正面にいたら、もう一度同じ動作をする。相手が正面にいなっかたら、その場でセンサにかかるまで待機している。 そのまま30−50cm進む。 前方のセンサで確認したとき 確認した方向を向き、30−50cm進む。 左右のセンサで確認したとき 相手を発見したら、相手の方向を向き、30−50cmすすむ。それからその場で超音波センサを使い、相手の位置を確認する。 2.5.3 超音波追跡モード 相手を見失ったら、そのまま直進し、壁30cm手前まで進む。次に90°回転し、競技場の角まで進む。競技場の対角に進行方向を向け、そのまま前進しながら、超音波センサを使い相手機を探す。 2.5.2 超音波探索モード スタートしてから一定時間超音波を出して待機する。相手が動いたら超音波モードに移る。もし動かなかったら前進していく。 2.5.1 初期動作モード 2.5 システムモードの説明 Fig.2 2.4 システム遷移図 Fig.1 2.3 システムの外観 ・センサを用い、相手の動きを観測しながら、追尾するシステムである。 本システムは上記目的を達成するために次に示す特徴を有する。 2.2 開発システムの特徴 システムはmirs競技において対戦相手システムに勝つことを目的とする。 2.1 システムの目的 2. 開発システムの概要 8MIRS開発スケジュール阿部巧 7MIRS開発体制和田淳 6システム基本設計の内訳内山都茂子、大山利之 5システム基本機能の詳細落合剛 4システム基本機能大山利之 3システム設計方針和田淳 2開発システムの概要全員 1システム開発計画書の目的阿部巧 内容作成者 目次 システム開発計画書 4 SHARP ICソケット20ピン(幅7.62mm) 4 SHARP GAL16V8 IC 1 SHARP PC817 IC 4 モトローラ MC14513B IC 1 モトローラ MC14052B IC 1 サンケン STR9005 IC 2 NEC μPD5555C IC 1 NEC μPD4701AC IC 4 NEC μPC4572 IC 1 NEC μPC339C IC 1 日立 HD7407P IC 5 日立 HD14069UBP IC 1 TI SN75453B IC 1 TI SN74LS688 IC 2 TI SN74LS684 IC 1 TI SN74LS590 IC 3 TI SN74ALS574 IC 2 TI SN74LS279 IC 1 TI SN74LS244 IC 1 TI SN74LS161 IC 2 TI SN74LS123 IC 1 TI SN74LS14 IC 2 TI SN74LS10 IC 1 TI SN74LS08 IC 1 TI SN74LS06 IC 4 TI SN74LS04 IC 4 TI SN74LS00 IC 1 OMRON G6B−1174P−US リレー 1 OMRON G2VN−237P リレー 2 OMRON LZN203 リレー 1 OMRON A6B−4101 4bitdipsw 1 OMRON A6DR−8100 スイッチ 1 MS−165 スイッチ 1 MS−102 押しボタンスイッチ 1 DDK 押しボタンスイッチ 4 SS−5GL マイクロスイッチ 3 SHARP IS1U60 赤外線受光素子 3 ムラタ MA40B5RB 超音波マイクロフォン 3 ムラタ MA40B5SR 超音波スピーカー 4 東芝 TLRC336T 7segLED 1 東芝 TLN105B 赤外線LED 2 SHARP GAL5EG8 GreenLED 3 SHARP GAL5HD8 RedLED 1 SHARP PC−847 フォトカプラ 2 2SC1815 トランジスタ 2 2SA1015 トランジスタ 2 日立 2SK971 FET 7 日立 ISS106 ダイオード 4 IS2455 ダイオード 4 10D−1 ダイオード 12 102 マイラコンデンサ 2 103(0.01μF) マイラコンデンサ 7 103(0.01μF) セキセラコンデンサ 46 104(0.1μF) セキセラコンデンサ 1 334(0.33μF) セキセラコンデンサ 3 4.7μF 電解コンデンサ 2 10μF 電解コンデンサ 1 47μF 電解コンデンサ 1 100μF 電解コンデンサ 3 0〜100Ω 可変抵抗 2 R8LADDER1kΩ ラダー抵抗 2 39Ω 抵抗 6 220Ω 抵抗 1 270Ω 抵抗 39 330Ω 抵抗 2 390Ω 抵抗 1 620Ω 抵抗 5 1kΩ 抵抗 1 1.7kΩ 抵抗 3 2.2kΩ 抵抗 4 3.9kΩ 抵抗 1 5.6kΩ 抵抗 4 6.2kΩ 抵抗 22 10kΩ 抵抗 2 30kΩ 抵抗 4 39kΩ 抵抗 1 47kΩ 抵抗 1 100kΩ 抵抗 4 1MΩ 抵抗 1本 800mm 電源用コード 1本 1400mm 電源用コード(赤) 1本 1400mm 電源用コード(黒) 1本 150mm 2芯フラットケーブル 1本 550mm 3芯フラットケーブル 1本 2400mm 4芯フラットケーブル 1本 400mm 5芯フラットケーブル 1本 100mm 40芯フラットケーブル 1本 650mm 50芯フラットケーブル 1本 150mm 60芯フラットケーブル 16 MOLEX 50217−8100 ターミナル 6 MOLEX 51067−02 2ピンコネクタ 1 MOLEX 51067−04 4ピンコネクタ 80 MOLEX 5103TL ターミナル 8 MOLEX 5102−03A 3ピンコネクタ 9 MOLEX 5102−04A 4ピンコネクタ 4 MOLEX 5102−05A 5ピンコネクタ 6 MOLEX 53259−0220 2ピンコネクタ 2 MOLEX 5046−03A 3ピンコネクタ 6 MOLEX 5045−03A 3ピンコネクタ 1 MOLEX 53259−0420 4ピンコネクタ 7 MOLEX 5046−04A 4ピンコネクタ 2 MOLEX 5045−04A 4ピンコネクタ 4 MOLEX 5046−05A 5ピンコネクタ 3 航空電子 PS−10PF−D4T1−PKL1 ジャンパ 2 航空電子 PS−16SEN−D4P1−1C 16ピンコネクタ 2 航空電子 PS−16PE−D4LT1−LP1 16ピンコネクタ 2 航空電子 PS40SEN−D4P1−1C 40ピンコネクタ 1 航空電子 PS−40PE−D4LT1−PN1 40ピンコネクタ 1 航空電子 PS−50SEN−D4P1−1C 50ピンコネクタ 1 航空電子 PS−50PE−D4LT1−LP1 50ピンコネクタ 2 航空電子 PS60SEN−D4P1−1C 60ピンコネクタ 1 航空電子 PS−60PE−D4LT1−LP1 60ピンコネクタ 1 航空電子 PS−60PE−D4LT1−PN1 60ピンコネクタ 2 AMP 173279−3 50ピンコネクタ 2 AMP 1−499506−2 50ピンコネクタ 1 AMP DIN41612PCN10シリーズ174112−1 コネクタ 2 バッテリコネクタ 3 SUNHAYATO 100mm×75mm 片面紙フェノール 2 SUNHAYATO 150mm×100mm 片面紙フェノール 1 SUNHAYATO 100mm×75mm 両面ガラスエポキシ 2 SUNHAYATO 200mm×100mm 両面ガラスエポキシ チェック 数量 メーカー 品名 参考 3 エレクトロニクス部品表 Fig1.1 ハードウェア構成 本システムに使用する基板はすべて1994年卒業研究のV-Project94で開発された最新版を用いる。 1 ハードウェア構成 August25,1995 I/Oボード側コネクタとTS間のケーブル 1 E4016_1.ZWD 3/6 17 P.D.-モータ間のケーブル 1 E4015_1.ZWD 3/6 16 P.D.-M.P.C.間のケーブル 1 E4014_1.ZWD 7/21 15 P.D.-バッテリ間のケーブル 1 E4013_1.ZWD 7/21 14 P.D.-VMEラック間のケーブル 1 E4012_1.ZWD 3/6 13 赤外線センサセンサ回路間のケーブル 赤外線センサボード- 1 E4011_1.ZWD 7/21 12 P.D.-勝敗判定装置間のケーブル 1 E4010_1.ZWD 7/21 11 I/Oボード-R.E.側ケーブル,T.S.側コネクタ間のケーブル 1 E4009_1.ZWD 3/6 10 I/O側ケーブル-R.E.間のケーブル 1 E4008_1.ZWD 3/6 9 CPUボード-MMIボード間のケーブル 1 E4007_1.ZWD 7/21 8 MMIフロントボード間のケーブル MMIメインボード- 1 E4006_1.ZWD 7/20 7 I/Osubボード-I/Oボード間のケーブル 1 E4005_1.ZWD 7/21 6 超音波センサボード間のケーブル I/Osubボード- 1 E4004_1.ZWD 7/21 5 赤外線センサボード間のケーブル I/Osubボード- 1 E4003_1.ZWD 7/21 4 赤外線センサセンサ回路間のケーブル 赤外線センサボード- 1 E4002_1.ZWD 7/21 3 I/Osubボード-M.P.C.間のケーブル 1 E4001_1.ZWD 7/19 2 ケーブル接続 1 E4000_1.ZWD 3/6 1 Check Contents Revision Filename Date No. 4. ケーブル図面一覧表                                 V94−SPEC−005 取扱説明書 V94−CARD−207 OrCAD回路図 V94−CARD−407 部品配置図 V94−CARD−407 穴あけ図 V94−CARD−407 CAD SHEET V94−PART−008 放熱板部品図 V94−PART−007 固定用板部品図 Power Distributor (PLDIC5) V94−PART−004 (PLDIC4) V94−PART−003 PLDデータ V94−SPEC−011 取扱説明書 V94−SPEC−010 検査手順書 V94−SPEC−009 作成手順書 V94−CARD−501 改造仕様書 V94−CARD−401 パターン図 V94−CARD−201 OrCAD回路図 ロータリエンコーダボード タッチセンサボード V94−SPEC−015 取扱説明書 V94−SPEC−014 検査手順書 V94−SPEC−013 作成手順書 V94−CARD−015 その他 V94−PART−013 穴あけ図 V94−CARD−515 改造仕様書 V94−CARD−415 パターン図/実装図 V94−CARD−215 OrCAD回路図 MMIフロントボード V94−SPEC−015 取扱説明書 V94−SPEC−014 検査手順書 V94−SPEC−013 作成手順書 V94−PART−010 固定用部品図 V94−CARD−014 その他 V94−PART−012 穴あけ図 V94−CARD−514 改造仕様書 V94−CARD−414 パターン図/実装図 V94−CARD−214 OrCAD回路図 MMIメインボード V94−SPEC−019 特性調査書 V94−SPEC−018 取扱説明書 V94−SPEC−017 検査手順書 V94−SPEC−016 作成手順書 V94−CARD−408 パターン図 V94−CARD−208 OrCAD回路図 勝敗判定装置 V94−SPEC−026 取扱説明書 V94−SPEC−025 検査手順書 V94−SPEC−024 作成手順書 V94−CARD−416 パターン図 V94−CARD−216 OrCAD回路図 超音波センサー送受信回路 V94−CARD−403 パターン図 V94−CARD−203 OrCAD回路図 赤外線センサー信号処理部 (PLDIC14) V94−PART−017 (PLDIC12) V94−PART−016 PLDデータ V94−SPEC−023 取扱説明書 V94−SPEC−021 検査手順書 V94−SPEC−020 作成手順書 V94−CARD−410 V94−CARD−409 V94−CARD−405 パターン図 V94−CARD−210 V94−CARD−209 V94−CARD−205  赤外線部  超音波部  PWM部 OrCAD回路図 I/OSubボード     エレクトロニクス部については、V−Project94と川上教官室のMPCを用いる。以下にその資料の一覧を示す。 2 各ボードの詳細 4ケーブル一覧表全員 3エレクトロニクス部品表全員 2各ボードの詳細橋本秀史 1ハードウェア構成大山利之 内容作成者 目次 エレクトロニクス詳細設計仕様書 成果物登録簿へ ロータリエンコーダのカウント値を7seg.LEDで表示。 ロータリエンコーダ ディップスイッチの状態を7seg.LEDで表示。 ディップスイッチ タッチセンサによって表示方法を変える。左右のタッチセンサを押した場合、前方を0°として、赤外線の方向を角度で表示。前方のタッチセンサを押した場合、反応したセンサに対応した点灯方法で表示。 赤外線センサ 反応のあったセンサに対応する番号を7seg.LEDに表示。 タッチセンサ 使用するセンサを押しボタンスイッチにより順次切り替えて7seg.LEDに表示。 超音波センサ 自己のX座標、Y座標、姿勢角を押しボタンスイッチにより順次切り替えて7seg.LEDに表示。 自己座標算出 10分の1秒単位のカウンタを7seg.LEDに表示。 RTCによるタイマ割り込み 押しボタンスイッチにより、以下の順に試験項目を選択。 ディップスイッチを5に設定・・・各センサ動作試験 右  :後退または右回転 前、左:前進または左回転 タッチセンサの設定・・進行方向、回転方向を決定 3:1.0m/sec 2:0.8m/sec 1:0.6m/sec 0:0.3m/sec ディップスイッチ上位2ビットの設定・・速度を設定 3:1m前進 2:半径50cmの円を描く 1:半径25cmの円を描く 0:その場回転 ディップスイッチ下位2ビットの設定・・動きを設定 0に設定した後、更に以下に示すようにディップスイッチを設定する。 ディップスイッチを0に設定・・・規定動作試験 ディップスイッチ、押しボタンスイッチ、タッチセンサにより試験項目を選択する。 試験用プログラムの解説及び、試験結果 試験用に作成したプログラムを使用 動作試験 ソフトウェア試験手順書 成果物登録簿へ f:競技モード 0:テスト走行 6 MIRSを実際に競技させるにはdipスイッチでモードの設定をしメインスイッチを押す。 このLEDによってMIRSのモードを確認しまたセンサの測定結果を確認でする。 5 7segLED モータを止める時にこのスイッチを押す。 4 勝敗判定装置のスイッチ: ledの表示切り替えに使用。 3 押しボタンスイッチ: スイッチと各モードとの対応はソフトの詳細が出来しだい決定する。 このスイッチのON−OFFでMIRSのモードの設定をする。 2 4つのトグルスイッチ: このスイッチにより電源が入る。 1 メインスイッチ: 操作仕様 成果物登録簿へ 規定どうりに動作。 ロータリエンコーダ 規定どうりに動作。 ディップスイッチ 規定どうりに動作。 赤外線センサ 規定どうりに動作。 タッチセンサ 規定どうりに動作。 超音波センサ 規定どうりに動作。 自己座標算出 規定どうりに動作。 RTCによるタイマ割り込み 各センサ動作試験 全て規定どうりに動作。 規定動作試験 試験結果 ソフトウェア試験結果 目次へ ts.cタッチセンサのデータの読み込み tm.cRTCの初期化,タイマ割り込み用モジュールなど tire.hヘッダファイル ss.c超音波センサ用PI/T初期化,カウンタ読み込み,超音波送信など sego.hヘッダファイル seg.hヘッダファイル seg.c7seg-ledの表示ライブラリ re.cロータリエンコーダ関連 pwm.cPWM関連 ps.hヘッダファイル ps.c赤外線関連 other.cポート,レジスタのクリア,初期化,コード変換など mv.c動作programのライブラリ mmi.cマン−マシン−インタフェイス関係のモジュール main.cモードの切り替え、モードの実行 m9403.hヘッダファイル externo.hヘッダファイル extern.hヘッダファイル dataload.cすべてのセンサ情報をセンサデータの外部変数に格納 c_ent.sヘッダファイル accel.c動きの制御関連モジュール ファイル名 内容 MIRS9403プログラム 目次へ 主な関数、変数のつながりを示しておく。 program構造 目次へ intseg_th17seg.LED表示用の自機の姿勢角 intseg_y17seg.LED表示用の自機のY座標 intseg_x17seg.LED表示用の自機のX座標 intseg_pwm7seg.LED表示用のPWM信号の値 intseg_sw7seg.LED表示用のディップスイッチデータ intseg_ts7seg.LED表示用のタッチセンサデータ intseg_ps7seg.LED表示用の赤外線センサデータ intseg_ss_r7seg.LED表示用の右の超音波センサデータ intseg_ss_l7seg.LED表示用の左の超音波センサデータ intseg_ss_f7seg.LED表示用の前の超音波センサデータ intseg_ss7seg.LED表示用の超音波センサデータ intseg7seg.LED表示用のデータ floatth3相手の赤外線の自機前方を0°としたときの角度 floatx2,y2,r2相手のX座標、Y座標、自機からの距離 floatx1_tm,y1_tm,th1_tm同上(タイマ割り込み時に使用) floatx1,y1,th1自機のX座標、Y座標、姿勢角 intss_l_tm,ss_f_tm,ss_r_tm同上(タイマ割り込み時に使用) floatss_l,ss_f,ss_r前方、左右の障害物までの距離 intt,t_tmタイマ割り込みの発生回数 intwl,wrモータの目標回転数 intwl_re,wr_reロータリエンコーダのカウント値 charts_sw_intrタッチセンサのデータ変化時に1になる。他は0。 charts_sw_dataタッチセンサの反応状態(数値で表現) charts_dataタッチセンサの反応状態(ビットで表現) charps_data赤外線センサの反応状態 charsw_dataディップスイッチの状態 charsw_intr押しボタンスイッチの状態 intsw_intr_time押しボタンスイッチが押された回数 型シンボル名データの意味 データ一覧 目次へ タッチセンサのデータの読み込み voidts() ts.c 説明省略 voiddataload_tm() タイマ割り込み用モジュール interruptvoidtm() RTCの初期化 voidinit_rtc() tm.c 説明省略 voiddataload_ss() カウンタの読み込み、超音波の送信 ss() 超音波センサ用のPI/Tの初期化 voidinit_ss() ss.c 押しボタンスイッチで項目を変更 すべてのセンサデータを7seg.LEDで表示 voidall_check_sw_intr() dipスイッチで項目を変更 すべてのセンサデータを7seg.LEDで表示 voidall_check_sw_dip() タイマのカウントの様子を7seg.LEDで表示 voidtm_check() すべての超音波センサデータを7seg.LEDで表示 voidmv_ss_check() 前方または左右の障害物までの距離を7seg.LEDで表示 voidss_check() タッチセンサの反応箇所を7seg.LEDで表示 voidts_check() 赤外線の反応箇所または相手のいる方向を7seg.LEDで表示 voidps_check() タッチセンサで指定する 自己座標と自己姿勢角を7seg.LEDで表示 voidx1_y1_th1_check() 自己姿勢角を7seg.LEDで表示 voidth1_check() 自己座標のy座標を7seg.LEDで表示 voidy1_check() 自己座標のx座標を7seg.LEDで表示 voidx1_check() dipsw.の状態と押しボタンスイッチが押された回数を7seg.LEDで表示 voidsw_check() pwm信号を7seg.LEDで表示 voidpwm_check() タイヤの回転数を7seg.LEDで表示 voidre_check() 説明省略 charseg_start2(charmd,intseg_data) 説明省略 charseg_start(charmd,intseg_data) seg.c・・・7seg−ledの表示ライブラリー 自己座標を7seg.LEDで確認する為のデータを作成 voidmake_seg_x1_y1_th1() 自己座標を算出 voidmake_self_point_data() タイマー割り込み用のロータリエンコーダデータを通常時のロータリエンコーダデータにコピー voiddataload_re() ロータリエンコーダのデータの読み込み voidre() re.c モータの回転を制御 voidpwm() intfeed_back(intori,inttarget) intajust_pwm(intpwm_data) voidpwm_break() voidpwm_roket_start() voidpwm_data_chage() voidcomp_led_out(intl,intr) pwm信号の送信用のPI/Tの初期化 voidinit_pwm() pwm.c 赤外線の反応箇所を7seg.LEDで確認する為のデータを作成 voidps_seg_control() 赤外線の反応により相手のいる方向を角度に換算 voidenemy_behind() 赤外線センサのデータの読み込み voidps() 赤外線センサ用のPI/Tの初期化 voidinit_ps() ps.c 各変数の初期化 voidinit_data() 全てを初期化 voidinit_all() ステータスレジスタの割り込みマスクを解く voidinit_start() RTCのレジスタのクリア voidrtc_clr() 数値をBCDコードに変換 intb_to_bcd(intb) ポートへの書き込み voidoutport(char*port,chardata) ポートからの読みだし charinport(char*port) other.c おまけの動作をする charmv_win(charmd) 振り向き動作をさせる charmv_search(charmd,floatini_speed,floatini_dif,intini_time) 説明省略 charmv_ini(charmd) 説明省略 charmv_ini_ss(charmd) タッチセンサを用いた回避動作をする charmv_ts(charmd) 赤外線追尾動作をする charmv_ps(charmd) charmv_ss(charmd) charmv_ss_away(charmd) charmv_ss_going(charmd) charmv_ss_chace(charmd) mv_ss...はまだ未完成のモジュールなので説明を省略する 競技用モジュール charmv_race(charmd) 動作テスト用モジュール charmv_test(charmd) 動作テスト用サブモジュール charmv_test_sub(charmd) mv.c・・・動作programのライブラリー 押しボタンスイッチの読み込み voidread_sw_data() 7seg.LEDのすべての桁を表示 voidseg_set_all(intdata) 7seg.LEDの指定の桁の表示 voidseg_set(charno,chardata) 発光LEDの点灯または消灯 voidled_lamp_set(chargreen,charred) led,7seg-ledの制御 voidled_set(chardata) mmi用のPI/Tの初期化 voidinit_mmi() mmi.c・・・マン−マシン−インタフェイス関係のモジュールが存在。 モードの切り替え、モードの実行 main() main.c すべてのセンサ情報をセンサデータの外部変数に格納。 voiddataload() dataload.c 指定した変位角度だけその場回転。 charmv_spin(charmd,floatini_speed,floatini_dif) 指定した移動距離だけ直進。 charmv_go(charmd,floatini_speed,floatini_dis,floatini_fb_dis) 指定した移動距離に指定した角度に向くように動く。 charmv_accel2(charmd,floatini_speed,floatini_dis,floatini_dif) 指定した角度変位だけ動かす。 指定した速度、指定した回転半径で指定した移動距離または charmv_accel(charmd,floatini_speed,floatini_radius,floatini_dis,floatini_dif) 一定時間の間車体をとめておく。 charmv_stop(charmd,inttime) 一定時間になると非零をかえす。 intmv_timer(charmd,intini_time) disは位置座標の変化、difは姿勢角の変化 それ以外のときは0をかえす。 ある座標x,y,thと現在の座標を比較し現在の座標を越えたら1をかえす。 charmv_chack(floatx,floaty,floatth,floatdis,floatdif) 姿勢角thと現在の姿勢角の差の絶対値とdifの差をかえす floatmv_chack_dif(floatth,floatdif) 座標x,yと現在の座標との距離の2乗−disの2乗をかえす floatmv_chack_dis(floatx,floaty,floatdis) 詳しくはprogramを参照。 目標角度変位と目標移動距離にあわせて車体の動きを制御する。 voidaccel2(floatvelocity,floattarget_dis,floattarget_dif) この関数だけですべての車体の動きを実現できる。 移動速度と回転半径により車体の動きを制御する。 voidaccel(floatvelocity,floatradius) accel.c・・・動きの制御に関係したモジュールがある。 詳しくは直接programを参照すること。(./program/*.*に格納してあります) 引数、戻り値の値の意味はprogramを参照すること 関数は機能別にファイルに格納されている。 関数一覧 目次へ 各関数で使用される外部変数は必ず関数内で表記しています。 詳しい事は直接programを読むことで理解してください。 行動を決める関数を新たに作るだけでおよそ考えられる動作を実現できます。 行動を決める関数は条件が変わる毎にタイヤの回転数を指定しLEDの表示を指定する。 モード別の関数は無限ループになっておりこのループが一周する間にすべてのセンサデータが更新される。 表に書き込まれた関数名は対応する関数である。ファイル名は対応する関数の書き込まれた関数である。 上記の表は本programを理解するときの参考としてみてください。 本programは以下のような構成になっている。 それは「各関数は必ず無条件にループをぬけるようにする。」である。 本programは同時処理実現のために1つの条件を必ず満たすようにできている。 本programは基本設計書を元に一部機能の追加削除をして設計された。 はじめに 成果物登録簿へ program競技で使用したprogram./program/*.* program構造主な関数と変数のつながりを示す./progcont.sam 外部変数一覧外部変数の一覧./datalist.sam 関数一覧関数の一覧、および各関数の説明./f_list.sam はじめに本ソフトの基本構造について./begin.sam 項目内容ファイル名 1. 目次 成果物登録簿へ 目次へ ソフトウェア編 MIRS9403システム詳細設計仕様書 目次へ t-wireワイヤ取付図94DS-M-3-194DS-M-3-01大石 t-vmeVMEラック取付図94DS-M-3-294DS-M-3-01遠藤 94DS-M-3-294DS-M-3-01峯松 赤外線受光ボード取付図 t-tyosek超音波センサボード t-tattiタッチセンサ取付図94DS-M-3-194DS-M-3-01大石 t-syou勝敗判定装置取付図94DS-M-3-0------------1遠藤 t-sityu支柱取付図94DS-M-3-0------------1小池 t-seki赤外線センサ取付図94DS-M-3-294DS-M-3-01遠藤 t-motaモータ取付図94DS-M-3-194DS-M-3-01井浪 94DS-M-3-294DS-M-3-01遠藤 補助ボード取付図 ロータリーエンコーダ 可逆変換ボード t-kagya t-ioI/Oボードについて94DS-M-3-3394DS-M-3-31小池 t-hojo補助輪取付図94DS-M-3-194DS-M-3-01岡田 t-cpuVSBC−1にソフトをのせる94DS-M-3-3394DS-M-3-31小池 t-batバッテリー取付図94DS-M-3-194DS-M-3-01大石 t-banpaバンパ取付図94DS-M-3-194DS-M-01遠藤 k-wire.zwdワイヤ加工図94DS-M-3-1494DS-M-3-11大石 k-sityu2.zwd支柱用ネジ加工図94DS-M-3-4294DS-M-3-01小池 k-sityu1.zwd支柱加工図94DS-M-3-4194DS-M-3-01小池 k-lji.zwdL字型金具加工図94DS-M-3-5294DS-M-3-0,21岡田 k-btbox2.zwdバッテリーラック2加工図94DS-M-3-1394DS-M-11高橋 k-btbox1.zwdバッテリーラック1加工図94DS-M-3-1294DS-M-11高橋 k-bnpbar.zwdバンパパイプ加工図94DS-M-3-1594DS-M-3-11大石 k-bnparm.zwdバンパアーム加工図94DS-M-3-1694DS-M-3-11大石 h-tyou.zwd超音波送受信ボード穴あけ図94DS-M-3-2294DS-M-3-01遠藤 h-syou.zwd勝敗判定装置基板穴あけ図94DS-M-3-5194DS-M-3-01遠藤 h-sekiju.zwd赤外線センサ受光部穴あけ図94DS-M-3-2394DS-M-3-21遠藤 h-seki.zwd赤外線センサ穴あけ図94DS-M-3-2494DS-M-3-21遠藤 補助ボード穴あけ図94DS-M-3-2694DS-M-3-21小池 h-rota.zwdロータリーエンコーダ h-mmi.zwdMMIフロントボード穴あけ図94DS-M-3-3194DS-M-3-31遠藤 h-kagya.zwd可逆変換ボード穴あけ図94DS-M-1-2594DS-M-1-21岡田 h-2.zwdシャ−シ2基板加工図94DS-M-3-2194DS-M-3-21岡田 h-1.zwdシャ−シ1基板加工図94DS-M-3-1194DS-M-3-11大石 h-.zwd      g-vme2.zwdVMEラック側面図94DS-M-3-394DS-M-3-22小池 g-vme1.zwdVMEラック背面図94DS-M-3-394DS-M-3-21小池 g-2.zwdシャ−シ294DS-M-3-294DS-M-3-01遠藤 g-1.zwdシャ−シ194DS-M-3-194DS-M-3-01大石 g-.zwdMIRS940394DS-M-3-0------------1遠藤 ファイル名TitleDocumentNumber親仕様書番号REV製作者 fileは全て./sheetに格納 MIRS9403設計図一覧表 目次へ 部品表 目次へ MIRS9403 Tree 成果物登録簿へ 4.設計図一覧表 3.部品表 2.Tree 1.目次 目次 成果物登録簿へ 次ページへ メカニクス編 MIRS9403システム詳細設計仕様書 3-3. ピンアサインへ 3Vcc← 3 2GND← 2 1Vo→赤外線受光信号1 赤外線センサCN1ピン番号信号名方向内容赤外線周辺回路CN2、CN3ピン番号 ケーブルHの接続先のピンアサイン 3-3. ピンアサインへ 16GND  GND使用しない 15S1←受信信号使用しない 14S0→送信信号使用しない 13Vcc Vcc使用しない 12GND GND4 11S1←受信信号3 10S0→送信信号2 9Vcc Vcc1 8GND GND4 7S1←受信信号3 6S0→送信信号2 5Vcc Vcc1 4GND GND4 3S1←受信信号3 2S0→送信信号2 1Vcc Vcc1 I/OsubボードCN3ピン番号ピン名称方向信号超音波センサボードCN1ピン番号 ケーブルGの接続先のピンアサイン 3-3. ピンアサインへ 16GND→ 4 15I8←赤外線信号3 14Vcc→ 2 13I7←赤外線信号1 12GND→ 4 11I6←赤外線信号3 10Vcc→ 2 9I5←赤外線信号1 8GND→ 4 7I4←赤外線信号3 6Vcc→ 2 5I3←赤外線信号1 4GND→ 4 3I2←赤外線信号3 2Vcc→ 2 1I1←赤外線信号1 I/OsubボードCN4ピン番号ピン名称方向信号各赤外線周辺回路CN1ピン番号 ケーブルFの接続先のピンアサイン 3-3. ピンアサインへ 5→左PWM信号5 4→左方向信号4 3→右PWM信号3 2→右方向信号2 1  VCC1 I/OsubボードCN5ピン番号方向信号可逆パワー変換ボードCN1ピン番号 ケーブルEの接続先のピンアサイン 3-3. ピンアサインへ 50GND  1 49H4→割込み認可信号2 48PC3/TOUT←アンダフロー信号3 47H3←割込み要求信号4 46PC2/TIN→超音波カウンタスタート5 45H2 超音波送信トリガ6 44GND  7 43H1 超音波割込要求信号8 42GND  9 41PB7←赤外線信号10 40PB6←赤外線信号11 39PB5←赤外線信号12 38PB4←赤外線信号13 37PB3←赤外線信号14 36PB2←赤外線信号15 35PB1←赤外線信号16 34PB0←赤外線信号17 33PA7→未使用18 32PA6→未使用19 31PA5→センサ選択信号(T)20 30PA4→センサ選択信号(T)21 29PA3→未使用22 28PA2→アンダフロー信号23 27PA1←超音波センサ選択信号24 26PA0←超音波センサ選択信号25 25GND  26 24PC7 未使用27 23PC3/Tout→カウンタのCLK28 22PC5 未使用29 21PC2/Tin 未使用30 20PC5 未使用31 19PC1←左PWM方向データ(T)32 18PC4 未使用33 17PC0←右PWM方向デ^タ(T)34 16PB7→左速度データ26ビット35 15PB6→左速度データ25ビット36 14PB5→左速度データ24ビット37 13PB4→左速度データ23ビット38 12PB3→左速度データ22ビット39 11PB2→左速度データ21ビット40 10PB1→左速度データ20ビット41 9PB0→左PWM方向データ42 8PA7→右速度データ26ビット43 7PA6→右速度データ25ビット44 6PA5→右速度データ24ビット45 5PA4→右速度データ23ビット46 4PA3→右速度データ22ビット47 3PA2→右速度データ21ビット48 2PA1→右速度データ20ビット49 1PA0→右PWM方向データ50 I/OボードCNAピン番号ピン名称方向信号I/OsubボードCN2ピン番号 ケーブルDの接続先のピンアサイン 3-3. ピンアサインへ 50→GND ※1  49→左タッチセンサOFF信号TR3_2 48→GNDTR3_1 47→左タッチセンサON信号TR3_3 46→GND ※1  45→中央タッチセンサOFF信号TR2_2 44→GNDTR2_1 43→中央タッチセンサON信号TR2_3 42→GND ※1  41→右タッチセンサOFF信号TR1_2 40→GNDTR1_1 39→右タッチセンサON信号TR1_3 38→GND ※1  37→左ロータリ・エンコーダb相信号CN1_5 36→GNDCN1_4 35→電源+5VCN1_3 34→GNDCN1_2 33→左ロータリ・エンコーダa相信号CN1_1 32→GND ※1  31→右ロータリ・エンコーダb相信号CN1_5 30→GNDCN1_4 29→電源+5VCN1_3 28→GNDCN1_2 27→右ロータリ・エンコーダa相信号CN1_1 I/OボードCNAピン番号方向内容TO ケーブルCの接続先のピンアサイン 3-3. ピンアサインへ 3→勝敗判定装置ON/OFF信号(折り返し)3 2←勝敗判定装置ON/OFF信号2 1未使用未使用1 マンマシンインターフェイスフロントボードCN2 ピン番号方向内容電源ボードCN6ピン番号 ケーブルBの接続先のピンアサイン 3-3. ピンアサインへ 60→7Seg.-Led.3信号(e)60 59→7Seg.-Led.3信号(d)59 58→7Seg.-Led.3信号(c)58 57→7Seg.-Led.3信号(b)57 56→7Seg.-Led.3信号(f)56 55→7Seg.-Led.3信号(g)55 54→7Seg.-Led.3信号(a)54 53−GND53 52未使用未使用52 51未使用未使用51 50→7Seg.-Led.2信号(e)50 49→7Seg.-Led.2信号(d)49 48→7Seg.-Led.2信号(c)48 47→7Seg.-Led.2信号(b)47 46→7Seg.-Led.2信号(f)46 45→7Seg.-Led.2信号(g)45 44→7Seg.-Led.2信号(a)44 43−GND43 42未使用未使用42 41未使用未使用41 40→7Seg.-Led.1信号(e)40 39→7Seg.-Led.1信号(d)39 38→7Seg.-Led.1信号(c)38 37→7Seg.-Led.1信号(b)37 36→7Seg.-Led.1信号(f)36 35→7Seg.-Led.1信号(g)35 34→7Seg.-Led.1信号(a)34 33−GND33 32未使用未使用32 31未使用未使用31 30→7Seg.-Led.0信号(e)30 29→7Seg.-Led.0信号(d)29 28→7Seg.-Led.0信号(c)28 27→7Seg.-Led.0信号(b)27 26→7Seg.-Led.0信号(f)26 25→7Seg.-Led.0信号(g)25 24→7Seg.-Led.0信号(a)24 23−GND23 22未使用未使用22 21未使用未使用21 20→Red-Led.ON/OFF信号20 19−Vcc19 18→Green-Led.ON/OFF信号18 17−Vcc17 16←4ビットディップスイッチON/OFF(0)16 15←4ビットディップスイッチON/OFF(1)15 14←4ビットディップスイッチON/OFF(2)14 13←4ビットディップスイッチON/OFF(3)13 12−GND12 11未使用未使用11 10←3ピンコネクタ(2)10 9←3ピンコネクタ(3)9 8未使用未使用8 7未使用未使用7 6−GND6 5←押しボタンスイッチON/OFF信号5 4←押しボタンスイッチON/OFF信号4 3未使用未使用3 2未使用未使用2 1未使用未使用1 マンマシンインターフェイスメインボードCN3ピン番号方向内容マンマシンインターフェイスフロントボード  CN4ピン番号 ケーブルAの接続先のピンアサイン 3-3. ピンアサインへ 4 →B相4 3Vcc←+5Vを出力3 2 →A相2 1GND←GND1 ロータリーエンコーダーインターフェイスボードCN2ピン番号信号名方向内容MAXON34ロータリーエンコーダーピン番号 ケーブルNの接続先のピンアサイン 3-3. ピンアサインへ 2GND--− 1Vin→+7.2Vの電源(バッテリー)を入力する。+ 電源ボードCN1、3ピン番号信号名方向内容バッテリーコネクタ ケーブルMの接続先のピンアサイン 3-3. ピンアサインへ 4V-→-12Vを出力使用しない 3Vcc→+5Vを出力+5V 2GND--GNDGND 1V+→+12Vを出力MPU,センサ系のボードの電源となる。使用しない 電源ボードCN4ピン番号信号名方向内容VMEラック電源端子 ケーブルLの接続先のピンアサイン 3-3. ピンアサインへ 4GND--4 3Vsig→スタートから勝敗判定SWを押されるまで+5Vを出力。3 2SWB←2 1SWA→勝敗判定装置からのデータを得る。1 電源ボードCN5ピン番号信号名方向内容勝敗判定装置CN1ピン番号 ケーブルKの接続先のピンアサイン 3-3. ピンアサインへ 2GND→ 2 1Vo←モータ用電源1 可逆パワー変換ボードCN2ピン番号信号名方向内容電源ボードCN2ピン番号 ケーブルJの接続先のピンアサイン 3-3. ピンアサインへ 2GND← − 1Vo→モータ用電源+ 可逆パワー変換ボードCN3、4ピン番号信号名方向内容MAXON34モータ端子 ケーブルIの接続先のピンアサイン 3-3. ピンアサインへ ※※※※ Handshake4の信号は、押しボタンスイッチのON/OFF信号である。 ※※※  Handshake2の信号は、デコーダのデータラッチのタイミング用である。 ※※   Handshake1の信号は、Handshake2の信号をインバータに通したものを出力する。 40→Handshake4 ※※※※40(H4) 39←GND39 38未使用Handshake338(H3) 37−GND37 36未使用未使用36(PB7) 35−GND35 34←勝敗判定装置ON/OFF信号34(PB6) 33−GND33 32→テスト信号出力32(PB5) 31−GND31 30←テスト信号入力30(PB4) 29−GND29 28→4ビットディップスイッチON/OFF(3)28(PB3) 27−GND27 26→4ビットディップスイッチON/OFF(2)26(PB2) 25−GND25 24→4ビットディップスイッチON/OFF(1)24(PB1) 23−GND23 22→4ビットディップスイッチON/OFF(0)22(PB0) 21−GND21 20←Green-Led.ON/OFF20(PA7) 19−GND19 18←Red-Led.ON/OFF18(PA6) 17−GND17 16←7Seg.-Led.選択(上位)16(PA5) 15−GND15 14←7Seg.-Led.選択(下位)14(PA4) 13−GND13 12←7Seg.-Led.data(3)12(PA3) 11−GND11 10←7Seg.-Led.data(2)10(PA2) 9−GND9 8←7Seg.-Led.data(1)8(PA1) 7−GND7 6←7Seg.-Led.data(0)6(PA0) 5←TOUT5 4←Handshake2 ※※※4(H2) 3未使用TIN3 2→Handshake1 ※※2(H1) 1←Vcc1 MMIメインボード CN1ピン番号方向内容MPUボードパラレル インターフェイス ピン番号 ケーブル@の接続先のピンアサイン 目次へ ケーブル15の接続先のピンアサイン ケーブル14の接続先のピンアサイン ケーブル13の接続先のピンアサイン ケーブル12の接続先のピンアサイン ケーブル11の接続先のピンアサイン ケーブル10の接続先のピンアサイン ケーブル9の接続先のピンアサイン ケーブル8の接続先のピンアサイン ケーブル7の接続先のピンアサイン ケーブル6の接続先のピンアサイン ケーブル5の接続先のピンアサイン ケーブル4の接続先のピンアサイン ケーブル3の接続先のピンアサイン ケーブル2の接続先のピンアサイン ケーブル1の接続先のピンアサイン 3-3. ケーブルのピンアサイン 目次へ 3-2. エレクトロニクス部全体図 目次へ 3-3. ケーブル図 3-2. エレクトロニクス部全体図 3-1. 目次 3-1. 目次 目次へ 3-3. ケーブルのピンアサイン 3-2. エレクトロニクス部全体図 3-1. 目次 3. ケーブル仕様書(94DS-E-3-3) 目次へ パターン図        kagya.DBH 回路基板部品表      kagya.sam OrCAD回路図     95MI.1 川上実験室の卒業研究で作成したものを用いる。 2−12 可逆パワー変換ボード                 パターン図        RI.DBH 回路基板部品表      RI.sam OrCAD回路図     RI.1 P−Project’94のI/Osubボードを用いるとロータリーエンコーダーとコネクタがあわない為間にこのボードを入れて合わせる。 2−11 ロータリーエンコーダーインターフェイスボード PLDデータ       V94−PART−003,004 取扱説明書        V94−SPEC−011 検査手順書        V94−SPEC−010 作成手順書        V94−SPEC−012 パターン図        V94−CARD−410 回路基板部品表      V94−CARD−310 OrCAD回路図     V94−CARD−210 詳細設計仕様書      V94−CARD−110 V−Project’94で開発したものを使用する。詳細は、’94卒業研究報告書(自律知能ロボット用制御システムの開発 その5 ロータリーエンコーダーボード)参照。 2−10 ロータリーエンコーダー・タッチセンサボード 特性調査書        V94−SPEC−019 取扱説明書        V94−SPEC−018 検査手順書        V94−SPEC−017 作成手順書        V94−SPEC−016 パターン図        V94−CARD−408 回路基板部品表      V94−CARD−308 OrCAD回路図     V94−CARD−208 詳細設計仕様書      V94−CARD−108 V−Project’94で開発したものを使用する。詳細は、’94卒業研究報告書(自律知能ロボット用制御システムの開発 その2 電源制御ボード)参照。 2−9 勝敗判定装置 V−Project’94で開発したものを使用する。詳細は、’94卒業研究報告書(自律知能ロボット用制御システムの開発 その3 I/Osubボード)参照。 2−8 赤外線センサボード パターン図        V94−CARD−403 回路基板部品表      V94−CARD−303 OrCAD回路図     V94−CARD−203 詳細設計仕様書      V94−CARD−103 V−Project’94で開発したものを使用する。詳細は、’94卒業研究報告書(自律知能ロボット用制御システムの開発 その3 I/Osubボード)参照。 2−7 赤外線周辺回路ボード 取扱説明書        V94−SPEC−026 検査手順書        V94−SPEC−025 作成手順書        V94−SPEC−024 パターン図        V94−CARD−416 回路基板部品表      V94−CARD−316 OrCAD回路図     V94−CARD−216 V−Project’94で開発したものを使用する。詳細は、’94卒業研究報告書(自律知能ロボット用制御システムの開発 その3 I/Osubボード)参照。 2−6 超音波送受信ボード 放熱板部品図       V94−PART−008 固定用板部品図      V94−PART−007 特性調査書        V94−SPEC−008 取扱説明書        V94−SPEC−007 検査手順書        V94−SPEC−006 作成手順書        V94−SPEC−005 穴開図          V94−CARD−407 実装図          V94−CARD−407 パターン図        V94−CARD−407 回路基板部品表      V94−CARD−307 OrCAD回路図     V94−CARD−207 詳細設計仕様書      V94−CARD−107 V−Project’94で開発したものを使用する。詳細は、’94卒業研究報告書(自律知能ロボット用制御システムの開発 その2 電源制御ボード)参照。 2−5 電源ボード 穴開図          V94−PART−013 取扱説明書        V94−SPEC−015 検査手順書        V94−SPEC−014 作成手順書        V94−SPEC−013 改造仕様書        V94−CARD−515 パターン図        V94−CARD−415 回路基板部品表      V94−CARD−315 OrCAD回路図     V94−CARD−215 詳細設計仕様書      V94−CARD−115 フロントボード 穴開図          V94−PART−012         取扱説明書        V94−SPEC−015 検査手順書        V94−SPEC−014 作成手順書        V94−SPEC−013 その他          V94−CARD−014 改造仕様書        V94−CARD−514 パターン図        V94−CARD−414 回路基板部品表      V94−CARD−314 OrCAD回路図     V94−CARD−214 詳細設計仕様書      V94−CARD−114 メインボード V−Project’94で開発したものを使用する。詳細は、’94卒業研究報告書(自律知能ロボット用制御システムの開発 その4 マンマシンインターフェイスボード)参照。 2−4 マンマシンインターフェイスボード PLDデータ       V94−PART−016,017 取扱説明書        V94−SPEC−023 検査手順書        V94−SPEC−021 作成手順書        V94−SPEC−020 パターン図        V94−CARD−410 回路基板部品表      V94−CARD−310 OrCAD回路図     V94−CARD−210 詳細設計仕様書      V94−CARD−104 赤外線センサ部 パターン図        V94−CARD−405 回路基板部品表      V94−CARD−305 OrCAD回路図     V94−CARD−205 PWM回路部 パターン図        V94−CARD−409 回路基板部品表      V94−CARD−309 OrCAD回路図     V94−CARD−209 超音波センサ部 V−Project’94で開発したものを使用する。詳細は、’94卒業研究報告書(自律知能ロボット用制御システムの開発 その3 I/Osubボード)参照。 2−3 I/Osubボード Green Spring社 VIPC310を使用する。詳細は、VIPC310 User Manual参照。 2−2 I/Oボード PEP社 VSBC−1を使用する。詳細は、VSBC−1 USERS MANUAL(Document No.525−UM−0002)参照。 2−1 MPUボード 2. 各ボードの仕様 成果物登録簿へ 3.ケーブル仕様書(94DS-E-3-3) 2−12 可逆パワー変換ボード 2−11 ロータリーエンコーダー、インターフェイスボード 2−10 ロータリーエンコーダーボード 2−9  勝敗判定装置 2−8  赤外線センサボード 2−7  赤外線周辺回路ボード 2−6  超音波送受信ボード 2−5  電源ボード 2−4  マンマシンインターフェイスボード 2−3  I/Osubボード 2−2  I/Oボード 2−1  MPUボード 2. 各ボードの仕様 1. 目次 1. 目次 成果物登録簿へ 目次へ 詳細設計仕様書(エレクトロニクス編) MIRS94チームデータへ  完了報告書./finish.sam'96/3/8小池   操作仕様./test/sousa.sam 小池   ソフトウェア試験結果./ttest/softrslt.sam 水野   ソフトウェア試験手順書./test/softtest.sam 水野  94DS-E-3-000システム詳細設計仕様書(エレキ)./syousai/elec/moku.sam'95/7/30岡田、遠藤  94DS-M-3-000システム詳細設計仕様書(メカ)./syousai/mech/9403tree.sam'95/7/30全員  94DS-S-3-000システム詳細設計仕様書(ソフト)./syousai/soft/softsyou.sam'95/7/30水野、小池   基本設計書review./kihon/review.sam 小池、水野  003実施計画表./keikaku.sam4/28   002システム基本設計書./kihon/kihon.sam4/28全員  001MIRS開発計画書./kaihatu/00hyousi.sam12/14全員  資料番号表題ファイル名日付執筆者備考 チーム番号:mirs9403 MIRS成果物登録簿       成果物登録簿へ 本MIRSはハードウェアは既製品を主に用い、ソフトウェアについてもデータの入出力に関連したプログラムは過去のものを使用する。本体の動きを制御するプログラムは新たに開発する。 7.最後に: a.走行試験、b.センサの動作試験、c.ペナルティ戦動作試験、d.競技動作試験をおこなう。a,bについては試験用のプログラムを使用する。c,dについては仮設の競技場内で動作させる。ダミーの相手機を用いる。 6.試験: センサ類、モジュール内で作成されるデータは、どのモジュールからでもアクセスできるようにし、各関数間でのデータの受け渡しは行なわない。 左図はソフトウェアのモジュール関連図で、長方形で囲った部分が1つのモジュールである。 5.ソフトウェア構成: I/OボードにIP-Digital48とロータリエンコーダ回路とタッチセンサ回路を載せる。I/Oサブボードは卒研生の作成したボードを使用。I/Oサブボードに、赤外線センサ回路、超音波センサ回路、PWM回路を搭載する。マンマシンインタフェイス回路は、卒研のボードを一部改良して使用する。このボードには各種スイッチ、1個の7seg.LEDと8個のLEDを搭載する。モータ、ギヤ、ロータリエンコーダはMAXON34を使用する。 I/Oボード:VICP310  MPUボード:VSCB-1, 4.エレクトロニクスハードウェアの構成: 本システムは競技モード,ペナルティ戦モード,試験モードの3つの動作モードを有する.競技モードは、初期行動モード、探索モード、移動モード、追尾モードに分割し、これらのモードはそれぞれ複数個用意する予定である。 3.システム構成: 本システムは,車輪シャーシと基板シャーシの2段構造からなり,車輪シャーシには主に駆動系の部分品が,基板シャーシには主に基板類が取り付けられる.主要な基板はすべてVMEラック内に収容し,着脱が容易に行えるようにする.個々のセンサ類は個別に着脱可能とし保守性の向上を図る. 2.基本構造: 本システムの外観的な特徴は,赤外線センサの配置であり,これにより赤外線を見失いにくいので有利となる.又シャーシの形状を丸くし相手に引っ掛かりにくくする。動作は基本的に、相手の位置を認識したら相手の周囲を回り赤外線を見つけたらその方向へ進む。失敗したら再び相手を探す。相手の位置は超音波センサによる障害物までの距離とロータリエンコーダにより認識する自己座標から算出する壁までの距離との比較により行なう。 1.特徴: 基本設計仕様書要約 目次へ MAXON34を使用、詳細は9403班所有の仕様書参考 9−6 ギヤボックス、モータ この回路は4つのスイッチ(トグルスイッチ)でMIRSのボードを設定し、7segLED1つと8のLEDでMIRSがどの動作モードであるかを表示する。ここではスタートスイッチ、メインスイッチ、リセットスイッチを取り扱う。卒研のボードを一部改良して使用(other/mmi9参照)  9ー5 マンマシンインタフェイス回路 メインスイッチで、各ボードへ電力供給のON,OFFをして、スタートスイッチが押されてから、勝敗判定装置か押されるまでの間、モーターと、勝敗判定装置に電力を供給する。 この回路は、7.2VのNiCdバッテリにより、各ボードにより+5Vの電圧を供給するものである。RS232Cを使う時は±12Vが必要となるがこれは外部から供給するようにする。 9ー4 電源回路 この回路は、PI/T68230からの左右の速度・方向データから、8bitカウンタを用いて、それとの比較によりPWM信号を作り出す。これによりDuty比を128段階に変化させる。 9−3ー3 PWM回路 MIRSの機体に、パラボラ型に配置された8つの赤外線センサによって、相手MIRSの後尾から発する赤外線センサをキャッチし、相手の位置、方向を確認する。受信したHIorLOWの8bitの信号をI/Oサブボードへ送る。LEDから発振するパルスは、別紙規格表(井浪所有)による。 9−3−2 赤外線センサ回路  距離のカウントの仕方は、H2ピンからのトリガによるワンショット回路と同時にPIT内蔵されているタイマを動かし受信と同時にとめてその距離を計測する。このタイマはダウンカウンタであるので、オーバーフローの際にはアンダーフロー信号を出力し割り込み信号とする。(other/ooishi/*.sam参照) この回路は指定した超音波センサから超音波を送信してから受信するまでの時間をカウント値として測定するものである。センサ選択信号をを選択すると同時に出力される信号をトリガとして使用し、ワンショット回路によってそれを0.35msに引き伸ばしたパルスと40kHzのCLKを合成した送信信号を作り出す。これを音波に変換してスピーカから発信する。性能としては、測定距離20cm、測定精度±1cm以内(温度補正をした後)とする。反射波を受信したらアンプで受信信号を増幅し比較回路を通してPITに割り込みを入れ測定距離を出力する。 9−3−1 超音波センサ回路 ボードは卒研生の作成したボード(other/iosub.sam、io_chu.sam参照)を使用する。 このボードは、赤外線センサ回路、超音波回路、PWM回路を搭載する。 9−3 I/Oサブボード タッチセンサの割り込み信号は3つのセンサの入力のORとする。 タッチセンサは、3個取り付ける。 9−2−2 タッチセンサ回路 駆動輪が逆転の時にはカウンタはダウンカウントし、0以下になるとカウント値は2の補数表示となる。 データ出力は、8ビットのパラレルデータを2回に分けて出力する。 カウンタは、12ビット・バイナリ・アップ・ダウン・カウンタを用いる。 ロータリーエンコーダは、a,b2相入力式のものを、2個まで取付可能である。 9−2−1 ロータリーエンコーダー回路 (other/ki_rorta.sam,dig48.sam,rt1.sam,rtsecp.sam,midrep5.samを参照) このI/Oボードに,MC68230が2個乗っているIP−Digital48と、ロータリーエンコーダー・タッチセンサ回路を載せる。 I/OInterconnect Two50-pin.100inchflatcableconnector サイズ 172mm(deep)×128.5mm(high)×13.6mm(thick) 名称 VIPC310 9−2 I/Oボード   詳細は、VSBC-1 UsersManualDocumentNo.525-UM-0002、MPUの調査記録参照) 製造元 PEP Modular Computers DC±12V RSー232Cを使用する時は必要。 電源 DC  5V(±5%),750mA サイズ 100×160mm RAM 128〜1024kB ROM 64〜512kB CPU MC68HC000(クロック 12.5MHz) 名称 VSBC−1 SingleBoard(68HC000)ComputerModulefortheVMEbus 9−1 MPUボード 9.各回路の機能、性能 目次へ 信号線構成 図に本システムのエレクトロニクスハードウェア構成を示す。 8.エレクトロニクスハードウェア構成 目次へ 本システムは,車輪シャーシと基板シャーシの2段構造からなり,車輪シャーシには主に駆動系の部分品が,基板シャーシには主に基板類が取り付けられる.主要な基板はすべてVMEラック内に収容し,着脱が容易に行えるようにする.個々のセンサ類は個別に着脱可能とし保守性の向上を図る.センサ類の位置は外観図(図5ー1)を参照のこと.重心の位置は中央とし,タイヤは重心を通る線上に配置すること.  図7ー1は,本システムの構成ツリーである。 7.構造概要 目次へ 動作は6.1を参照。  競技モードを用いるが初期行動モードを使わずはじめに探索モードから始める。 相手の方向に進み相手の手前50cmで相手を中心に半径50cmの円軌道で移動しし相手の赤外線を認識したら赤外線の方向に向くそしてその方向に進む。 6.2 ペナルティ戦モード 以下にモードの遷移図を示す * 遷移条件が成立しないとき現在のモードに留まる. モード遷移条件  競技モードにおける動作をまとめる。    2.前に進む(go)      ↓    1.相手の方向に向く(turn) if 相手の背面方向が変わった→1 else →saerch if 2秒前以降の相手位置データ有り→round chase (追跡)←赤外線センサデータ有り       if 壁にぶつかった→5,180°回転(turn)→1       if 円運動の始まりの時刻から10秒経過→saerch 4.相手の位置を中心に回転運動(始まりの時刻をメモリに格納)(circlarmotion)      ↓相手の方向に対して垂直な方向 3.相手の方向に対して垂直な方向に向く(turn)      ↓相手との距離が50cm以内 2.相手の50cm手前まで進む(go)      ↓相手の方向に向いた 1.相手の方向に向く(turn) if相手の相手との距離が50cm以内→3    if 相手の位置を再認識した→1 round(回り込み)←相手の位置データ有り寳ヤ外線センサデータ無し     4→180°回転(turn)→5      ↓if障害物に触れた(タッチセンサデータより) 5.壁の無い方向に向く(turn)      ↓正面と壁との距離が近い 4.進む(go)      ↓壁に対して水平 3.壁にたいして平行な方向に向く(turn)      ↓壁の近くに位置する 2.壁の方向に進む(go)      ↓壁の方向に向いた 1.壁の方向に向く(turn) if壁に近い→3 行動手順 saerch(探索)←相手の位置データ無し寳ヤ外線センサデータ無し 相手の背後は相手の勝敗判定装置から発する赤外線に反応する赤外線センサと相手の位置座標の変化から算出される移動方向により認識する。 *相手の位置は超音波センサによる障害物までの距離とロータリエンコーダにより認識する自己座標から算出する壁までの距離との比較により行なう。相手の位置は認識した時点でその座標を記憶しているものとする。 本システムは様々な競技モードを搭載させる。ここで一つだけの動作モードを記す。製作が早期に終えた際は更に新しくモードを付け加える。またモードの追加、変更はソフトのみで行われるようにする。本システムの競技モードは以下に記すものであるとして受け取って下さい。 6.1競技モードでの動作 試験モードは総合試験を行うためのモードで詳細は12章で規定する.  本システムは競技モード,ペナルティ戦モード,試験モードの3つの動作モードを有する. 6.動作概要 目次へ  本システムの外観的な特徴は,赤外線センサの配置であり,これにより相手の追尾をする際に相手の勝敗判定装置から発せられる赤外線を見失いにくいので有利となる.又シャーシの形状を丸くし相手に引っ掛かりにくくする。 外観を図5ー1に示す。 5.外観 目次へ 各モードの動作については5及9章で述べる. 競技モード,ペナルティ戦モードおよび試験モードを有すること 動作モード MIRS競技規定に適合するもの. 勝敗判定装置 ロータリエンコーダ×2,タッチセンサ×3. 超音波距離計測機能×3,赤外線センサ×8, 情報収集機能 0.8m/s 最大走行速度 PWM制御による2輪独立駆動方式 駆動系制御方式 VSBC1(PEP社製).詳細は8章を参照. MPU 制御系 15W以下.(5V,3A 電源回路の制限による) 駆動系 36W以下.(7.2V1700mAhのNi-Cd電池の制限による) 消費電力 駆動系と制御系は電気的に完全に分離されており,各消費電力は20分の 連続運転が可能な電源容量を有すこと 電源 25cm(縦)×25cm(横)×30cm(高さ) 以内であること. 大きさ 3.5Kg以内 重量 4.緒言 目次へ  本システムは,競技主宰者(学科)より貸与される,MPU及びI/Oボードを用い,自律的に行動する小型知能ロボットを実現する.本システムの移動は2つの車輪で行い,PWM制御による2輪独立駆動方式とする.情報収集機能として,超音波距離計測機能,赤外線探知機能,車輪の回転数を計測する機能,接触検知機能を有しており,これらから得られた情報をもとに,後に述べる行動計画に基づく動作をソフトウェアにて実現する.また,すべての事項はMIRS競技規定に適合するよう設計されている. 3.システム概要 目次へ  本仕様書はMIRS競技規定に基づき,MIRS9403チームの作成する自律型小型知能ロボット(MIRS)の基本仕様を記述する。 2.目的 目次へ これらは、仮設の競技場内でMIRSを動作させ動きを観る。実際に競技に使用するプログラムを用いる。 (8)競技モード動作テスト (7)ペナルティ戦モード動作テスト 注)7segLEDの表示については11.操作仕様を参照 ->(システム詳細設計仕様書ソフトウェア編参照)指定された動きをするか確認する。きれいに円を描くか確認する。 7.DIP-SWITCHを1111に設定する。 6.モードをTEST3に設定する。 ->(システム詳細設計仕様書ソフトウェア編参照)指定された動きをするか確認する。 5.DIP-SWITCHを1111に設定する。 4.モードをTEST2に設定する。 ->2m進むか確認する。また、まっすぐに進むか確認する。 3.DIP-SWITCHを1111に設定する。 2.モードをTEST1に設定する。 1.MIRSを廊下に置く。 (6)走行テスト ->LEDの表示が発光器の方向を示しているか確認する。 4.赤外線発光器をMIRSに近づける。 3.DIP-SWITCHを1111に設定する。 2.モードをTEST1に設定する。 1.MIRSの車輪が浮くように台にのせる。 (5)赤外線センサ動作試験 ->押されたセンサに対応したLED表示がなされているか確認する。 4.バンパ、タッチセンサワイヤを押す。 3.DIP-SWITCHを1111に設定する。 2.モードをTEST7に設定する。 1.MIRSの車輪が浮くように台にのせる。 (4)タッチセンサ動作テスト 6.モードをTEST6に設定し、左側面に障害物を置く。 ->4と同様の検査をする。 5.モードをTEST5に設定し、正面に障害物を置く。 ->障害物までの距離とLED下位3桁の表示を比べる。 4.MIRSの左側面に障害物を置く。 3.DIP-SWITCHを1111に設定する。 2.モードをTEST4に設定する。 1.MIRSの車輪が浮くように台にのせる。 (3)超音波センサ動作テスト ->タイヤの回転が止まるかどうか。 ->青色LEDが消灯し、赤色LEDが点灯するかどうか。 4.タイヤが回転しているときに勝敗判定装置を押す。 ->タイヤが回転し出すか。 ->青色LEDが点灯し、赤色LEDが消灯しているかどうか。 3.DIP-SWITCHを1111に設定する。 2.モードをTEST1に設定する。 1.MIRSの車輪が浮くように台にのせる。 (2)勝敗判定装置の動作テスト ->異常な温度上昇、煙などが見られないか。 ->LEDが正しく表示されているか。(赤色LED点灯、青色LED消灯) 注) ->動き出さないか。 2.電源スイッチを押す。 1.DIP-SWITCHを0000に設定する。 (1)システム起動テスト 全てのネジのゆるみを調べる。 (0)車体のチェック (8)競技モード動作テスト (7)ペナルティ戦モード動作テスト (6)走行テスト (5)赤外線センサ動作テスト (4)タッチセンサ動作テスト (3)超音波センサ動作テスト (2)勝敗判定装置の動作テスト (1)システム起動テスト (0)車体のチェック 総合試験では以下の試験を行う。 12.総合試験計画 目次へ 次に操作手順のフローチャートを示す。 4 押しボタンスイッチを押す。 3 DIP-SWITCHを「1111」に設定する。 2 押しボタンスイッチを押す。 1 変更したいモードにDIP-SWITCHを設定する。 (警告:走行するモードのときは危険なので変更はしない) (3)動作中のMIRSモードを変更させる手順 2 電源スイッチを切る。 1 勝敗判定装置を押す。 (2)MIRSを停止させる手順 (手順2、3を省いた場合モード「N0RMAL」で作動する) 5 押しボタンスイッチを押す。→モードが実行される。 4 DIP-SWITCHを「1111」に設定する。 3 押しボタンスイッチを押す。(LEDの表示が↓の表に対応して表示される) 2 使用するモードに対応するDIP-SWITCHに設定する(↓の表を参考)。 1 電源スイッチを押す。 (1)MIRS起動の手順 (3)動作中のMIRSのモードを変える手順 (2)MIRSを停止させる手順 (1)MIRS起動の手順 以下にMIRS9403の操作法について示す。 11.操作仕様 目次へ 以下にモジュールの関連図を示す。 センサ類、モジュール内で作成されるデータは、どのモジュールからでもアクセスできるようにし、各関数間でのデータの受け渡しは行なわない。  データの取り扱いについて 以下に、各モジュールを示す。 10.ソフトウェア構成 成果物登録簿へ 12.総合試験計画 11.操作仕様 10.ソフトウェア構成 9.各回路の機能、性能 8.エレクトロニクス・ハードウェア構成 7.構造概要 6.動作概要 5.外観 4.緒言 3.システム概要 2.目的 1.目次 1.目次 成果物登録簿へ 目次へ 基本設計仕様書 成果物登録簿へ    制作     ↓ プログラム化についての調査→7/18迄  ホスト関連→ホストとは何か→7/4迄  mmi制御:どのような表示をさせるか検討、及び決定 → 6/27迄  pwm制御→6/20迄  行動決定→5/30迄  センサデータ処理→5/23迄 各モジュール詳細 ボードの制御に関するポートの調査(I/Oポートの調査) 5/20現在vproの資料を入手 5/26迄にCPUの資料を入手 モジュール関連図の作成→遅れ気味 必要なモジュールがすべて決まりしだい作成する 6/24迄に作る ・ソフトの計画('95/5/20追加 5月26日までに設計書を集める ボードの部品 テスト明けには発注できるようにする ・エレキの計画 ('95/5/20追加 エレキ:岡田(+大石、遠藤) メカ:大石、井浪、遠藤、高橋 ソフト:小池、水野 作業担当者 W:作業予定日、*:作業実施日、/作業終了 6-2完了報告書作成             WW全員 6-1document整理           WW  WWW   WW全員 5-2MIRS競技             W全員 5-1規定走行審査          W全員   4-2メカ、エレキのチェック       wwwww  ww  wwwwメカ、エレキ  4-1デバッグ作業、softの更新      *****WWWWWWWW  WW  WWWWソフト  4全体の見直し             3ー3総合試験       WW全員     3ー2ボードのテスト         WWエレキ     3ー1対ホスト通信試験         WWソフト     3テスト             2ー4総合試験計画、操作仕様書作成  * */ソフト          2-S-4program制作    ****/ソフト       2-S-3program化の検討      *****  */ソフト       2ーSー2soft各モジュール詳細仕様決定   ***  ****/ソフト         2ーS-1soft全体の構成 *****  ***/ソフト         2ーMー4シャーシ制作    *******メカ     2-M-3部品発注(メカ関係)      */メカ         2-M-2組立図、部品表、(メカ関係)   ******/メカ        2ーM-1シャーシの詳細設計 *****  ********/メカ        2ーEー3ボードの制作     ******エレキ     2ーEー2ボードの部品発注     */エレキ         2ーEー1エレクトロニクス関係の設計図集め、および内容の理解 ****** */エレキ         2詳細設計、制作                1基本設計の見直し*****/            経過********************************/ テスト  テスト 番号項目4月5月6月7月8月9月10月11月12月1月2月3月 実施計画(mirs9403) 目次へ ドキュメントマネージャー  岡田 昌典 マネージャー        小池 江幸       2、マネージャー及びドキュメントマネージャー 36 峯松 淳   メカニクス 34 水野 吉規  ソフトウエア 20 高橋 輝臣  メカニクス 12 小池 江幸  ソフトウエア 9 岡田 昌典  エレクトロニクス 7 大石 淳   センサー 5 遠藤 将一  エレクトロニクス 3 井浪 啓孔  センサー    1、メンバー一覧 1994年度 MIRS開発3班の開発体制は以下の通りである 8. MIRS開発体制 目次へ 記号体系に関する規定 用語の定義 6-6その他 6-5総合試験計画 6-4トレードオフスタデイー ペナルテイー戦における行動指針の決定 対戦相手システムの機能検討 6-3競技に関する検討 機動性能の検討 探知性能、被探知性能の検討 6-2システム総合性能の検討 6-1-3システム機能、構造配分 モニタ機能の検討 シャーシの検討 その他 ギヤー駆動輪機能の検討 パワー変換機能の検討 パワー信号制御機能の検討 駆動機能 追加機能の対策、検討 探索,追尾機能の検討 行動決定機能能 位置認識機能の検討 センサー情報数値化機 データ作成機能 タッチセンサ機能の検討 ロータリーエンコーダ機能の検討 赤外線センサー機能の検討 超音波センサー機能の検討 センサ機能 6-1-2システム基本詳細機能の検討 駆動機能の調査研究 MPUの調査研究 DCモーター及び制御方式の調査研究  タッチセンサーの調査研究 ロータリーエンコーダの調査研究 超音波センサーの調査研究 赤外線センサーの調査研究 基幹部品の性能、機能等の調査研究 6-1-1技術的実現性研究       6-1システム機能設計 7. システム基本設計の内訳 目次へ 左右のセンサーは指向性を低める(相手の有無だけ確認) 前方のセンサーはそれぞれの指向性をかなり高める(相手の曲がる方向を認識させるため) 赤外線センサー: 自機の位置と壁の位置をを正確に把握せさせねばならない ロータリエンコーダ: 前方は適当で良い 左右のセンサーは指向性を高める(相手の細かい動きを捕えるため) 超音波センサー: これらの現実化のために ソフトの処理がうまくいかないと判断した時は相手の赤外線まっすぐ向かうだけにする 相手と自機の速度差も考える? 判断には相手と自機の回転速度の差も考える 相手の後ろに回りこむとき壁にぶつからないように適当に回転角を調節する 前方の超音波センサーで相手との距離を認識し相手の回転に合わせ自機は相手の後ろに回りこむ、回りこむ時は追跡モードとほぼ同じ動作をする 2.相手が速く回転している 緩く曲がりながら相手を追跡 1.相手がゆっくり曲がっている 一度相手の赤外線を感知したら先ず正面をその方向に向ける 追跡モード c.その他 b.その場で左右どちらかを向く a.その場で後方を向く この時は: まわりこんでいるのにずっと左右どちらかの超音波センサーであいてを捉えている時、図のような状態と考えられる 時間制限を設けそれを超えたら探索モードのやり直し 相手を見失ったら探索モードを繰り返す(回避モードの考えはない 相手の赤外線を見つけたら追尾モードへ その後: パターン2が多いと予想される 壁との位置関係により曲率は変化させる 始め大きい曲率で曲がり段々と曲率を小さくしながら曲がる 段々と曲率を大きくしながら曲がる 相手との距離を直径とした円を描く 相手の進む方向に対して自機を逆方向に向け、左右どちらかのセンサーが常に相手に向くようにさせ、相手が自機に近づくか遠ざかるかを認識したら相手の後ろに回りこむ(図を参考) 相手が動いているとき: 相手を中心に常に左右どちらかのセンサーで相手を確認しながら相手の回りをまわる 相手が止まっているとき: 細かく車体を揺らしセンサーで相手の進む方向を確認する。(この状態で相手の様子をみる、相手が遠いときは一度相手に近づき再び相手を探す) 相手を見つけたら自機の左右どちらかを相手の方向に向ける。 自機は常にその場で(又はゆっくり進みながら)回転をして超音波センサーにより相手を見つける。 探索モード: 6-3.行動決定機能詳細 目次へ 6-2. 基本機能詳細まとめ 目次へ 各制御プログラムを管理する機能 モニタ機能 すべての機能を一つにまとめる。重心を中心にし、動作を快適にする。重量を軽くする。 シャーシ機能 モータによる動力をギヤーに伝え、駆動輪に伝える。 ギヤー、タイヤ機能: モータ制御信号をもとに、モータの出力をコントロールする。 パワー変換機能: メモリに格納された動きをもとに車体がスムーズに動くように、モータ制御信号の最適化を考えてモータ制御信号をパワー変換機能に送る。 モータ信号制御機能: 駆動機能 新たな行動プログラムをつくる余裕をとっておく。 追加機能: 相手の発信する赤外線をもとに相手の勝敗判定装置を押す命令をメモリに格納する。 追尾機能: 相手を探し、相手の後ろに回り込む命令をメモリに格納する。 探索機能:  行動決定機能 自機、相手、壁の位置、速度、方向を計算し、メモリに格納する。 位置認識機能: 各センサの信号をMPUが扱いやすいような数値に変換する。 センサ情報数値化機能:  データ作成機能 情報処理機能 タッチセンサ機能: 本体が障害物に触れたかどうかを判定する。 ロータリーエンコーダ機能: タイヤの回転数を測定する。 超音波センサ機能: 障害物との距離、方向を判定する。 赤外線センサ機能: 相手の勝敗判定装置の方向を判定する。 センサ機能 6-1. 基本機能詳細 目次へ モニタ機能 シャーシ機能                 その他の機能    ギヤ、駆動輪機能 パワー変換機能 モータ信号制御機能(モータの動作を最適化する) 駆動機能         追加機能   追尾機能   探索機能 行動決定機能   位置認識機能   センサ情報数値化機能 データ作成機能 情報処理機能 タッチセンサ機能 ロータリーエンコーダ機能 超音波センサ機能 赤外線センサ機能 センサ機能       上の各機能を更に細かく分類、設定する。       その他、車体のシステムを円滑に運営する機能  モニタ機能、シャーシ機能 自機の動き                  駆動機能 相手を追い込むまでの動作を考える       情報処理機能 相手を見つける                センサ機能  この為に必要な機能は次のようになる。 失敗----最初から繰り返す 勝利----終了    2.相手の後方に有る勝敗判定装置まで回りこむ 1.相手を探す 本システムを実現するためにMIRSの行動を簡単に表すと、 5.システムの基本機能 目次へ 先輩の残した資料によく目を通し開発のspeed upをはかる。 ソフト的な部分で工夫する。まず、基本的な動作を作り上げ、補助的な動作やその他のアイデアなどは随時付加するようにし、そのためにシステムは様々な動作に対応できるようにする。 センサーの確実な動作の実現を開発の要点とする。 車体、足回りなどメカ的な部分はシンプルにし開発にあまり手間をかけない。 以下の方針に基づき開発する。 4.システム設計方針 目次へ これを本システムの概要とする センサの配置予定場所 モトローラ68000 MPU: モータ2機 動力: 駆動輪2個 補助輪数個  シャーシ: 未定 接触センサー: 2個 ロータリエンコーダ: 左右 各1個 又は 各2個 前面 4個 又は6個 赤外線センサー: 左右両面 指向性超音波センサー 各1対 前面 標準超音波センサー 1対 超音波センサー: 使用予定ハードウェアー 制御機構の概要 相手の後ろに回りこむ。相手の勝敗判定装置の赤外線を捉えたらその方向に向き正面の複数の赤外線センサーにより相手の逃げる方向を捉えながら追いかける。 常に相手を左右どちらかの超音波センサーで捉え相手がある特定な位置の時 相手を追い込む動きの基本: 赤外線センサの独特な設置方法で追跡動作の強化。スピード重視。車体のスムーズな制御。制御プログラムの独立化。 車体の特徴: MPU(頭脳)、センサー(目)シャーシ(体) 基本構造: 相手MIRSの勝敗判定装置を押すシステム 本システム: 3.開発システムの概要 目次へ MIRS開発にあたり、MIRS開発の指針となる事項をまとめる。 2. MIRS開発計画書の目的 成果物登録簿へ 9.MIRS開発スケジュール 8.MIRS開発体制 7.システム基本設計の内訳 6−3.システムの行動決定機能の詳細   6−2.システムの基本機能の詳細のまとめ 6−1.システムの基本機能の詳細 5.システムの基本性能 4.システム設計方針 3.開発システムの概要 2.MIRS開発計画書の目的 1.目次 1. 目次 成果物登録簿へ 目次へ 36 峯松 淳  34 水野 吉規 20 高橋 輝臣 12 小池 江幸 9 岡田 昌典 7 大石 淳  5 遠藤 将一 3 井浪 啓孔 製作者 1994年12月14日 MIRS開発計画書  TML>  成果物登録簿へ programをより理解しやすい表現で書くこと、無意味な機能の削除、超音波センサのより利口な使用法の研究、詳細設計書におけるprogramの詳しい説明、ソフトのマンマシンインタフェイスの改良。 やり残したこと: 赤外線センサによる追跡機能は競技前のテストでは十分に働いていたが、競技中に働いた形跡がなかった。おそらく通常移動時の移動速度が早すぎたと思われる。 ソフトは第2版が恐らく一番競技には強かったと思われる(練習試合で全てのチームにかったから)、途中で欲張って動作を変更したのが敗因となった。 ソフトの初版が完成してから動きに関する部分を競技直前まで調整したので予定通りの機動性能を得ることができた。 ソフトはおよそ初版のソフトの詳細設計書の通りに作られたが、機能の追加、ハードに関係したソフトの設計変更、競技作戦の変更によるソフトの変更などがなされた。 ソフトの土台は完成したがその応用である競技用ソフトはまだ未完成である。(しかし十分競技はできる) ソフト: 全ての任務を完了 エレクトロニクス: すべての任務を完了 メカニクス: 完了報告書