- 追加された行はこの色です。
- 削除された行はこの色です。
[[2007a/MemberOnly/進行状況A]]
#contents
*!!ロボコン!! 2007.8.4 [#gb100d38]
**メンバー [#a25aba24]
ten , サン , ARX-8 , エルモ
**課題:紙パックを収集して所定の位置にできるだけ高く積み上げる [#n92757fe]
***フィールドの説明 [#i916cc42]
フィールドは約160cm×110cm
運搬する500mlの紙パック(以下単に紙パックと呼ぶ)は約7cm×7cm×10.3cm
紙パックはすべての面に白あるいは緑色の画用紙がはられている
紙パックは(目的地の円周上を除く)各交差点に立てて配置されている
目的地の円を囲む正方形の4隅には緑の紙パックが配置されている
1つの格子はの境界の黒線の芯々で20cm平方の正方形である
黒い線の太さは約25mm
***ルール [#za2d2994]
● 基本ルール
所定の時間内に紙パックを所定の場所に運んで積み上げる。
競技時間は2分30秒(仮)、あるいはリタイアするまでとする。 ただし積み上げた紙パックからロボットが離れよ
うとしている動作中に制限時間が来てしまった時には、その動作が終了するまで、とする。 2分経過した時点で10個以上入っていた場合には30秒延長する(仮)。
どこからスタートしてもよい。
スタート時のロボットは3個を越えないこと (スタート後はいくつに分裂してもかまわない)。
開始の合図から5秒以内にRCXのスタートボタンを押す作業を完了すること。
競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。
途中でうまく動かなくなった場合、1回限り再スタートすることができる。
積んだ紙パックの底面は水平でなければならない
競技終了時点で、積み上げた紙パックにロボットの一部が触れていてはならない。 触れている場合は、その紙
パックおよびその紙パックに触れている紙パック、さらにその紙パックに触れている紙パック、・・・、は加算
しない。
半分以上枠はみ出した紙パックは得点に加算しない。
枠内からはみ出した部分が半分以下の場合には、本来の点数の 1/2 とする。1点未満は切捨て。
● 基本得点の計算方法
紙パックを一個運んで積み上げると、白パックの場合
1層目で横置き:1点、1層目で縦置き:2点
2層目で横置き:2点、2層目で縦置き:4点
3層目で横置き:4点、3層目で縦置き:8点
4層目で横置き:8点、4層目で縦置き:16点
..... 以下同様
緑パックの場合はすべて白パックの2倍
● 技術点の計算方法
以下の動作の精度・スピード・確実性などを含めた技術的な工夫や芸術性について他の全てのチーム(9チーム+TAor教員)が20点満点で採点し、その平均点を求める。
得点の目安:
紙パックを集める動作 (4点)
紙パックを積み上げる動作 (4点)
2台以上のロボット、あるいは単体のロボットの場合は2台のRCXの連携の良さ(4点)
自立型のロボットとしての形や動作の美しさ、斬新さ(4点)
その他 (4点)
**戦略 [#i01137db]
1.箱4つをいっきに縦に積み上げる事で高得点をねらう。そのために、リフト(エレベーター?)のようなもので下から上へと積み上げることにする。
2.特に円の周りの緑の箱を4つ全てを積み上げる事。これに全てをかける!!
☆以上☆
**ロボット紹介 [#f43199f3]
***名:&size(30){倉羅}; (くらら) [#w545a150]
RCXを2つくっつけることによって、1つのロボットにした。
バランスを上手くとるために何度もタイヤを変えることを繰り返した。
タイヤが4つだと曲がりづらいので結局タイヤ2つにした。
エレベーターの扉が開閉する。
**プログラミング [#me99d90d]
その1:repeatを使ったプログラミング
試作:whileを使ったプログラミング(ライントレースのみ)
プログラムは下から上への命令はできないと思ったが、実際に円の回りの四角をトレースできたので掲載した。
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_LIGHT);
int count=0;
while((count==0|| count==2|| count==4|| count==6)){
if(SENSOR_1>40){
if(SENSOR_2>40){
OnFwd(OUT_A+OUT_C);
}else{
OnFwd(OUT_A);
Off(OUT_C);
}
}else{
if(SENSOR_2<40){
Off(OUT_A+OUT_C);Wait(200);
OnFwd(OUT_A+OUT_C);
Wait(70);
OnFwd(OUT_A);
Off(OUT_C);Wait(50);
count++;
}else{
Off(OUT_A);
OnFwd(OUT_C);
}
}
while(count==1|| count==3|| count==5|| count==7){
if(SENSOR_1>40){
if(SENSOR_2>40){
OnFwd(OUT_A+OUT_C);
}else{
OnFwd(OUT_A);
Off(OUT_C);
}
}else{
if(SENSOR_2<40){
OnFwd(OUT_A);
OnRev(OUT_C);Wait(70);
count++;
}else{
Off(OUT_A);
OnFwd(OUT_C);
}
}
}
}
}
その2:関数をつかったプログラミング
RCX1:
#define SIGNALON 0
#define SIGNALOFF 12
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
int count=0ClearMessage(); // Message()の値を0に初期化
if(Message() == 0){
if((count==0)||( count==2)|| (count==4)|| (count==6)){
if(SENSOR_2>40){
if(SENSOR_1>40){
if(SENSOR_3>40){
OnFwd(OUT_A);
Off(OUT_C);
}else{
OnFwd(OUT_A+ OUT_C);
}
}else{
if(SENSOR_3<40){
Off(OUT_A);
OnFwd(OUT_C);
}else{
Off(OUT_A);
OnFwd(OUT_C);
}
}
}else{
Off(OUT_A+OUT_C);Wait(200);
OnFwd(OUT_A+OUT_C);Wait(50);
count++;
}
if
((count==1)|| (count==3)|| (count==5)||( count==7)){
if(SENSOR_2>40){
if(SENSOR_1>40){
if(SENSOR_3>40){
OnFwd(OUT_A);
Off(OUT_C);
}else{
OnFwd(OUT_A+ OUT_C);
}
}else{
if(SENSOR_3<40){
Off(OUT_A);
OnFwd(OUT_C);
}else{
Off(OUT_A);
OnFwd(OUT_C);
}
}
}else{
OnFwd(OUT_A);
OnRev(OUT_C);
Wait(50);
count++;
}
}
}
if(count==8){
OnFwd(OUT_A);
OnRev(OUT_C);Wait(25);
OnFwd(OUT_A+OUT_C);Wait(80);
Off(OUT_A+OUT_C);
OnFwd(OUT_B);Wait(300);
OnRev(OUT_A+OUT_C);Wait(500);
Off(OUT_A+OUT_C);Wait(18000);
}
}
if((Message() == 12)){
Off(OUT_A+OUT_C);}
}
RCX2:
#define SIGNALON 0
#define SIGNALOFF 12
task main ()
{
SetSensor(SENSOR_2,SENSOR_TOUCH);
while(true){
if (SENSOR_2 == 1){
// センサー1だけが押されているときは SIGNALOFF(=12) を送信する
SendMessage(SIGNALOFF);
OnRev(OUT_B);Wait(400);Off(OUT_B);
OnFwd(OUT_A+OUT_C);Wait(600);Off(OUT_A+OUT_C);
OnFwd(OUT_B);Wait(400);Off(OUT_B);
SendMessage(SIGNALON);
}
}
}
一度作ったプログラミングを試してみたけれど、なかなか上手くいかなかった。
**工夫点 [#r7d24f72]
箱を積むところはエレベーター型にして、一度積んだ箱が下に落ちてこないようにギアを取り付けた。
箱を積むエレベーターの部分が重くて前方に傾くので、車体の後方とエレベーター部分をブロックで三角形に固定して安定にすることに成功した。
エレベーター部分を作動させるモータを安定につけるため、エレベーター部分の固定をさらに強化した。
ギアの調節。
タッチセンサーのバンパーがなるべく小さくかつ軽くなるように小さいパーツをとりつけるように意識した。
持ち上げるアームの部分で、箱をつかむ時に変な角度にならないように車輪をたくさん付けた。
扉を動かす所で左右対称に動くようにギアを組んだ。
エレベーター部分で積上げた箱が落ちてこないため、滑り止めとしてタイヤにゴムを巻き付けた。
**苦労した点 [#ubb1b802]
いろいろと作っていく過程でブロックが微妙に足りないということもあった。
箱をつむ部分が重くてバランスがとれず、崩れやすかった。
エレベーター型のリフトの扉の開閉をするためのモーターをつける位置や固定のぐあいに悩んだ。
ライントレースの際にコースにたくさん交差点があるので、思い通りの交差点で曲がるにはどうすればいいかがプログラミングのときに引っかかった。
箱を積上げるとき、初めはブロックに引っかかって箱が上がらなかったので、ほかのブロックで幅を持たせたりして上手く上げる事に成功はした。
一度積み上げた箱がタッチセンサーに当たってしまうという壁にぶち当たってしまった。
**感想 [#o927f057]
ten:
ten:テスト終了後ということで、ロボの制作開始が遅くなってしまい、結果ロボコン当日までに間に合わないという形になってしまったが、一応ロボットの方は完成できたので一応は良かった。今回は、4人での制作ということで、ロボの制作班とプログラム班とレポート班に分かれてやったが、自分が担当したロボの制作が遅れてしまい、迷惑をかけてしまったので申し訳なく思った。
サン:
サン:プログラミングに苦労した。while,if,repeat,関数を使用し、通信機能を使って組んだが、なかなかうまくいかなかった。円の回りの四角をトレースする際に、関数を使用し交差点で曲がるようにするまでは良かったが、誤って円をトレースしてしまうので光センサの位置を工夫したり、トレースの位置を黒白の位置にかえるなどの作業も大変だった。本番では、ライントレースすらできなく残念だった。ゼミの中で一番疲れた。
ARX-8:
ARX-8:主にロボットを担当したが、製作にこりすぎて時間がかかりすぎ、プログラミング担当のじかんを削ってしまって申し訳なかった。ロボコン当日に寝坊したのは本当申し訳ないm(__)m
エルモ:
エルモ:ライントレースが上手くいかず結果は0点やったけど、テスト終わってみんな朝から集まってロボづくりにはげんでいました。みんなほんま頑張った!!だから結果は残念やったけど、他のチームを見たりしてほんまメッチャ楽しかったです。みんなここまでありがとう☆
**☆コメントをどうぞ☆ [#dbe06197]