MIRS1603 管理台帳へ戻る
名称 MIRS1603 ソフトウェア開発完了報告書
番号 MIRS1603-SOFT-0002
版数 最終更新日 作成 承認 改訂記事
A01 2017.02.17 橋本宗汰郎 遠藤大河 石田智士 初版
A02 2017.02.21 橋本宗汰郎 遠藤大河 石田智士 第二版
事前チェックで指摘された点を修正
A03 2017.02.24 橋本宗汰郎 遠藤大河 石田智士 承認 第三版
レビューで指摘された点を修正

ドキュメント内目次

1. 目的
2. 製作内容・完成度の評価
3. 使用した競技会プログラム
4. 総括
5. リンク


1. 目的

本ドキュメントはMIRS1603が開発したオリジナルMIRSにおけるソフトウエアの製作内容と試験結果を示すものである。

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

2.1 ファイル構成

MIRS1603のプログラムファイルの構成を示す。
Table1 ファイル構成 serial_ctrl.c
ディレクトリ名 構成ファイル 概要
ルート
Makefile プログラムをコンパイルするためのファイル./pirotで全体のプログラムを実行する。
pilot.c 標準ソフトウェアにシリアル通信用スレッドのOpen、Close、mirsac_*.cの追加を行ったもの。
mirsak_rush.c 現場急行、数字認識のためのモジュール
mirsak_patrol.c 巡回のためのモジュール
mirsak_chase.c 怪盗追跡、確保のためのモジュール
device.c 標準ソフトウェアに準拠した。
direction.c エンコーダを用いないで正対補正するためのモジュール。
Arudinoとのシリアルを行うために新規で作成した。
io.c 標準ソフトウェアに準拠した。
comm.c 標準ソフトウェアに準拠した。
motor.c 標準ソフトウェアに準拠した。
motor_stop.c 標準ソフトウェアに準拠した。
run_ctrl.c 直進・回転を行うためのモジュール。
state.c 走行制御に必要な機体の状態を算出するためのモジュール。
test.c 単体機能を複数用いたテストを行う場合に用いるmain関数が記してある。
test_dir_num.c 標準ソフトウェアに準拠した。
test_direction.c 標準ソフトウェアに準拠した。
test_state.c stateのスレッドを作成し、stateの値を取得・表示するmain関数が記してある。
test_serial_ctrl.c serial_ctrlのスレッドを作成し、受け取った値を表示するmain関数が記してある。
test_io.c 標準ソフトウェアに準拠した。
tes_motor.c 標準ソフトウェアに準拠した。
tes_number.c 標準ソフトウェアに準拠した。
test_pwm.c 標準ソフトウェアに準拠した。
test_run_ctrl.c run_ctrl.cを使用して直進、回転動作を行うmain関数が記してある。
test_run_ctrl.c 標準ソフトウェアに準拠した。
device.h 標準ソフトウェアに準拠した。
direction.h 標準ソフトウェアに準拠した。
distance.h 標準ソフトウェアに準拠した。
hardware.h 標準ソフトウェアに準拠した。
io.h 標準ソフトウェアに準拠した。
mirsak.h 標準ソフトウェアに準拠した。
motor.h 標準ソフトウェアに準拠した。
number.h 標準ソフトウェアに準拠した。
run_ctrl.h 標準ソフトウェアに準拠した。
comm.h 標準ソフトウェアに準拠した。
test.h 標準ソフトウェアに準拠した。
state.h 標準ソフトウェアに準拠した。
serial_ctrl.h 標準ソフトウェアに準拠した。
stop_motor 標準ソフトウェアに準拠した。
go_mirs 競技用のシーケンスを実行するための実行ファイル。
test 標準ソフトウェアに準拠した。
img
*.jpg 数字認識のプログラムでキャプチャした画像の保存場所
number
binarization.c 標準ソフトウェアに準拠した。
define.h 標準ソフトウェアに準拠した。
extern.h 標準ソフトウェアに準拠した。
get_img.c 標準ソフトウェアに準拠した。
labelling.c 標準ソフトウェアに準拠した。
number_detect.c 標準ソフトウェアに準拠した。
number_search.c 標準ソフトウェアに準拠した。
number_test.c 標準ソフトウェアに準拠した。
triming.c 標準ソフトウェアに準拠した。
Makefile 数字認識の単体試験を行うためのMakefile。

2.2 製作内容

実際に作成プログラムの説明を以下に示す。なお、1,2,3,4はArduino用、5,6,7,8,9,10,11はMIRS用に作成したプログラムである。

  1. 電子コンパス(compass)


    担当 :石田
    内容 :x-y座標の値をキャリブレーションして補正する。角度[deg]に値を変換する。
    テスト結果 :値を補正することができた。角度を表示することができた。
    問題点 :電子コンパスを使用する場所(D科演習室、体育館など)を変える度にキャリブレーションを行い、コードを書き換えなければならない。

  2. 超音波センサ(uss)


    担当 :石田
    内容 :超音波センサの値を距離に変換する。
    テスト結果 :壁との距離を表示することができた。
    問題点 :特になし。

  3. 赤外線センサ(infrared)


    担当 :石田
    内容 :閾値を指定し、赤外線センサからのアナログ値をデジタル値に変換する。
    テスト結果 :ボールを近づけた赤外線センサの値が1、その他の値が0になった。
    問題点 :特になし。

  4. デバイス制御(device_ctrl)


    担当 :石田
    内容 :CPU、Arduino間のシリアル通信のArduino側の処理を行う。Arduino側のセンサを管理する。
    テスト結果 :Arduino側のセンサの値を10byteでCPU側に送信することができた。
    問題点 :特になし。

  5. シリアル通信(serial_ctrl)


    担当 :橋本
    内容 :CPU、Arduino間のシリアル通信のCPU側の処理を行う。
    テスト結果 :Arduino側のセンサの値を10byteで受け取ることができた。
    問題点 :特になし。

  6. 状態認識(state)


    担当 :橋本
    内容 :左右の超音波センサまたは片方の超音波センサと電子コンパスの値を用いて機体の正面を基準にした角度と道の中心からのずれを算出する。
    テスト結果 :道の中心からのずれを正しく算出した。左右の超音波センサを用いた算出方法において、正面を中心とした角度は正負の割り当てが正しく行なわれなかった。この問題は最終的には解決したが、 角度のずれが不要となったため未実装となった。片方の超音波センサと電子コンパスを用いた算出方法については問題はなかった。
    問題点 :競技会直前に片方の超音波センサと電子コンパスを用いた算出方法は動作不良を起こした。原因は不明。

  7. 走行制御(run_ctrl)


    担当 :石田、遠藤、橋本
    内容 :stateで算出した機体の状態と前方の超音波センサの値を用いて直進・回転制御を行う。
    テスト結果 :直進制御は道の中心からのずれと機体の傾きを使用したPD制御を行なう予定であったがstateの不具合により中心からのずれのみを使用したPD制御に変更した。指定した前方の壁との距離まで直進し、停止した。 回転制御は指定した角度回転した。
    問題点 :直進制御は左右どちらかに壁がないと直進できない。

  8. 正対補正(direction)


    担当 :遠藤
    内容 :前方の2つの超音波センサを用いて、指定した距離の壁に対して正対補正する。
    テスト結果 :指定距離での正対補正ができることを確認した。
    問題点 :機体と壁との角度が大きくなると正対補正ができない

  9. 現場急行モジュール(mirsak_rush)


    担当 :石田
    内容 :スタート地点から展示室の入口をシーケンス制御する。
    テスト結果 :直進走行→正対補正→回転→正対補正→数字認識の順に状態移行ができた。
    問題点:角に進入する際片方の壁がなくなるため、左右の超音波センサを使用した直進制御がその付近でできない。競技会では正対補正を角付近で使用することで直進を行った。

  10. 巡回モジュール(mirsak_patrol)


    担当 :遠藤
    内容 :直進、回転を組み合わせて巡回を行う。
    テスト結果 :回転動作から直進動作の状態移行は確認できた。
    問題点 :両側の壁がなくなる位置で正しく直進することができない。

  11. 怪盗機確保モジュール(mirsak_chase)


    担当 :石田
    内容 :怪盗機を発見した際に直進する。見失った際に復帰動作を行なう。
    テスト結果 :プログラムが未完成のためテストを行うことができなかった。

2.3 全体の完成度の評価

現場急行のプログラムでは、壁にぶつかることなく再現性の高い走行を実現することができた。 その一方、巡回、怪盗機確保のプログラムが未完成に終わった。片側の超音波センサと電子コンパスを用いた直進制御が競技会直前で動作不良を起こしたため 巡回経路の両側に壁のない場所を上手く走行することができなかった。怪盗機確保プログラムは時間が足りず未完成となった。


3.使用したプログラム

実際に使用したプログラムを以下に示す。
MIRS1603_Ver1.4
MIRS1603_Arudino_Ver2.1


4.総括

ソフト開発に携わる時間はとても短い時間であった。また、エンコーダを使わないコンセプトなど厳しい状況であった。 結果は巡回動作不安定、確保動作未テストと厳しい結果であったが現場急行のすぐれた直進制御、回転の正確さをアピールできてよかった。


5.リンク

MIRS1603 システム基本設計書
MIRS1603 ソフトウェア詳細設計書