目次

ロボットの紹介

Mission1用ロボット

NXT本体を縦に接合した。当初は横に接合する予定だったが、
不安定になってしまうため、 縦に接合してみたところ、安定したので、こちらを採用した。
ボールを掴む機構として、モーターを利用したりせずに枠をつけて、ホールドするようにした。

また、カーブにボールがあった際に長過ぎるとホールドする部分でボールを弾き飛ばしてしまうし、短すぎるとホールドできないということがあった。その両方が発生しないようにホールド部分の長さには注意を払って調整をした。

○利用したセンサ類
モータ2個
光センサ1個(ライントレース用)

ボールがあるかどうかは検知していない。超音波センサなどを用いて検知せずに、ボールをホールドする前提で進んでいくからである。ただ、それだとリカバリ性や安全性が低下してしまうので、その点も考察して作る必要があった。

コース攻略方法

攻略ルート

 赤・・・ライントレース
 青・・・交差点検知
黄色・・・シュート

ライントレース
授業中に教わったOn/Off制御のライントレースで走行する。
本来は、さらに滑らかに走行するためにPID制御を用いたライントレースで走行したい・・・
ところだが、実装の時間が足りないため課題1ではOn/Offで走行する。


交差点検知
交差点検知の手法として、光センサーの値の変化を見る。正直なところ、確実に検知できるかは走行前の調整しだいなので、
少しの調整を見誤ることが命取りとなるため、慎重に調整を行いたい。


シュート
4度目の交差点検知を瞬間にシュートフェーズに移行する。シュートと言っても、強く跳ね返すということはせずに、
ただ急停止するのみである。押し出さなくても急停止するだけで慣性でボールは前に進んでくれると考えたためである。

プログラム

 
  #define THERHOLD 42 //閾値
  
  
 task main(){

SetSensorLight(S3);
int count=0;  //交差点を何度検知したかをカウントするための変数

	OnFwd(OUT_BC,75);//スタート地点の枠を突破するために直進をする・・・
	Wait(300);

while (true) { 
 
	/*デバッグ用 光センサの値と交差点カウントをLCDに表示する*/・・・
    ClearScreen();
    TextOut(0,LCD_LINE1,"LightSensor:");//1行目
    TextOut(0,LCD_LINE2,"CrossCount:"); //2行目
    NumOut(80,LCD_LINE1,SENSOR_3); //光センサの値を表示する
    NumOut(80,LCD_LINE2,count);//交差点カウントの回数を表示する
    /*デバッグ用プログラムここまで*/


	if(SENSOR_3 < THERHOLD){ //以下ライントレース・・・

		OnFwd(OUT_C,30);
		Off(OUT_B);
		
		}

		else{
		OnFwd(OUT_B,40);//急カーブを曲がるために左右で値を変えている
		Off(OUT_C);
		
		}//ライントレースここまで

 
	if(SENSOR_3<32){//32の値は調整必要 交差点を検知するための光センサの値・・・
	count++; //検知したらcountを増加させる
	}

	if(count==4){//4回目で停止する

	Off(OUT_BC);
	}

	
  }
} 

 .好拭璽肇┘螢△力箸鯡技襪靴徳るために直進走行を入れた。これにより、スタートで
  交差点検知する必要がなくなり、スタートが安定した。

◆.妊丱奪依僂離廛蹈哀薀燹A行中にNXT本体の画面に光センサの現在の数値と、何度交差点を検  知したかのカウント数を表 示させるようにしている。光の値は目ではわかりにくいので、  これにより作業効率は上がった。

 ON/OFF制御のライントレース。光センサキャリブレーションも実装していないので、毎回走行す  る都度閾値を設定しなければならない。そのうえ、ON/OFF制御なので精度もあまりよくない。さらに急カーブに対応するために左右モータのスピードを変えている。このことにより急カーブは綺麗に曲がることが出来た。

ぁ仝鮑硬生|痢シュート。交差点に入った瞬間に光センサの値は下がるのを利用し、検知している。また、シュートはゴールエリアのラインを交差点とみなし、4回目の交差点を  検知したらシュートするようにしている。シュートは強くボールを強く弾き飛ばすなどのことは  せずに、急停止して慣性でゴールをさせるというものである。
この交差点検知の欠点は、通常のライントレース時も交差点と間違って検知してしまうことや、交差点検知をしてくれない時もあった。なので、なんどこの値を検知したかなどを計測するアプローチも必要となる。

変数の説明
THERHOLD・・・ラインの閾値
count・・・交差点を何度検知したかをカウントする。

今後の課題



●ロボットの仕組みついての課題●

・ボールをホールドするためのパーツが長くて幅が狭かったので、ボールの位置によってはボールをキャッチすることができずに、どこかに吹き飛ばしてしまった。なので、パーツの大きさの調整を慎重にする必要があった。

・ボールを運ぶ時に、必然的に光センサとボールが衝突しながら運ぶことになるが、その際に、ボールの重心より上に衝突してしまうので、ホールドするためのパーツからボールが出てしまい、ホールドせずにどこかに放り投げてしまった。なので、今後は重心より下を叩くようにして運ぶようにするような機構をつけることを考慮していきたいと思う。



●プログラムについての課題●

・まずライントレースは高速でもライントレースできるようにするために、PID制御に切り替えたい。
Pゲイン値、Iゲイン値、Dゲイン値など、調整するものが多くなってしまうが、 それに見合う価値 があると思うので、是非切り替えたい。
またライントレースについてだが、光センサ値のキャリブレーションを走行前に行うことにより, 手動で値調整を行う必要がなくなり、
スムーズに且つ信頼性が高い競技を行うことが出来るので次回の課題では実装しておきたい。


・続いて交差点検知では、光センサの値は環境によって変わるので、非常に不安定である。
 そこで、モーターの回転数の差で検知する方法を利用することに切り替えたい。モータの回転数は 環境の変化に強い値だと考えるからである。
  また、プログラムは通常高速ループをしており、たとえ交差点検知の要となる非常に暗い値を感 知したとしても、予想よりも多くの回数をカウントしてしまう。さらに、光センサの値が頼りなの で通常のライントレース中でもこの値を感知してしまい、検知しまうことがある。しかし、多くの 回数をカウントすると言っても、交差点の時と、ライントレースの時とではそのカウントする回数 は違うはずである。なので、光センサを頼りに交差点検知をする場合は、何度その値を感知したか もカウントするのも非常に大切であると考える。
 

・最後にシュートだが、機体の向きによって成功率が変わるので非常に不安定。新しい方法を見つけたい。

・実装に使える時間が少なかった。今後はチームと時間の調整をしていきたいと思う。


添付ファイル: file2014a-mission1.png 278件 [詳細] fileimage.jpeg 142件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-07-28 (月) 13:11:27 (1850d)