名称 | MIRS1301 標準機競技用システム開発計画書 |
---|---|
番号 | MIRS1301-PLAN-0003 |
最終更新日:2013.09.30
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
A01 | 2013.09.21 | 高原 一真 | 初版 | |
A02 | 2013.10.07 | 高原 一真 | 青木先生 | 細部の補足を追加 |
本ドキュメントは、8/10に行われる一日体験入学に向けて、
標準機を用いてハーフコースを攻略するための戦略、プログラム設計、開発工程について記したドキュメントである。
確実に動作しゴールすることを基本方針とする。
そのために各センサーの故障を考慮したプログラム設計を行う。
超音波センサは動作に不安があるので、ロータリーエンコーダによる走行制御の精度を上げて白線・タッチセンサーのみで攻略を行う。
予め公開されているコースの情報は積極的に使う。
したがってDBを確認する必要が無いのでWebカメラは使用しない。
機能番号 | 機能名 | 機能概要 | 使用する機能 |
---|---|---|---|
(1) | 直進走行 | ロータリーエンコーダで進行方向をPID制御で補正する。 また目標距離に合わせて走行速度もPID制御で調整する。 | |
(2) | 回転走行 | ロータリーエンコーダにより回転軸のズレをPID制御で補正する。 また目標角度に合わせて機体回転速度もPID制御で補正する。 | |
(3) | 白線補正 | 白線センサーを使用して機体の向きを白線に揃える。 | (2)回転走行 |
(4) | 通路走行 | 白線検知、正面のタッチセンサが反応、目標距離に到達のいずれかで走行終了。 左右のタッチセンサが反応した場合は一旦後退、回転して回避する。 白線検知した場合は白線補正してから終了する。 | (1)直進走行、(2)回転走行、(3)白線補正 |
事前に公開されたコースとプログラムの大まかなフローチャートを以下に示す。
公開されたコースに沿って進むので、大きな条件分岐は存在しない。
ロータリーが回避できるため周回走行は使用しない。
関数名 : run_straight_ts_ws
戻り値 : 無し
引数 : 目標距離[mm]
通路走行プログラムのフローチャートを以下に示す。
関数名 : run_straight
戻り値 : 現在の走行距離[mm]
引数 : 目標距離[mm]
一回の呼び出しにつきモーターへの指令が一回行われるプログラム。
上限速度と目標距離を指定し、短い時間間隔で繰り返し呼ぶことでモーターの制御を行う。
目標距離と現在の走行距離の差を偏差として走行速度をPID制御し、
左右のモーターの回転回数の差を偏差として左右のモーターの速度比をPID制御する。
単純にI制御を行うと積分項が大きくなりすぎるので、
誤差が減少している間は積分項を0にリセットする。
計算の流れを以下に示す。
関数名 : run_rotate
戻り値 : 現在の回転角度[deg]
引数 : 目標角度[deg]
直進走行同様、一回の呼び出しにつきモーターへの指令が一回行われるプログラム。
上限速度と目標距離を指定し、短い時間間隔で繰り返し呼ぶことでモーターの制御を行う。
目標角度と現在の回転角度の差を偏差として回転速度をPID制御し、
左右のモーターの回転回数の和を偏差として左右のモーターの速度比をPID制御する。
単純にI制御を行うと積分項が大きくなりすぎるので、
誤差が減少している間は積分項を0にリセットする。
計算の流れを以下に示す。
関数名 : seach_line
戻り値 : 無し
引数 : 無し
白線補正プログラムのフローチャートを以下に示す。
このプログラムは、白線が機体の下にある状態で呼ばれることを想定している。
日付 | ~8/7 | 8/8 | 8/9 | 8/10 朝 |
---|---|---|---|---|
作業内容 | 設計・コーディング | 基本動作(直進走行、回転走行)の試験、デバッグ | PID制御のパラメータ調整 通路走行の試験 | 最終調整 |