#contents *課題3:空き缶運搬ロボット [#q06fc442] 空き缶を分別して所定の場所に運ぶ。 -フィールドの説明 #ref(2018a/Member/tanaka/Mission3/robotics 1.png,50%,コース) >フィールドは課題2で使用した紙を使用する。 > 2種類の空き缶(Aタイプ,Bタイプ)をそれぞれ3個づつ用意し、円XにABA、円YにBABとなるように3段づつ積み上げる。 >空き缶には色をつけたり文字や記号を書いてもよい。あるいは周囲に紙を張ってもよい。 *ルール [#q2ea6e63] -基本ルール 競技時間は審判が続行不能と判断するまで、あるいはリタイアするまで。 図のA地点または(および)A'地点からスタートする。ただし接地している部分はそれぞれの領域 内に収まるものとする(線上はOK)。上空部分は領域からはみ出していてもよい。^ Aタイプの空き缶を円Y内に、Bタイプの空き缶を円X内に運ぶ。 開始の合図から5秒以内にスタートボタンを押す作業を完了すること。 競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。 途中でうまく動かなくなった場合、1回限り再スタートすることができる(再スタートの際に別プ ログラムで起動してよい)。^ 競技時間は審判が続行不能と判断するまで、あるいはリタイアするまで。 図のA地点または(および)A'地点からスタートする。ただし接地している部分はそれぞれの領域 内に収まるものとする(線上はOK)。上空部分は領域からはみ出していてもよい。 Aタイプの空き缶を円Y内に、Bタイプの空き缶を円X内に運ぶ。 開始の合図から5秒以内にスタートボタンを押す作業を完了すること。 競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。 途中でうまく動かなくなった場合、1回限り再スタートすることができる(再スタートの際に別プ ログラムで起動してよい)。^ -基本得点の計算方法 運んだ空き缶の数×3点 空き缶を積み重ねて置くことができば場合、2段目の空き缶一つにつき2点加算、3段目の空き缶一 つにつき3点加算する。 円内からはみ出している場合、半分以下なら1点減点、半分以上なら2点減点。 間違った円内に空き缶を置いた場合は、1個につき1点減点。 間違った円内の2段目に空き缶を置いた場合は1個につき3点減点、その上にある空き缶は0点 -技術点の計算方法 以下の動作の精度・スピード・確実性などを含めた技術的な工夫や芸術性について他の全てのチー ム(5チーム)が20点満点で採点し、その平均点を求める。 得点の目安: 空き缶を探し取りにいくまでの動作 (3点) 空き缶を掴む動作 (3点) 空き缶を運ぶ動作 (2点) 空き缶を置く動作 (2点) 空き缶を積む動作 (3点) 2台のRCXまたはNXT、EV3の連携の良さ(2点) 自立型のロボットとしての形や動作の美しさ、斬新さ(2点) その他 (3点) *ロボットについて [#i7757fa7] ロボットの前方にアームを3つ付けたので,前方の重量が重くなってしまった.なので,後方も重くしなければならなくなってしまったので,全体が重くなってしまった.そのため,移動する際に激しく振動するようになってしまった.また,後方のRIS本体が取れてしまうので壁を作り補強した. #ref(2018a/Member/tanaka/Mission3/オ。ツホ3.jpg,100%,コース) -アームについて #ref(2018a/Member/tanaka/Mission3/オ。ツホ1.jpg,100%,コース) >・一番上のアーム >上下に動くことができる機構にしている.しっかり缶をつかめるようにタイヤを付けた. >・二番目のアーム >缶を吹き飛ばすための機構.長めにして確実落とせるようにした. >・一番下のアーム >一つ目の缶を支えるための機構.缶までの距離を合わせるため一番上のアームとこのアームの長さ>に気を付けた. *ロボットの動き [#xc4e061e] -最初の考え >一番上のアームで一番上の缶を持ち上げる >一番下のアームで一つ目の缶を支える >二番目のアームで二つ目の缶を吹き飛ばす >一番上の缶を下げてきて一番下の缶の上に乗せる >最後にタイヤを動かしもう一つの円に移動させる -ロボコンでは プログラムに時間をかけれなかったので真ん中のアームを取り除き一番上のアームで上二つの缶を落とし,確実に一つを運ぶようにした. *プログラムについて [#p8fcf628] 先ほど述べたようにプログラムに時間がかけれなかったので,ロボット間での通信は行わなかった. まず二つのアームについてのプログラム #define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC); #define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC); #define rightsenkai(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_AC); #define leftsenkai(t) OnReV(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_AC); task main() { Wait(180); OnFwd(OUT_AB); Wait(10); Off(OUT_A); Wait(570); Off(OUT_B); OnRev(OUT_AB); Wait(100); Off(OUT_AB); } 最初のwaitはロボット間での通信ができなかったため,缶に近づいた後にアームを動かしたかったのでつけている.また,スタート地点から缶までが約1.8秒であるから. -ロボットを移動させるためのプログラム #define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC); #define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC); #define rightsenkai(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_AC); #define leftsenkai(t) OnReV(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_AC); #define rego(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC); task main() { go(180); Wait(100); rightsenkai(140); go(400); Wait(100); rego(200); } *結果 [#v2648289] 無事に一つ缶をもう一つの円まで運ぶことができた. *感想 [#k4fb1e23] 初めにロボコン当日と前日に用事があったので参加できなかったことが悔やまれる.しかし,班の人たちが時間のない中しっかりと点数をとってくれてよかった.また,思っていたよりもロボットの制作に時間がかかってしまいプログラムに時間をかけれなかった.もっとうまく時間を使えればよかった.