名称 MIRS1203 ロータリー逆回り認識プログラム
番号 MIRS1203-SOFT-0002

最終更新日:2012.1.25

版数 最終更新日 作成 承認 改訂記事
A01 2012.1.25 田中優斗 初版


目次





1.はじめに

本ドキュメントは、ロータリー認識プログラム設計についてのドキュメントである。

2.開発の経緯

私たちの班は、右手伝いにロータリーを攻略する。そのため、ロータリーに入った時に、時計回りになってしまうと出れなくなってしまう問題があった。そこで、通路走行中に、過去のログを参照し、ロータリーを認識するプログラムを作成した。

3.認識方法

ロータリーの認識方法を以下に示す。


写真1 通路走行


写真2 ロータリー左回転


写真3 ロータリー右回転


これらは、左右のロータリーエンコーダの差を通路走行のループごとにグラフ化したものである。値がプラスの時は、右のほうが回転が多く、マイナスの時は左の方が多いことを示している。

これから、通路走行は右と左のロータリーエンコーダが同じくらいの割合で回っているがロータリーは、左回転は右の回転が多く、右回転は左の回転が多いことがわかる。

また、過去50回の平均をとると、通路走行は-1.7であったのに対し、ロータリー右回転は-16と大きな差が出ていることが分かった。
これより、ロータリー認識プログラムを、作成した。

4.実際のプログラム

実際に追加したプログラムを以下に示す。

if(j>=60) j=0;
distance_integral=0;
for(i=0;i<=59;i++){
   distance_integral=before_distance[i]+distance_integral;
}
fp=fopen("debug.txt","a");
fprintf(fp,"%d\n",distance_integral);
fclose(fp);
if((distance_integral/60)<-ROTARY_MISS){
    for(i=0;i<=59;i++){
       before_distance[i]=0;
    }
    //turn_left_180();
    turn_right();
    turn_right();
}
x_before=x_r-x_l;



このように、ログを残し、平均を出すことによってロータリーが右回転してしまったのを、7/8回転で判断させ、180°回転させることに成功した。

MIRS1203ドキュメント管理台帳