[[2009b]] #contents ***プログラム **ゆあ [#lfbe8da0] *組織 [#aff99b13] SIS イギリス情報局秘密情報部 極東支部担当 第7兵站局 *任務内容 [#i93ae4fe] 近年、その政治情勢に不穏な動向が確認されている中華人民共和国に主力部隊 人民解放軍の大規模な動きが見られた。~ 我が国はこの軍事行動を脅威と断定、急遽閣僚を召集、緊急閣議を開く。~ SISの報告書によると中国は近頃活発にソビエト連邦と連絡を密にしていた。裏付けは取れなかったがKGBが河南省に潜入、何らかの工作を行っていた可能性もある。~ 不安要素が多すぎる為に予想を裏切らず議会は紛糾を極めたが閣議を開いてから45時間後、事態は急展開を見せた。防衛省管轄の兵器開発局にCIA諜報員が接触。何らかの機密情報に対して取引を持ちかけ模様。~ 閣僚召集から57時間後 王室海兵隊に予備命令が下された、発令元は英国海軍幕僚総長。その更に3時間後事態の詳細は伏せたままで次の要件を満たす偵察機の開発を要請された。~ 主任務 この条件をクリアすることが任務達成の最低条件~ 1、光センサーを用いた特定経路のみの走行を可能とする自律可動型特殊装甲車の作成~ 2、その際遭遇するであろう各障害物の撤去及び運搬を自在に行いうる機能、構造を備えること~ 副任務 必ずしも満たす必要は無いが 3、1 2の諸条件を満たしつつ可能な限り迅速に任務を遂行できる機動性を持つこと~ 4、戦場に置いて任務の際に各種メンテを取り行う主任エンジニアが専属するとは限らないために専門の知識を持たない者も容易に管理、運用出来る高い利便性を付与することが望ましい~ 5、割り振られる予算を考えると製造する偵察機の生産コスト+機体の総重量は可能な限り落とすものとする~ 期限、14日 *コース [#d1d9558c] #ref(./091203_1937~0001-1.jpg,サイズ,画像の説明); *構造 [#m7297ec6] **アーム部分 [#ndff369b] 本体の上にモーターをつけて回転できるようにしました。 &ref(./091201_1454~0001.jpg,サイズ,画像の説明); &ref(./091201_1455~0001.jpg,サイズ,画像の説明); 歯車を使ってアームの回る速さを調節。こんな感じです。 ただ、それでも回る速さは少し速いです。 &ref(./091201_1434~0002.jpg,サイズ,画像の説明); &ref(./091201_1435~0001.jpg,サイズ,画像の説明); **タッチセンサー [#v5211c1c] なかなかうまく反応してくれなかったので、重くしました。 &ref(./091201_1435~0002.jpg,サイズ,画像の説明); &ref(./091201_1436~0001.jpg,サイズ,画像の説明); **本体 [#v470a66c] 三輪にして機動力をアップ。また車輪を大きくしてスピードアップ。 光センサーの位置(センサーとセンサーとの距離)は少しなら調節可能です。 &ref(./091201_1437~0001.jpg,サイズ,画像の説明); &ref(./091201_1437~0002.jpg,サイズ,画像の説明); &ref(./091201_1438~0001.jpg,サイズ,画像の説明); 紙パックを運ぶときはアームを使って紙パックを挟みます。 &ref(./091201_1439~0001.jpg,サイズ,画像の説明); *まさやのプログラム [#p76bd8b2] コース上の紙パックを後ろにどかして進む #define go OnFwd(OUT_A+OUT_C); //前進 #define stay Off(OUT_A+OUT_C); //停止 #define arm_l OnFwd(OUT_B);Wait(140);Off(OUT_B);//腕を左回り(反時計回り)に180度回転 #define arm_r OnRev(OUT_B);Wait(140);Off(OUT_B);//腕を右回り(時計回り)に180度回転 #define eye_l SENSOR_1 #define eye_r SENSOR_3 task main() { SetSensor(eye_l,SENSOR_LIGHT); //センサー1を光センサー SetSensor(SENSOR_2,SENSOR_TOUCH);//センサー2をタッチセンサー SetSensor(eye_r,SENSOR_LIGHT); //センサー3を光センサー while (true) { start follow_line; //線のトレースを開始 until(SENSOR_2 == 1);//紙パックにぶつかるまで続ける stop follow_line; stay; //ぶつかったら停止 arm_l; //腕を左回りに回転、紙パックを後ろへ Wait(100); arm_r; //腕を右回りに回転して元の位置に戻す Wait(100); } } task follow_line() //線をたどるプログラム { while(true){ Wait(50); go; //光センサーが両方白い所にある場合前進 until((eye_l < 40)||(eye_r < 40)); stay; if((eye_l < 40)&&(eye_r > 40)){ //左の光センサーが線に乗った場合 OnFwd(OUT_C);OnRev(OUT_A); //右に方向修正 until((eye_l > 40)&&(eye_r > 40));//両方の光センサーが白に行くまで stay; } if((eye_l > 40)&&(eye_r < 40)){ //右の光センサーが線に乗った場合 OnFwd(OUT_A);OnRev(OUT_C); //左に方向修正 until((eye_l > 40)&&(eye_r > 40));//両方の光センサーが白に行くまで stay; } if((eye_l < 40)&&(eye_r < 40)){ //両方の光センサーが線上にきた場合 //つまり交差点にきた場合 go; //前進 until((eye_l > 40)&&(eye_r > 40));//交差点を過ぎるまで stay; } } } 本体作りはゆあ君がとてもがんばって作ってくれました。 タッチセンサーは重くしすぎると走行の振動で反応してしまうし、軽いと紙パックに 反応しなかったりと大変でした。 紙パックを後ろに置く、というよりは後ろに投げるという感じになってしまいました。 それに急なカーブを曲がれなかったり、交差点をまっすぐではなくて曲がってしまう ことがあります。 それとモーターが悪いのか、他に理由があるのかわからないけど、ロボットがまっすぐ 走りませんでした。 *ゆあのプログラム [#cc36001d] sub left(){ OnFwd(OUT_B); Wait(140); Float(OUT_B); } sub right(){ Rev(OUT_B); Wait(70); Float(OUT_B);} task main(){ repeat(5){ while(true){ OnFwd(OUT_A+OUT_C); until((SENSOR_1 <40)||(SENSOR_3 <40)); if (SENSOR_1 <40){ Off(OUT_A+OUT_C); Wait(15); OnFwd(OUT_C); until((SENSOR_1 >40)&&(SENSOR_3 >40)); Off(OUT_C+OUT_A); } if (SENSOR_3 <40){ Off(OUT_A+OUT_C); Wait(15); OnFwd(OUT_A); until((SENSOR_1 >40)&&(SENSOR_3 >40)); Off(OUT_A+OUT_C); } else if((SENSOR_1<40)&&(SENSOR_3 <40)){ Off(OUT_A+OUT_C); left(); } if (SENSOR_2==1){ Off(OUT_A+OUT_C); right(); } } } } *コメントをどうぞ [#fcc45eec] #comment