名称 MIRS1403 ソフトウェア開発報告書
番号 MIRS1403-SOFT-0012

最終更新日:2015.2.23

版数 最終更新日 作成 承認 改訂記事
A01 2015.2.13 堀部、野澤 初版
A02 2015.2.20 堀部、野澤 ・細かな誤字の修正を行った。
・不適切或いはわかりにくい表現の修正を行った。
・試験仕様及び結果の加筆修正を行った。
・完成度評価の評価基準をプログラムの完成度からモジュール作成作業の進行度に変更した。
・ファイル構成の表を追加した。
A03 2015.2.20 野澤 牛丸教員 ・巡回動作モジュールの試験仕様及び結果を追加した。
・画像処理モジュールへのリンクを修正した。

目次

  1. はじめに
  2. 製作内容・完成度の評価
  3. 使用した競技会プログラム
  4. 統括

  1. はじめに

    本ドキュメントは、MIRS1403のソフトウェア開発進度を報告するドキュメントである。

  2. 製作内容・完成度の評価

    1. ファイル構成

    2. MIRS1403のプログラムのファイル構成を下表に示す。また、標準プログラムを用いたものは省略する。
      ファイル構成
      ディレクトリ ソースファイル名
      ルートディレクトリ g_mirsak
      Run 走行制御は標準プログラムであるため詳細はMG3Sの管理台帳を参考
      また、超音波センサ、タッチセンサ、モータ管理プログラムもこのディレクトリに含まれている。
      Chase Chase
      Sequence Sequence
      Map GetPattern
      GetTarget2
      MapSample
      PatternSkip
      PositionThread
      Image cv_ColorExtraction
      Image
      labelling
      Number 数字認識は標準プログラムであるため詳細はMG3Sの管理台帳を参考
      Server データ送受信は標準プログラムであるため詳細はMG3Sの管理台帳を参考
    3. 機能統合モジュール

      担当: 野澤、堀部

      1. 製作内容

        設計と同様の仕様の機能を実装した。
        ただし、プログラムの製作期間の都合上標準プログラムのデバイスモジュールを使用した。
        また、設計書に記載した機能の他に音楽再生システムを実装した。
        ただし、音楽再生システムの動作が不安定なこと、そして、マルチスレッドで動作するシステムを構築していないため音楽再生中に他の動作が行えないことから競技会時にはシステムを無効化した。


        MIRS1403の機能統合モジュールの詳細設計書のリンクを以下に示す。
        MIRS1403 機能統合モジュール

      2. 試験報告

        試験仕様:

        ・デバイスモジュール
        各デバイスがオープン及びクローズ可能かを確認する。
        試験用プログラムについては、標準プログラムのデバイスモジュールを使用していることから、その試験用プログラムを流用した。
        ・統合試験
        以下に示す図の通りに機体が動作するかを確認する。

        試験結果:

        ・デバイスモジュール
        モータ、エンコーダ、超音波センサ、IOデバイスがオープン及びクローズ可能であることを確認できた。
        ・統合試験
        時間の都合上、試験は行わなかった。

      3. 完成度評価

        完成度評価: 5%

        評価理由:
        設計と同様の使用の機能の実装ができたが、統合試験を行うことができなかった為。
        また、音楽再生システムの追加実装が完了しなかったため減点した。

    4. 走行制御モジュール

      担当: 野澤

      1. 製作内容

        プログラムの製作が間に合わなかったため標準プログラムの走行制御モジュールをゲイン調整したものを使用した。
        また、不感帯の補正がモータ制御ボードの仕様上ほぼ無意味であるので補正を排除した。


        標準プログラムの走行制御モジュールについては、以下を参照。
        MG3S 標準プログラム 設計仕様書

      2. 試験報告

        試験仕様:
        機体が指定した距離分直進及び回転することを確認する。
        まず、直進走行を行う。左右にずれが生じる場合は速度調整ゲイン、走行制御ゲインの順番に調整を行い、これを左右のずれがほとんど無くなるまで繰り返す。
        回転走行についても同様にした。
        また、標準プログラムのテストプログラムを用いる。

        試験結果:
        速度調整比例ゲインを1.0から2.0に変更したところ、直進、回転走行共にずれが無くなったことを確認できた。
        また、この試験は牛丸先生の指導のもとエレキ担当者が行った。

      3. 完成度評価

        完成度評価: 0%

        評価理由:
        詳細設計書通りのプログラムの作成が一切進まなかった為。

    5. 怪盗確保モジュール

      担当: 野澤 ⇒ 堀部
      本来の担当は野澤であったが、時間の都合により担当を堀部に移行した。

      1. 製作内容

        画像処理プログラムを呼び出して発見した場合その方向に走行するプログラム。十字路の中心で旋回と画像処理を繰り返し、回答を発見出来次第進行する。 また、サーバから部屋番号が送られてきた場合に部屋の前まで移動する動作も含まれる。
        MIRS1403の怪盗確保プログラムの詳細リンクを以下に示す。
        MIRS1403 怪盗確保モジュール


        構成するプログラムソース(以下のファイルはChaseディレクトリ内のファイルとする)
        chase.c

      2. 試験報告

        試験仕様:
        テストプログラムよりこの関数を呼び出し、仕様通りの動作をしたならば成功。
        試験結果:
        仕様通りの動作が確認できた。

      3. 完成度評価

        完成度評価: 60%

        評価理由:
        動作のうち旋回を行い画像認識を行う処理は問題なかったが、時間がかかりサーバからデータを受信するのに問題が発生したため評価を下げる。 サーバからのデータ受信を考えなければ動作に問題はなかったため、本番で活用することができなかったことが少々心残りである。

    6. 巡回動作モジュール

      担当: 堀部、新谷
      本来の担当は堀部であったが、非常用に地図情報管理モジュールに依存しない場合の巡回動作機能を新谷が実装した。
      尚、以下に記すモジュールの内容は、本来の巡回動作モジュールである。

      1. 製作内容

        競技開始から宝を1箇所確認した後、競技場中心まで移動するシーケンス動作を作成した。標準プログラムの正対補正を何度も繰り返しながら走行していくプログラムで、中心まで移動することは可能だったため十分ではあった。しかし、機体に搭載した風船を割る機構が壁に引っかかってしまい、走行できなくなるケースがあった。


        MIRS1403の巡回動作プログラムの詳細リンクを以下に示す。
        MIRS1403 巡回動作プログラム

      2. 試験報告

        試験仕様:
        MIRS1403 巡回動作プログラム
        を参照。
        試験結果:
        仕様どおりの動作はできた。しかし、壁に接触し引っかかってしまうことがあった。

      3. 完成度評価

        完成度評価: 80%

        評価理由:
        巡回動作自体には問題なかったが、リスタートや壁に当たってしまった際の処理が不十分だったため減点。

    7. 地図情報管理モジュール

      担当: 堀部

      1. 製作内容

        本来なら左右のロータリエンコーダの値から走行距離を算出し、自己位置の把握をするプログラムだった。しかし、他モジュールに時間を割いたため、十分なプログラムとはならなかった。競技会ではこのプログラムはほぼ用いていない。個人的にはこのプログラムを最も活用したかった。


        MIRS1403の地図情報管理プログラムの詳細リンクを以下に示す。
        MIRS1403 地図情報管理プログラム

      2. 試験報告

        試験仕様:
        試験仕様は詳細リンクに記載してある。
        試験結果:
        座標からオブジェクトの種類の判断および経路算出は可能だった。
        しかしエンコーダ値から自己位置を算出するプログラムにバグがあったが、修正する時間がなかったため修正ができなかった。

      3. 完成度評価

        完成度評価: 30%

        評価理由:
        十分な機能が実装できなかったため。マップデータのインポートはできたが、実用には遠く及ばなかったため、後悔が残る結果となってしまった。

    8. 画像処理モジュール

      担当: 野澤 ⇒ 堀部
      本来の担当は野澤であったが、時間の都合により担当を堀部に移行した。

      1. 製作内容

        カメラにより取得した画像より、風船の色を検出トリミングするプログラムを作成した。このプログラムでは風船の大きさと位置からおおよその距離と角度を算出できたため、出来はそれなりだと思う。ただし、本番直前にMIRS実機で画像処理プログラムを試した際に、アボードしてしまいかなり焦った。
        MIRS1403の画像処理モジュールの詳細リンクを以下に示す。
        MIRS1403 画像処理モジュール

      2. 試験報告

        試験仕様:
        テストプログラムより、Color_detect(風船認識)及びnumber_detect(数字認識)を実行する。
        Color_detectなら風船の有無と距離と角度が、number_detectなら認識した数字が出力されれば合格とする。数字は認識できない場合-1が返ってくる。

        試験結果:
        風船認識、数字認識共に認識できたため問題なし。

      3. 完成度評価

        完成度評価: 90%

        評価理由:
        基本的動作に問題はない。しかし、色を識別するHSV値や検出方法、数字の大きさに対する対応などにまだ改良の余地があると判断したため減点。

    9. 超音波センサ管理モジュール

      担当: 野澤

      1. 製作内容

        過失によりプログラムが消失したため、標準プログラムの超音波センサモジュールを改変することで、同様の機能を有する関数を実装した。
        具体的な改変点は、超音波センサモジュールの関数uss_get(int uss_num)の引数の最大値を2から4へ変更した。
        また、標準の超音波センサの測定最小距離の補正値を20から0に変更し、センサの系統的測定誤差値を全て-1に設定した。

        構成するプログラムソース(以下のファイルはRunディレクトリ内とする)
        uss.c

        標準プログラムの超音波センサモジュールについては、以下を参照。
        MG3S 標準プログラム 設計仕様書


        MIRS1403の超音波センサ管理モジュールの詳細リンクを以下に示す。
        MIRS1403 超音波センサ管理モジュール

      2. 試験報告

        超音波センサボード実装時に標準プログラムを用いた同様の試験を行った為、試験を省略する。

        標準プログラムの超音波センサボード詳細設計書については、以下を参照。
        MIRS1403 超音波センサボード詳細設計書
        試験結果:
        以下を参照。
        MIRS1403 超音波センサボード試験結果

      3. 完成度評価

        完成度評価: 0%

        評価理由:
        詳細設計書通りのプログラムの作成が完了しなかった為。
        紛失前のプログラムについてはデバッグはほぼできなかったため、一切の価値がないと判断した。

    10. タッチセンサ管理モジュール

      担当: 野澤

      1. 製作内容

        過失によりプログラムが消失したため、標準プログラムのIOモジュールを流用することで、同様の機能を有する関数を実装した。
        使用したIOポート番号についてはMG3S 標準プログラムを用いたい単体テスト
        の図中の番号との対応を以下に示す。
        機体前方中心タッチセンサ : 1
        機体前方左タッチセンサ : 2
        機体前方右タッチセンサ : 3
        機体後方中心タッチセンサ : 4
        機体後方左タッチセンサ : 5
        機体後方右タッチセンサ : 6

        構成するプログラムソース(以下のファイルはRunディレクトリ内とする)
        io.c

        標準プログラムのIOモジュールについては、以下を参照。
        MG3S 標準プログラム 設計仕様書

        MIRS1403のタッチセンサ管理モジュールの詳細リンクを以下に示す。
        MIRS1403 タッチセンサ管理モジュール

      2. 試験報告

        試験仕様:
        機能を実装する範囲において標準プログラムのIOモジュールの試験用プログラムを用いた試験を行った。
        ここで、範囲とは、MG3S 標準プログラムを用いたい単体テストの図の"IO1 〜 IO6"のことである。
        標準プログラムの試験用プログラムについては、以下を参照。
        MG3S 標準プログラムを用いたい単体テスト
        試験結果:
        機能を実装する範囲におけるIOポートが正常に動作することを確認した。

      3. 完成度評価

        完成度評価: 0%

        評価理由:
        詳細設計書通りのプログラムの作成が完了しなかった為。
        紛失前のプログラムについてはデバッグはほぼできなかったため、一切の価値がないと判断した。

    11. モータ管理モジュール

      担当: 野澤

      1. 製作内容

        過失によりプログラムが消失したため、標準プログラムのモータモジュールを改変することで、同様の機能を有する関数を実装した。
        また、モータ制御チェックシートの結果に基づき、出力PWM値の最大値を正負共に110とした。なお、この変更によりモータの最大回転速度が低下するが、競技の仕様上一切問題ない。

        構成するプログラムソース(以下のファイルはRunディレクトリ内とする)
        motor.c

        標準プログラムのモータモジュールについては、以下を参照。
        MG3S 標準プログラム 設計仕様書

        MIRS1403のモータ管理モジュールの詳細リンクを以下に示す。
        MIRS1403 モータ管理モジュール

      2. 試験報告

        試験仕様:
        モータ制御ボード実装時に標準プログラムを用いた同様の試験を行った為、試験を省略する。

        標準プログラムのモータ制御ボード詳細設計書については、以下を参照。
        MIRS1403 モータ制御ボード詳細設計書
        試験結果:
        以下を参照。
        MIRS1403 モータ制御ボード試験結果

      3. 完成度評価

        完成度評価: 0%

        評価理由:
        詳細設計書通りのプログラムが消失したものの、標準プログラムを流用したことにより、必要な機能はすべて実装できた為。

    12. データ送受信プログラム

      データ送受信プログラムは標準プログラムとして用意されたものをそのまま用いたため、作成はしていない。そのため、仕様は標準プログラムのものである。

      MIRSMG3Dのサーバ情報取得プログラムの詳細リンクを以下に示す。
      MRISMG3D サーバ情報取得プログラム

  3. 使用した競技会プログラム

    以下に競技会で使用したプログラムを添付する。

    MIRS実機環境ではMakefileを用いた統合コンパイルが行えない場合があるので注意。
    演習室の環境では、上記の問題は生じない。

    出来は非常によくないため参考にはならないと思います。
    参考にならないと思います。

    ・競技会時
    MIRS1403Program.zip
    ・軽量版(音楽ファイル未同梱)
    MIRS1403Program_s.zip

  4. 総括

    MIRS1403のソフトウェア開発は当初の計画とはかけ離れた開発状況となってしまった。統合出来たのが競技会直前であったり、実機でのデバッグも不十分な状況で競技会に挑む形となってしまった。プログラムの進捗が芳しくなかったこともあり、デバックに時間が割けなかったことが問題だったと思います。高専在学中ではそれなりに規模の大きいプログラムではあると思うので経験としてよかったと思います。しかし、結果としては非常に心残りです。

▲上へ


MIRS1403 ドキュメント管理台帳へ

沼津工業高等専門学校 電子制御工学科