**目次 [#g3e1d4cb] #contents #clear **ロボットの紹介 [#f3597fb9] #clear &ref(./image.jpeg,50%,Mission1用ロボット);~ #clear ~NXT本体を縦に接合した。当初は横に接合する予定だったが、&br;不安定になってしまうため、 縦に接合してみたところ、安定したので、こちらを採用した。&br; ボールを掴む機構として、モーターを利用したりせずに枠をつけて、ホールドするようにした。&br; &br; **コース攻略方法 [#q1fd6c1b] &ref(./2014a-mission1.png,100%,攻略ルート); 赤・・・ライントレース&br; 青・・・交差点検知&br; 黄色・・・シュート&br; ライントレース&br; 授業中に教わったOn/Off制御のライントレースで走行する。&br; 本来は、さらに滑らかに走行するためにPID制御を用いたライントレースで走行したい・・・&br; ところだが、実装の時間が足りないため課題1ではOn/Offで走行する。&br; &br; &br; 交差点検知&br; 交差点検知の手法として、光センサーの値の変化を見る。正直なところ、確実に検知できるかは走行前の調整しだいなので、&br; 少しの調整を見誤ることが命取りとなるため、慎重に調整を行いたい。&br; &br; &br; シュート&br; 4度目の交差点検知を瞬間にシュートフェーズに移行する。シュートと言っても、強く跳ね返すということはせずに、&br; ただ急停止するのみである。押し出さなくても急停止するだけで慣性でボールは前に進んでくれると考えたためである。&br; **プログラム [#qa5fbc41] #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); } } } **今後の課題 [#d6f5bb6a] &br; &br; ●ロボットの仕組みついての課題●&br; &br; ・ボールをホールドするためのパーツが長くて幅が狭かったので、ボールの位置によってはボールをキャッチすることができずに、どこかに吹き飛ばしてしまった。なので、パーツの大きさの調整を慎重にする必要があった。&br; &br; ・ボールを運ぶ時に、必然的に光センサとボールが衝突しながら運ぶことになるが、その際に、ボールの重心より上に衝突してしまうので、ホールドするためのパーツからボールが出てしまい、ホールドせずにどこかに放り投げてしまった。なので、今後は重心より下を叩くようにして運ぶようにするような機構をつけることを考慮していきたいと思う。&br; &br; &br; &br; ●プログラムについての課題●&br; &br; ・まずライントレースは高速でもライントレースできるようにするために、PID制御に切り替えたい。&br; Pゲイン値、Iゲイン値、Dゲイン値など、調整するものが多くなってしまうが、 それに見合う価値 があると思うので、是非切り替えたい。&br; またライントレースについてだが、光センサ値のキャリブレーションを走行前に行うことにより, 手動で値調整を行う必要がなくなり、&br; スムーズに且つ信頼性が高い競技を行うことが出来るので次回の課題では実装してきたい。&br; &br; &br; ・続いて交差点検知では、光センサの値は環境によって変わるので、非常に不安定である。&br; そこで、モーターの回転数の差で検知する方法を利用することに切り替えたい。モータの回転数は環境の変化に強い値だと考えるからである。&br; &br; &br; ・最後にシュートだが、機体の向きによって成功率が変わるので非常に不安定。新しい方法を見つけたい。&br; &br; ・実装に使える時間が少なかった。今後はチームと時間の調整をしていきたいと思う。&br;