2008a/MemberOnly/進行状況A

ロボコン

テニスボールを所定の位置まで運ぶ。
コース

robocon2008a.png

基本ルール
ボールを 塔から それぞれ向きの違う棒に挟まれた状態から 運びだし、4箇所あるゴールの箱に入れる。
競技時間は審判が続行不能と判断するまで、あるいはリタイアするまで。
4隅のコーナー(半径30cmの1/4円)のいずれかからスタートする。
スタート時のロボットは2個を越えないこと (スタート後はいくつに分裂してもかまわない)。
開始の合図から5秒以内にRCXのスタートボタンを押す作業を完了すること。
競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。
途中でうまく動かなくなった場合、1回限り再スタートすることができる(再スタートの際に別プログラムで起動してよい)。

ふじロボット

こちらのロボットは上を向いているゴールは無視して、横を向いているゴールのみを狙います。

本体

全体像.jpg

本体はタイヤが付いている2本のブロック群をつないでその上にRCX本体を乗せました。
ボールをつかむ機構は上からネットで押さえつけて引きずっていく形にしました。

下から2改.jpg

タイヤは方向転換をしやすくするために小さいタイヤを使用しました。最初安定性を出すためキャタピラを使用したところ、全く方向転換がききませんでした。
赤い丸で囲まれている2つがモーターに繋がっているタイヤで、青い丸で囲まれているのが自由に回転する補助輪です。

センサー

センサーはネットの先端と側面の2か所にタッチセンサーを取り付けました。
正面のセンサー

全体像3.jpg

赤い丸で囲んであるところが実際にタッチセンサーが設置してある場所。
青い丸で囲んである部分が押されるとタッチセンサーが押されます。
側面のセンサー

側面タッチセンサ1.jpg

バーが開きすぎないようにブロックで止めてあります。

側面タッチセンサ2.jpg

止めているブロックを外すとこんな感じです。 バーが2本付いているのは前から当たった時も、後ろから当たった時も反応できるようにするためです。

プログラム

大雑把には時間指定で進み、最後の詰めはセンサーで行っています。

task main(){
SetSensor(SENSOR_1,SENSOR_TOUCH);    //センサーを定義
SetSensor(SENSOR_2,SENSOR_TOUCH);
while(SENSOR_2==0)         //中央のタッチセンサーが押されるまで直進
  {while(true)
  {OnFwd(OUT_A+OUT_C);
  Wait(2);
  Off(OUT_A+OUT_C);
  Wait(2);}}
  Off(OUT_A+OUT_C);
01.jpg
 
02.jpg
  OnRev(OUT_B);          //ネットを上げる
  Wait(30);
  Off(OUT_B);
03.jpg
  
  OnFwd(OUT_A+OUT_C);  //少し前進
  Wait(30);
  Off(OUT_A+OUT_C);
  
  OnFwd(OUT_B);     //ネットを下げる
  Wait(60);
  Float(OUT_B);
04.jpg
 OnRev(OUT_A+OUT_C);
  Wait(30);
  Off(OUT_A+OUT_C);     //少し後退
05.jpg
  OnRev(OUT_A);    //向きを変更
  OnFwd(OUT_C);
  Wait(20);
  Off(OUT_A+OUT_C);
06.jpg
while(SENSOR_1==0)       //側面のタッチセンサーが押されるまで前進
  {OnFwd(OUT_A+OUT_C);}
  Off(OUT_A+OUT_C);
  
  OnRev(OUT_A);     //向きを変更
  OnFwd(OUT_C);
  Wait(75);
  Off(OUT_A+OUT_C);
  
07.jpg
  OnRev(OUT_B);     //ネットを上げる
  Wait(30);
  Off(OUT_B);
08.jpg
  OnFwd(OUT_A+OUT_C);    //ボールをゴールに押し込む
  Wait(20);
  Off(OUT_A+OUT_C);
09.jpg
repeat(3)      //この後は繰り返し  
{OnRev(OUT_A+OUT_C); //少し後退
  Wait(40);
  Off(OUT_A+OUT_C);
  
while(SENSOR_1==0) //側面のタッチセンサーが押されるまで回転
  {OnFwd(OUT_A);
  OnRev(OUT_C);}
  Off(OUT_A+OUT_C);
10.jpg
 OnFwd(OUT_B);    //ネットを下げる
  Wait(40);
  Off(OUT_B);
11.jpg
  OnRev(OUT_A+OUT_C); //後退
  Wait(60);
  Off(OUT_A+OUT_C);
12.jpg

この後は最初にゴールを入れた時と同じ動きをします。

  OnRev(OUT_A);    //向きを変更
  OnFwd(OUT_C);
  Wait(20);
  Off(OUT_A+OUT_C);
061.jpg
while(SENSOR_1==0)       //側面のタッチセンサーが押されるまで前進
  {OnFwd(OUT_A+OUT_C);}
  Off(OUT_A+OUT_C);
  
  OnRev(OUT_A);     //向きを変更
  OnFwd(OUT_C);
  Wait(75);
  Off(OUT_A+OUT_C);
  
071.jpg
  OnRev(OUT_B);     //ネットを上げる
  Wait(30);
  Off(OUT_B);
081.jpg
  OnFwd(OUT_A+OUT_C);    //ボールをゴールに押し込む
  Wait(20);
  Off(OUT_A+OUT_C);
091.jpg

なかにポのロボット

相方のロボットとは違い上からダンクシュートを狙うロボット
やろうと思えば横のゴールも決めれます。

本体

20080804180715.jpg

↓左右にキャタピラーを、そしてその間はボールが入るだけの空間を設け黄色いアームを回転させることができる。

20080804181124.jpg

↓ボールを二個ホールドしたまま移動が可能。
 強度やボールとの干渉を考えてギアを四つ用いて、遠くに設置されたモーターによって黄色いアームが回転する
 この回転機能により、ボールをロボット内に引き込み、そのまま持ち上げダンクシュートを決めることができる。
 ちなみに逆回転させれば横向きのゴールへへのシュートも可能 

20080804180746.jpg

↓回転する黄色のアーム。
 中心の飛び出たねずみ色のストッパーによって、ボールがすべり落ちず二個ホールドすることを可能にした。ちょっとした工夫でかなりの役目。
 ちまちましたねずみ色の突起物は地味であるが、これによりボールのホールド力がアップ。

20080804181519.jpg

↓キャタピラーは左右それぞれの上部に一個ずつ設置して、独立して稼動する。
 それぞれにモーターを用いることで、本体内部にシャフトを伸ばす必要がなくボールに干渉しない。
 はじめ上部のモーターをギアでキャタピラに伝えていたが、ギアが力に耐え切れずすぐ外れてしまった。そこでゴムによる駆動伝達に変更したところ問題解決。
 

20080804180929.jpg

↓すこしわかりにくいが、ボールがスムーズに持ち上がるように軌道上に突起物を設置。

20080804181505.jpg

センサ

20080804181026.jpg

回転センサを左キャタピラに設置これにより正確な移動が可能。

プログラム

#define fist 37
#define turn 8
#define second 32
#define third 2
#define force 34
#define fifth 27
#define last 1
#define go OnFwd(OUT_A+OUT_C);//前進
#define back OnRev(OUT_A+OUT_C)//後退
#define right OnRev(OUT_A);OnFwd(OUT_C);//右折
#define left OnFwd(OUT_A);OnRev(OUT_C);//左折
#define arm(t) OnFwd(OUT_B);Wait(t);Off(OUT_B);//アーム回転
 


task main()
 {
SetSensor(SENSOR_1,SENSOR_ROTATION);//SENSOR_1は回転センサと定義
 

while(true){
ClearSensor(SENSOR_1);  // 回転センサをリセット
go;//発進
until (SENSOR_1 >first );  // ボールの延長線上までくるまで待つ
 

ClearSensor(SENSOR_1);  // 回転センサをリセット
left;
until (SENSOR_1>turn);//九十度左回転し、ボールの延長線上に対して正面を向く
 

ClearSensor(SENSOR_1);  // 回転センサをリセット
go;
until(SENSOR_1>second);//ボールの手前まで発進
 

ClearSensor(SENSOR_1);  // 回転センサをリセット
arm(300);//ボールをひとつ捕獲
go;
until(SENSOR_1>third);//少し前に進み二つ目のボールの手前へ
arm(300);//ボールを二個目をゲット
 

ClearSensor(SENSOR_1);  // 回転センサをリセット
back;
until(SENSOR_1>force);//とりあえず後退する
 

ClearSensor(SENSOR_1);  // 回転センサをリセット
right;
until(SENSOR_1>turn);//九十度右回転
 

ClearSensor(SENSOR_1);  // 回転センサをリセット
go;
until(SENSOR_1>fifth);//ゴールの横まで直進
  

ClearSensor(SENSOR_1);  // 回転センサをリセット
right;
until(SENSOR_1>turn);//ゴールに対して正面を向く
 

ClearSensor(SENSOR_1);  // 回転センサをリセット
go;
until(SENSOR_1>last);//ちょっとだけ前に進んでゴールと密接する
  

arm(1000);//ダンクシュートをぶちかます。!!

簡単なルートの説明

bocon2008a.png

 

       

感想

とにかく本番の動きが残念でした。中央のセンサーがうまく作動せず、ただ直進するのみという動きしかできませんでした。
前の触覚(?)の部分とタッチセンサーの部分のつなぎ方がまずかったようで、真正面から当たらないとうまくセンサーが作動しないようでした。
ロボットの本体を作るのは最後まで得意にはなれませんでした。 ーふじ

最後の最後でテストの日を勘違いしてしまい、欠席してしまい相方に迷惑をかけてしまった。
プログラムの最後の微調整はできてなかったけど、成功する自身はあった
回転センサだよりの荒削りなプログラミングであるが、ロボット機構はシンプルかつ十分な働きをしていた。
ホント メンバーのみなさんごめんなさい。   なかにポ



添付ファイル: filebocon2008a.png 357件 [詳細] file20080804181026.jpg 403件 [詳細] file20080804181505.jpg 361件 [詳細] file20080804180929.jpg 341件 [詳細] file20080804181519.jpg 368件 [詳細] file20080804180746.jpg 339件 [詳細] file20080804181124.jpg 332件 [詳細] file20080804180715.jpg 320件 [詳細] file091.jpg 329件 [詳細] file081.jpg 350件 [詳細] file071.jpg 326件 [詳細] file061.jpg 345件 [詳細] file12.jpg 332件 [詳細] file11.jpg 336件 [詳細] file10.jpg 331件 [詳細] file09.jpg 326件 [詳細] file08.jpg 316件 [詳細] file07.jpg 330件 [詳細] file06.jpg 335件 [詳細] file05.jpg 327件 [詳細] file04.jpg 314件 [詳細] file03.jpg 337件 [詳細] file02.jpg 325件 [詳細] file01.jpg 319件 [詳細] file側面タッチセンサ2.jpg 336件 [詳細] file側面タッチセンサ1.jpg 334件 [詳細] file全体像3.jpg 314件 [詳細] file下から2改.jpg 338件 [詳細] file全体像.jpg 333件 [詳細] filerobocon2008a.png 321件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-08-10 (日) 18:21:44