[[2018a/Member]] *目次 [#p4fcb1c1] #contents *課題3 [#f1398342] 空き缶を分別して所定の場所に運ぶ。 **フィールドの説明 [#x446a9b2] フィールドは課題2で使用した紙を使用する。 #ref(コース3.png) 2種類の空き缶(Aタイプ,Bタイプ)をそれぞれ3個づつ用意し、円XにABA、円YにBABとなるように3段づつ積み上げる。 #ref(缶の積み方.PNG) 空き缶には色をつけたり文字や記号を書いてもよい。あるいは周囲に紙を張ってもよい。 **ルール [#q0af4dda] 基本ルール 競技時間は審判が続行不能と判断するまで、あるいはリタイアするまで。 図のA地点または(および)A'地点からスタートする。ただし接地している部分はそれぞれの領域内に収まるものとする(線上はOK)。上空部分は領域からはみ出していてもよい。 Aタイプの空き缶を円Y内に、Bタイプの空き缶を円X内に運ぶ。 開始の合図から5秒以内にスタートボタンを押す作業を完了すること。 競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。 途中でうまく動かなくなった場合、1回限り再スタートすることができる(再スタートの際に別プログラムで起動してよい)。 #ref(缶の積み方2.PNG) この置き方が最大の得点 ***基本得点の計算方法 [#u85c45a6] 運んだ空き缶の数×3点 空き缶を積み重ねて置くことができば場合、2段目の空き缶一つにつき2点加算、3段目の空き缶一つにつき3点加算する。 円内からはみ出している場合、半分以下なら1点減点、半分以上なら2点減点。 間違った円内に空き缶を置いた場合は、1個につき1点減点。 間違った円内の2段目に空き缶を置いた場合は1個につき3点減点、その上にある空き缶は0点 ***技術点の計算方法 [#p4a651f2] 以下の動作の精度・スピード・確実性などを含めた技術的な工夫や芸術性について他の全てのチーム(5チーム)が20点満点で採点し、その平均点を求める。 得点の目安: 空き缶を探し取りにいくまでの動作 (3点) 空き缶を掴む動作 (3点) 空き缶を運ぶ動作 (2点) 空き缶を置く動作 (2点) 空き缶を積む動作 (3点) 2台のRCXまたはNXT、EV3の連携の良さ(2点) 自立型のロボットとしての形や動作の美しさ、斬新さ(2点) その他 (3点) *ロボットの説明 [#jbe56304] **全体の説明 [#ab9a2f92] 今回はRISを2台使えたので、通信を使ってロボットを上下2つに分けた。 上部は缶を掴むためのアーム機構で、下部は車体の移動を行う機構である。 本体は縦長の箱をイメージしており、旋回しても缶にぶつからないスマートな形になっている。後部にRIS2台をのせ、前方にアームがついているためバランスもよく、倒れづらくなってる。 #ref(全体像.jpg) **上部(アーム機構)の説明 [#v348164e] アーム機構は上下スライド式になっており、缶の3段目の位置まで動くようになっている。 RISの特徴である平たいギアを繋げることで高い位置まで可動が可能になる。しかし缶を3段積んだときの高さには届かなかったので、一段目の缶の半分から上の高さをアームが動ける最低位置とすることで、3段目まで届くように改善した。 スライドをさせるためにガイドを作った。形はホチキスの針をイメージした。全体を包み込むようにすることで、安定を保つことができた。 また、ガイドとアームの間にわずかな空間ができてしまうため、タイヤで押し付け、よりガイドに沿って動くことができるようにした。 #ref(アーム機構.PNG) アームは缶の位置が多少ずれてもカバーできるように、大きく開くようにした。また閉じたときに缶に密着するよう、径の大きさを試行錯誤し、タイヤを指先に付けることで摩擦力を増やした。 #ref(アーム.jpg) **下部(車体)の説明 [#t5158db6] 車輪は二輪にすることで、その場での旋回ができりようにした。このままだとふらついてしまうので、前後に支えとなるパーツを付け安定させた。 車輪には回転センサを付けており、90度の回転や180度の回転が正確に行えるようにした。 車体の裏には光センサを2つ付けた。これにより、センサが線分LFと線分GFの両方を黒と認識した時に止まることができる。センサを1つにすると、トレースをして交差点に差し掛かった時に止まらず、極短い時間内ではあるが車体が左右に曲がってしまい正面を向くことができない。2つにしたのはこれを防ぐという理由もある。 #ref(下のセンサー.jpg) 車体の前方にはタッチセンサが付いており、缶タワーに当たった時に止まれるようになっている。 缶が軽いためタッチセンサが反応しなかったが、てこの原理を利用したパーツを付けたことで、弱い力でセンサが反応するようにした。画像を見るとわかるが、タッチセンサが左に大きく離れてた場所に付いている。これにより車体の正面に缶が当たった時にセンサを反応させることができる。 #ref(タッチセンサー2.jpg) *プログラムの説明 [#e5421905] **define [#e9dc2a21] defineはアーム用・車体用の2つに分け、それぞれ用意した。 上部のdefineは、缶を掴むTOJIRU・缶を離すHIRAKU・タッチセンサの作動値THRがある。 上部のdefine #define TOJIRU Wait(50);OnFwd(OUT_A);Wait(100); //アームを閉じる #define HIRAKU Wait(50);OnRev(OUT_A);Wait(30);Off(OUT_A); //アームを開く #define THR 1000 //缶に接近を検知するセンサのしきい値 下部のdefineは、90度左に曲がるTURNL・90度右に曲がるTURNR・缶を置くときに前に進むFOR・置いた後後ろに下がるBACK・缶がタッチセンサを押すまで動くFCANがある。 下部のdefine #define TURNL Wait(80);OnFwd(OUT_C);OnRev(OUT_A);ClearSensor(SENSOR_2);until(SENSOR_2>=41);Off(OUT_AC); //左に曲がる #define TURNR Wait(80);OnFwd(OUT_A);OnRev(OUT_C);ClearSensor(SENSOR_2);until(SENSOR_2<=-41);Off(OUT_AC); //右に曲がる #define FOR Wait(80);OnFwd(OUT_AC);ClearSensor(SENSOR_2);until(SENSOR_2<=-23);Off(OUT_AC); //缶を置くときに少し前に進む #define BACK Wait(80);OnRev(OUT_AC);ClearSensor(SENSOR_2);until(SENSOR_2>=23);Off(OUT_AC); //缶を置くときに少し前に進んだ分戻る #define FCAN Wait(80);OnFwd(OUT_AC);ClearTimer(0);until(100==Message());Off(OUT_AC);time=Timer(0)*10; //接近の知らせを受けるまで前進 その時間をtime0に記録 **上部 [#jee4f262] **下部 [#s125c9c9] **メインプログラム [#u231d5a8] *結果 [#t868494f]