沼津高専 電子制御工学科
MIRS9902基本設計書
MIRS9902-DSGN-0004
改訂記録
版数 作成日 作成者 承認 改訂内容
A01 H12/2/3
MIRS9902
河野丈志
初版
A02 H12/2/15
MIRS9902
河野丈志
不足していた部分を追加
A03 H12/6/7
河野丈志
河野丈志
詳細設計書作成に伴い、変更した部分の手直し

目次


  1. はじめに
  2. システム概要
  3. 諸元
    1. 外観
    2. 機能設計
  4. システムの動作規定
  5. ハードウェア構成
    1. システム構成ツリー
    2. エレクトロニクス回路構成/機能
    3. エレクトロニクス回路基板外形
    4. 保守交換単位
    5. ソフトウェアビジビリティ
  6. ソフトウェア構成
    1. リアルタイムモニタ
    2. マンマシンインターファイス
    3. タスク構成/機能
    4. 試験機能
  7. システム試験
    1. システム試験概要
    2. 試験内容

  1. はじめに

  2. 本仕様書はMIRS99の競技規定に基づき、MIRS9902チームの作成する自立型小型知能ロボットの基本設計書を記述する。

  3. システム概要
  4. ハードウェア

    MIRS9902システムは標準MIRSに準ずる構成を有するが、MIRS9902固有の機能を実現するためにいくつかの変更点がある。以下に、標準MIRSと異なる点を述べる。

    ソフトウェア

    ソフトウェアは複数のイベントドリブン型のタスクからなり、割り込み及びタスクの管理は、リアルタイムモニタMIRX68Kを用いて実現する。

    システムの動作

    MIRS9902システムは、MIRS99SFの競技規定を考慮して作成されている。もし競技規定の変更があった場合は適宜変更していく。

    まず置ける位置がわからないことから、どこからでもスタート位置に行けるようまず壁へ向かって走る。このとき、ポストは障害物とみなす(この判断には赤外線センサを用いる。)。壁に到達したら、マシン前面のタッチセンサを用いて、壁Tに対して垂直になるようにする。垂直になったら壁に対し、マシンの中心が500mm離れるまで後ろに下がり、マシン左横の超音波センサ(以下USS)を用いながら右へ90°回転する。これによりマシンの正面を右に向けマシンの直進方向が壁に対し平行になるようにする。そして平行になったら、直進し、もう1つの壁Uから、マシンの中心が500mm離れたところまで向かう。そしてまた右へ90°回転し、マシンの直進方向が壁Uと平行になるようにする。そこで、ロータリエンコーダ(以下R.E)の値をリセットし、そこを座標原点とする。

    その後、決められたルート上を移動する。これはΠの字の形で競技場の左下の端から、移動していく。ルート上を移動中は左の2つのUSSで壁との距離を測りつつ、右のUSS、前面の5つのタッチセンサでポストがないかを確認する。ポストが見つからない間はルート上を移動し、右のUSSによりポストを発見したら、ポスト接近モードへ。タッチセンサによるポスト発見ならポスト獲得モードへ。また一度獲得したポストがあったら、回避モードへ。

    ポスト接近モードに入ったら右へ90°回転し、前の超音波センサでポストを確認しつつポストへ接近する。(ポストへ接近中ポストを見失った場合は、マシンを回転させ、あたりを調べてないか確認し、発見したら再度接近をし、見つからなかったらルート上のポスト接近モードに入った位置へ戻る。(ルートトレースモードへ。これはルート移動中発見したポスト獲得を優先するためのものである。)
    またこのとき他に近くにポストがないか、左のUSSで確認しながら進んでおり、ポストがあったときは、その位置を記録し、目標ポスト獲得後、そのポスト獲得へと向かう。ポストに近づきポストとの距離が超音波センサでわからなくなったら少し減速し、ゆっくりとポストへぶつかる。(この距離は20cmくらいだと思われるが詳しい値は決まっていない。)そしてポストにぶつかってポスト獲得モードへ移る。

    ※R.Eについて

    R.Eのデータの改変には2つの時がある。見つかってからか、それともTimerにより随時やっていくかである。これは、多分R.Encのカウンタが、オーバーフローした時点でカウントアップをしていくと思うのでTimerまたはオーバーフローの割り込みでR.Eのデータを変えていくと思われる。

  5. 諸元
  6. システムとして必ず備えておかなければならない要件、例えば、形状、機能・性能などについて記述する。

    1. 外観

    2. 図1に本システムの外観を示す。

      図1.MIRS9902外観図
      ポストスクリプト形式頭脳winCAD形式
       li>機能性能

  7. システムの動作規定
    1. 1回目の競技はあらかじめ決められたルート(壁から50cm内側に入ったところ)を走行する。2回目の競技は1回目の競技によってえられらポストデータから作成されたマップ上を走行する。
    2. 競技開始がどこの位置であっても必ずルートのスタート位置へ行く。
    3. 左の2つの超音波センサにより壁との距離を一定に保つ。
    4. 右の超音波センサ,またはタッチセンサポストを発見したら、それを獲得しにいく。また獲得モードのときは左の超音波センサでポストを発見する。
    5. ポストのスイッチを少し曲がって走行するだけで押せるくらい近くを回る。(スイッチの最も出っ張っている部分から約15mmのところ)
    6. スイッチはその近くを通るだけで押せるよう設計しプログラムする。(それでもとれない場合の方法は考えておくがそれは本当に無理なときのためである。)
    7. 障害物が壁であってもポストであっても回避できる。
    8. ルートへの復帰も最短ルートを取る。
    9. ポストの周りを回るとき、横滑りしない程度のスピードで回る。
    10. ポストとの接触、また急停止、その場回転など誤差が起こりやすい動作を減らし位置に誤差が出ないようにする。(対策:ポストや壁にぶつかるときはゆっくりぶつかる、急停止したらだいたいの誤差を補正する、大きく回るなど)
    11. 誤差の少なくなるようシステムを設計する。

  8. ハードウェア構成
    1. システム構成ツリー
    2. 下記にシステムの構成を示す。

      図2.システム構成ツリー

    3. エレクトロニクス回路構成/機能

    4. 図3.エレクトロニクス回路構成

      各部の機能
      1. MPUボード
        MPU68000を載せ、他のボードへ信号を送ったり、送られてきた信号を処理する制御部分。
        特徴として、RAM:512kb,system clock:12.5MHz,RTC,Serial I/O,VMEbusInterfaceを持つ。
      2. I/Oボード:(PIT)部 (IP-Dig.48 Board)
        双方向の32bitの入出力と24bitダウンカウンタを持つ。
      3. I/Oボード:ロータリエンコーダ制御部
        モータの回転数を測定し、回転子の回転数&速度の検出を行う。 ロータリーエンコーダ信号処理回路、タッチセンサ信号処理回路を持つ。
      4. PWM回路部 (I/O sub,MPC) IOsubボードの一部。モータを制御するPWM信号を作り、方向データとともに出力する。
      5. 赤外線センサ回路
        IOsubボードの一部。赤外線センサ回路、赤外線センサ周辺回路からなる。
      6. 超音波センサ回路
        I/Osubボードの一部。超音波の送信信号の作成と受信信号による割込み要求信号の作成をする。
      7. ロータリーエンコーダ
        タイヤの回転数を2相の信号で出力する。
      8. タッチセンサ
        マイクロスイッチを用い、スイッチ押下時のチャタリングを除去した信号を送る。
      9. 超音波センサ
        送信信号により超音波を発信し、その超音波の受信により受信信号を出力する。
      10. 赤外線センサ
        ポストのスイッチからの赤外線を受光し信号を作る。また送信信号によりフォトセンサの発光部を発光させ、受光部でその赤外線を受光する。
      11. モータ
        MIRS本体の駆動部分。ここの回転によりMIRSを動かす。
      12. 可逆モータ変換ボード PWM回路から送られたPWM信号と方向データによりモータへの指令を作り出す。
      13. 電源ボード
        2本の7.2Vバッテリから各ボード用の+5V、RS232C用の±12V、モータ用の6Vの電圧を作る。


      14. *各部のインターフェイスは、標準MIRSの取扱い説明書による。
        (IOsubボード取扱い説明書)
        (ロータリエンコーダボード取扱い説明書)
        (MMIボード取扱説明書)
        (電源ボード基板取扱い説明書)
        (赤外線センサボード取扱い説明書)
        (超音波センサボード取扱い説明書)
        (モータパワー制御ボード取扱い説明書)

    5. エレクトロニクス回路基板外形
      1. 下記についてはVMEハーフハイト基板仕様に従う。
        • CPUボード(VSBC1)
        • IOボード(VIPC310)
        • IOSubボード
        • マンマシンインタフェースボード
      2. 下記についてはIOボード(VIPC310)インダストリパック仕様に従う。
        • IPボード(IPDigital48)
        • ロータリエンコーダボード
      3. 下記については標準MIRS基板を使用するのでMIRSデータベースを参照すること。
      4. 電源制御基板仕様
      5. フォトセンサ基板(現在作成中)(ポストについている赤外線LEDの使用に変更)

        図4.反射方フォトセンサ基板外形図(現在作成中)
        ポストスクリプト形式頭脳winCAD形式

    6. MIRS9902保守交換単位
    7. 部品名称機能要する時間(min)必要数
      MPUボードCPU・メモリ・ROM等を搭載5
      1
      可逆モータパワー制御基盤PWM信号をアナログ信号に変換する10
      1
      タッチセンサタッチセンサの状態をCPUに伝える10
      1
      VMEラック各ボードをVMEバスでつなぐ20
      1
      I/OボードIPボード・メモリ・ロータリーエンコーダーボードを搭載15
      1
      IPボード(IPDigital48)PI/Tを2個実装15
      1
      ロータリーエンコーダボードMIRSの相対的な現在位置をカウントし、CPUの要求に応じて送る15
      1
      I/Osubボード超音波センサ・赤外線センサ・PWM回路等を搭載15
      1
      MMIボードLEDにより人とMIRSの情報交換を行う25
      1
      緊急停止装置MIRSの強制停止をスイッチにより行う10
      1
      電源制御基板各回路に電力を供給する20
      1
      超音波センサボード超音波センサ回路を搭載15
      1
      赤外線センサボード赤外線センサ回路を搭載15
      1
      電池ホルダ電池をつなぐ5
      2
      タイヤモータの回転に応じて回転する5
      2
      シャーシ・フレームMIRS本体を衝撃から守る10
      1
      モータ供給電力に応じて回転しMIRSの移動を行う5
      2
      電池必要電力の供給5
      2
      ネジ・ナット各ボードを留める10
      ケーブル類各ボードをつなげる5

    8. ソフトウェアビジビリティ
    9. 本システムのソフトウェアビジビリティは標準MIRSソフトウェアビジビリティの使用と同一である。ただし、各センサの位置とIOポートアドレスの対応は下表による。
      センサ位置IO port Address/bit備考
      赤外線センサ前1FC6003/B7出力
      赤外線センサ前1FC6003/B5
      赤外線センサ前2、左FC6003/B4モードの違いにより前2と左を切り替える。
      超音波センサFC6151/B2"1" B1"0" B0"0"出力
      超音波センサFC6151/B2"0" B1"1" B0"1"出力
      超音波センサFC6151/B2"0" B1"1" B0"0"出力
      超音波センサ左1FC6151/B2"0" B1"0" B0"1"出力
      超音波センサ左2FC6151/B2"0" B1"0" B0"0"出力
      超音波センサカウント値上位FC616F/B7 - B0
      超音波センサカウント値中位FC6170/B7 - B0
      超音波センサカウント値下位FC6171/B7 - B0
      アーム部タッチセンサFC6153/B5
      前面タッチセンサFC6153/B4
      前面タッチセンサFC6153/B3
      側面タッチセンサFC6153/B2
      側面タッチセンサFC6153/B1
      後部タッチセンサFC6153/B0

  9. ソフトウェア構成
    1. 動作モード


      図5. 1回目の動作


      図6. 2回目の動作
      モードの定義
      1. 初期状態:
        ルートのスタート位置へいき、マップ(2回目の競技で使うポストの位置データ)の原点を得る。まず競技場の枠の角の部分まで行き壁から、50cmのところでストップし、そこから90°の回転をし、そこをスタート位置とする。
      2. ルートトレース状態(モード):
        あらかじめ、決められたルート(競技場の枠より50cmの所をいシュウするようなルート)を進みつつ、超音波センサとタッチセンサでポストを探す。
        超音波に反応があった場合はその時点でのロータリーエンコーダの値を保存し、90°回転し一度ロータリーエンコーダをリセットする。そしてポスト接近モードへ移行する。
        タッチセンサに反応があった場合もその時点でのロータリーエンコーダの値を保存し、ポスト獲得モードへ移行する。

      3. ポスト接近状態(モード):
        真っ直ぐ進み、ポストがあるかを前の超音波センサで確認しながらポストへ近づいていく。この状態でも周りにポストがないかを検出。ポストへ10cmの距離となったら減速を開始し強くぶつからないようにしてポストへ衝突する。その時押されるタッチセンサでぶつかったものの存在を確認、獲得していないポストと判断後、ロータリーエンコーダの値を保存、リセット、そしてポスト獲得状態へ移行する。もし障害物(壁、または獲得済みのポスト)と判断したら回避状態へ移行する。ちなみのこの判断は1回目の競技中に作成しているマップ(ポストの位置を示すデータ)を用いる。
      4. ポスト獲得状態(モード):
        ポストの中心を検出し、ポストを周回する。その時ポスト側についている赤外線センサでセンサでスイッチを探し、スイッチを押下する。スイッチ発見時にロータリーエンコーダの値を保存し、発見した赤外線センサでスイッチの消灯を確認するまでスイッチを押下しする。確認後、その位置で復帰状態(モード)へ移行する。
      5. 復帰状態(モード):
        接近、獲得状態へ移行した時の位置のデータと現在位置と接近、獲得状態中のポストの検出データから復帰位置を割り出し、復帰ルートを作り出す。
      6. 障害物回避状態(モード):
        壁かポストかで回避方法は異なる。よって壁かポストかのデータ、どのようにして回避状態に入ったか(ルートトレース中か、接近モードからか)などの情報から回避方法を選択し実行し元の状態へ戻る。
      7. 自己位置補正状態(モード)
        自己位置補正位置、または自己位置補正要求がきたら自己位置補正を行う。自己位置補正位置とはルートの角に当たる部分でロータリーエンコーダの値と実際の位置がどれくらい違いを調整し、その後ロータリーエンコーダの値をリセットする。(調整方法は未定)自己位置補正要求とは滑ったなどを感知した場合にその滑った量から補正をかける。(自己位置補正要求はうまく速度を調整すればあまり使われないと思う。まだはっきりとしたことは決まっていない。また問題としてロータリエンコーダの値と実際が違う原因を調べなければならない。)
      8. マップトレース状態(モード):2回目の競技で使われ、ルートトレースに変わる状態でマップトレースでは"マップ"によりルートが決められそのルートを走向する。マップとは1回目の競技で得たポスト情報を基にその最短ルートを作成したものである。マップの通り、いけばポストがあるところまで行くと思うが確認のため超音波センサによりポストの存在を確認する。そしてスイッチの赤外光を検出後、ポスト獲得状態(スイッチ押下確認だけ)へ移行しスイッチを押したらまたこの状態になる。また自己位置補正にも必要に応じて遷移する。

    2. リアルタイムモニタ

    3. MIRS用に開発されたMIRX68kを使用する。

    4. タスク構成/機能

    5. 図7.タスク間のデータの流れ
      (ポストスクリプト形式)

      どのタスクが何処へデータを書き込むか、何処からデータを読み出すかを表したもの


      (ポストスクリプト形式)

      図8.タスク呼び出し図
      どの高レベルタスクからどのタスクを起動するかを矢印で示した。


      1. 低レベルタスク:高レベルタスクからハードウェアのコントロールのために起動される。直接にセンサなどのハードウェアを操作するタスク。
        • task00:マンマシンインターフェースタスク
          BBに欠かれているセンサ情報やシステムの状態を番号化しLEDで表示する。またDIPスイッチの状態を読み込み、BBに書き込む。この状態はタイマにより設定時間ごとに起動される。
        • task01:超音波センサタスク
          超音波センサを動作させ、その情報(重要なのはポストの方向、あまり信用できないかもしれないがポストとの距離の情報も含む)をBBに書き込む。このタスクは常時測定を行う。超音波を発信した後、タスクは開放され、受信信号は割り込み信号となりそれにより再度起動され情報を書き込む。またオーバーフローしたときにも割り込みを入れその情報を伝える。
        • task02:赤外線センサタスク
          赤外線の受信後、BBにその情報(ついているのか、消えたのか)を書き込む。また障害物かの判断時に送信信号をおくり、受信後、その情報をBBに書き込む。このタスクは障害物にぶつかったとき(障害物がなんであるかを判断するため)、スイッチを押したかどうかの判断時に起動される。(赤外線センサでも受信だけと送受信するものがあるため、分解される可能性がある。)
        • task03:タッチセンサタスク
          タッチセンサの割り込みが入る度に、起動されセンサの状態を情報としてBBに書き込む。
        • task04:PWM制御タスク
          BBに書き込まれている左右のモータへのPWMデータを読み込み、PWM回路に情報を渡す。 このタスクはモータへの回転指令が変わる毎に起動される。         
        • task05:自己位置検出タスク
          ロータリーエンコーダの値から、直進距離、回転量、姿勢角などの情報をBBに書き込む。このタスクは位置の検出の必要が出たとき(現在の位置とプログラム上の位置が大きくずれているとき:障害物にぶつかったとき、タイヤが空回りしたとき,タイヤが滑ったときなど)に起動される。
      2. 高レベルタスク:mainタスクから起動され、ある決められた状態の動作を実現するよう低レベルタスクに指令するタスク。また低レベルタスクの状態を読み込み、処理するタスク
        • task06:初期化タスク
          MIRSをルートの最初の位置へ移動させるタスク。赤外線とタッチセンサにより壁を判断、超音波センサより、壁との距離を測り、最初の位置へ移動する。
        • task07:軌道トレースタスク
          あらかじめ決められたルートを進むためのタスク。超音波センサにより壁との距離を一定に保つ。ポストの発見による割り込みがきたら、ロータリーエンコーダの値の保存、リセットをする。
        • task08:ポスト接近復帰タスク
          方向転換をし、ルート上からポスト、又はポスト獲得護、ルート上へMIRSを進ませるタスク。直進時も超音波センサの割り込みがないか、あったらその記録をBBにする。ポスト接触後、ポストか、壁かの判断、ポストだったら中心を取り、ロータリーエンコーダの値をBBに書き込み、リセットする。
        • task09:ポスト獲得タスク
          ポストを回転し、スイッチを見つけ、それを押下するタスク。ポストのスイッチの突起より15mmくらい(その場回転でスイッチを押せるくらい)のところを反時計方向に走行する。スイッチ発見後、ロータリーエンコーダの値をBBに書き込み、リセットする。
        • task10:回避タスク
          ポスト以外のものにぶつかった時に行動計画タスクにより起動されるタスク。ぶつかったものにより回避方法は異なる。回避方法は誤差が出ないようにしながら最短距離をとるように決める。
        • task11:補正タスク
          位置補正要求、または補正位置にきたときに行動計画タスクにより起動されるタスク。補正位置、その方法は自己位置補正モードに沿って行う。
        • task12:センサ試験タスク
          センサ試験、また規定走向試験をするタスク。試験内容は後述の試験の説明に記述するが簡単にはセンサ試験ではセンサが動いているか、超音波センサなら方向と距離、赤外線センサならポストスイッチを感知できているか、また壁かポストかの判断は出来ているか、規定走向試験ではちゃんとポストの周りを回れるか、どの回転半径でどのくらいロータリーエンコーダの値と誤差が出るか、スピードはどうか、直進時の誤差はどれくらいかを試験する。
        • task13:行動試験タスク
          競技を行うために作られたタスク、特に高レベルタスクの試験をするタスク。試験内容は後述の試験の説明に記述するがそれぞれのタスクでしなければならない行動をセンサからの信号ではなく、ソフトウェアからのダミー信号によって行う予定.信号を時間で分けてだし試験する.
      3. メインタスク
        • task14:行動設計タスク
          MIRS9902のマシンの行動を計画、管理するタスク。このタスクは割込み要求により高レベルタスクへの振り分けをする。

          ※書きなおす前の基本設計書にあったパフォーマンスタスクはまだ具体的なことを決めれないため詳細設計書には載せていない。しかしなくなったわけではない.MIRSを実際に動かしてみてその挙動から人をひきつけるような面白い行動をさせるようにするつもりである.

    6. マンマシンインターフェイス
    7. マンマシンインタフェースとして以下の機能を具備すること。
        表示機能
        各センサの状態、自己位置、姿勢角および動作状態の表示。この表示は競技モードにおいても可能とする。ハートビート表示(プログラムが正常に動作していることを示すために、緑色LEDを点滅させる)。
        • センサ試験モード(1):下2桁が超音波センサの測定値、上2桁は赤外線センサのデータ
        • センサ試験モード(2):下2桁が超音波センサの測定値、上2桁はタッチセンサのデータ
        • センサ試験モード(3):上2桁が回転方向、下2桁が回転数を表示
        • 競技モード:押しボタンスイッチにより、各センサの値を順に切換え表示する。最下位の桁を選択中のセンサの種類の表示に使う。
        動作モード設定機能
        DIPスイッチによるセンサ試験モード1,2、試験走行モード、競技モード1(一回目競技用)および競技モード2(2回目競技用)の設定。
        • DIPSW=0(xx00):競技モード1
        • DIPSW=1(xx01):競技モード2
        • DIPSW=2(xx10):センサ試験モード(1)(2)
        • DIPSW=3(x011):センサ試験モード(3)
        • DIPSW=7(x111):試験走行モード
        スタート機能
        押しボタンスイッチにより動作開始の指示。

    8. 試験機能
    9. 下記の試験機能を有する。
      • 各センサの状態を表示する機能。
      • 左右車輪の回転数と回転方向を独立に試験する機能。
      • 直進走行したときに誤差を検出する機能
      • ポストの近くを回れる機能。

  10. システム試験
    1. システム試験概要
    2. システム試験はシステムの組み立てが完了した段階で、基本設計書の内容に促しているかどうかを試験する。システム試験を実施する際には、各サブシステムで規定されたサブシステム試験に合格していなければならない。試験は以下の項目について行われる。

    3. 試験内容
    4. 試験内容は次の仕様書による。 MIRS9902システム試験仕様書