名称 MIRS1601 ソフトウェア開発完了報告書
番号 MIRS1601-SOFT-0002a

最終更新日:2017.2.8

版数 最終更新日 作成 承認 改訂記事
A01 2017.2.8 久保寺 智哉 初版

目次

  1. はじめに
  2. 開発したプログラムファイル一覧
  3. 製作内容・完成度の評価
  4. 製作したプログラムへのリンク
  5. 総括

  1. はじめに

    本ドキュメントは、MIRS1601のソフトウェア開発が完了したことを記すドキュメントである。

  2. 開発したプログラムファイル一覧

    MIRS1601が作成したプログラムファイルの一覧を以下に記す。

    Arduino側
    ファイル名 概要
    cpu.ino cpuとの通信を行うプログラム
    distance.ino 標準ソフトウェアをオムニホイールに対応する形で改良したプログラム
    encorder.ino 標準ソフトウェアをオムニホイールに対応する形で改良したプログラム
    mirs1601_main.ino 全体の動きを統括
    motor.ino 標準ソフトウェアをオムニホイールに対応する形で改良したプログラム
    omuni_ctrl.ino オムニホイールで走行する為のプログラム
    sequence.ino 現場急行を行うプログラム
    test.ino モジュールのテストを行うプログラム
    define.h ピン配置・include・パラメーターの設定を行う
    CPU側プログラム
    ディレクトリ名 構成ファイル 概要
    ルート
    Makefile プログラムコンパイル用ファイル pilot、test、mirs_stopの生成をする
    comm.c 標準ソフトウェアに準拠
    cv_ColorExtraction.c 2015年度スタッフドキュメント、MIRS2015赤色風船認識プログラムを使用
    get_image_target.c
    image_circle.c
    test_iamge_circle.c
    image_circle.h
    mirs_stop.c Arduino Dueへプログラム停止命令を送信するプログラム
    pilot.c CPU側の動作の記述
    serial_cpu.c CPU-Arduino間の通信制御プログラム
    test.c 不要となったテストモジュールを消し、新たにtest_image_circleを追加
    test_comm.c 標準ソフトウェアに準拠
    test_number.c 標準ソフトウェアに準拠
    comm.h 標準ソフトウェアに準拠
    hardware.h デモ競技会プログラムから修正なし
    number.h number_detect関数の変更に伴う外部定義の変更
    serial_cpu.h serial_cpuモジュールに必要な定数と外部定義を記述
    img
    *.jpg 数字認識のプログラムでキャプチャした画像の保存場所
    number
    binarization.c 標準ソフトウェアに準拠
    define.h 標準ソフトウェアに準拠
    extern.h 標準ソフトウェアに準拠
    get_img.c 標準ソフトウェアに準拠
    labelling.c 標準ソフトウェアに準拠
    number_detect.c number_detect関数の引数を増やし、カメラ番号の選択をできるようにした
    number_search.c 標準ソフトウェアに準拠
    number_test.c 標準ソフトウェアに準拠
    triming.c 標準ソフトウェアに準拠
    Makefile 数字認識の単体試験を行うためのMakefile
  3. 製作内容・完成度の評価

    以下に示すモジュールのうち、項目5がCPU側で、それ以外はArduino側に実装したモジュールである。

    1. omuni_ctrlモジュール(諏訪、久保寺)

    2. 内容:超音波センサを用いて目標とする壁までの距離を測定し、エンコーダを用いて走行距離を測定、それぞれの差から調整してオムニホイールにて直進走行を行う。実際の競技では、最初の直進走行から数字認識の前までの走行に使用した。

      テスト結果:左右の壁の距離を測り、ぶつかることなく目標とした正面の壁まで直進できた。

      問題点:走行中に機体の向きが変わってしまい、壁際まで進んだ後、左右へ進むときに壁にぶつかってしまった。

    3. omuni_dist_ctrlモジュール(諏訪、久保寺)

    4. 内容:エンコーダを用いて走行距離を計測し、オムニホイールにて直進走行を行う。実際の競技では、数字認識後に展示室に入る時の走行に使用した。

      テスト結果:指定した距離だけ走行することができ、過不足なく目標位置まで走行できた。

      問題点:こちらもゲイン調整が不十分であったため走行中に機体の向きが変わってしまい、次の走行への影響が出た。

    5. ussモジュール(打味)

    6. 内容:Arduinoのライブラリとして実装し、Arduinoに接続された超音波センサで壁までの距離を測る。

      テスト結果:5~150[cm]の間で、誤差5%以内に収まっていたことを確認した。

      問題点:特になし。

    7. cpuモジュール(打味)

    8. 内容:Arduino-CPU間のデータ送受信用のモジュールで、Arduino側で用意されているSerial関数系によって通信を制御する。

      テスト結果:通信できることを送信、受信ともに確認した。

      問題点:特になし。

    9. serial_cpuモジュール(打味)

    10. 内容:Arduino-CPU間のデータ送受信用のモジュールで、termiosによって通信を制御する。

      テスト結果:通信できることを送信、受信ともに確認した。

      問題点:特にないが、USBポートを1つに決めずにテストを行った時に、CPU側でデバイスファイルを毎回選択する羽目になった。

    11. 現場急行プログラム(sequenceモジュール)(全員)

    12. 内容:スタートから数字ボードまで走行し、数字認識後、フィールドに入る。

      テスト結果:壁からの距離を一定にするように走行した。

      問題点:Arduinoで制御する関係上、1ループの秒数が正確に測定できず、プログラム内で機体の速度を割り出すことができなかった。そのため、左右のホイールの走行距離から機体の直進制御をするようにしたが、機体が重く、低いPWMではホイールがうまく回転しない等の問題によって、うまくゲイン調整がしきれなかった。

  4. 製作したプログラムへのリンク
  5. MIRS1601が作成したプログラムのリンクを以下に示す。
    なお、Arduino Dueに実装したプログラムは、ファイルへのリンクではなくGitHubへのリンクである。
    CPUボード側プログラム(mirs1601_programs.tar.gz)
    Arduino側プログラム(GitHubへのリンク)

  6. 総括

    プログラム自体は早い時期から出来つつあったが、機体完成、回路完成が共に大きく遅れたため、十分なテストが行えなかった。また、機体速度が正確に出ないという問題に気づくのもかなり遅い時期で、競技会まで時間があまりない中、大幅な変更をすることを余儀なくされた。
    全体として、不十分な箇所が多く、もう少し確実にバグ等をつぶしていければよかったと思う。


MIRS1601ドキュメント管理台帳