2008a/A10

目次

ロボコン

課題:ボール運搬ロボット †

テニスボールを所定の位置に運ぶ

フィールドの説明

コース

・フィールドは約160cm×110cm

・1000mlの紙パックは約7.1cm×7.1cm×19.6cm

・ゴールの紙パックには約6cm四方の穴が2箇所開けられている

・ゴールの穴以外の部分は黒で覆われている

・フィールドの長辺の中央部におかれたゴールの紙パックの穴は上を向いている

・フィールドの短辺の中央部におかれたゴールの紙パックの穴は横を向いている

・外側の楕円の長径は128cm、短径は96cm

・内側の8の字の曲線部の曲率半径は24cmで、交差部は直交している

・黒い線の太さは約25mm

ルール †

基本ルール

・ボールを 塔から それぞれ向きの違う棒に挟まれた状態から 運びだし、4箇所あるゴールの箱に入れる。

・競技時間は審判が続行不能と判断するまで、あるいはリタイアするまで。

・4隅のコーナー(半径30cmの1/4円)のいずれかからスタートする。

・スタート時のロボットは2個を越えないこと (スタート後はいくつに分裂してもかまわない)。

・開始の合図から5秒以内にRCXのスタートボタンを押す作業を完了すること。

・競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。

・途中でうまく動かなくなった場合、1回限り再スタートすることができる。

基本得点の計算方法

半分以上箱に入ったボールだけを得点の対象とする。

横から入れるゴールについてはボール1個2点、上から入れるゴールについては1個4点で計算する。ただし同じ箱に3個のボールを入れた場合には、その箱に限り点数を倍にする。

技術点の計算方法

以下の動作の精度・スピード・確実性などを含めた技術的な工夫や芸術性について他の全てのチーム(9チーム+TAor教員)が20点満点で採点し、その平均点を求める。

得点の目安:

・ボールを取り出す動作 (3点)

・ボールを運ぶ動作 (3点)

・ボールを紙パックに押し込む動作 (3点)

・2台以上のロボット、あるいは単体のロボットの場合は2台のRCXの連携の良さ(3点)

・自立型のロボットとしての形や動作の美しさ、斬新さ(3点)

・その他 (5点)

結果

ボールを入れることができたのは 10チーム中1チーム しかいなかった

自分たちのグループは入れることができないものの 6位 であった

マシンの紹介

2つのロボの連携を使いボールを入れるようにした

具体的なことは以下で説明する

親機

親機の役割

ボールの確保・ボール運び・ボール収納

親機の写真

全体

まずは全体図。 下の二枚の緑色の板は、機体が曲がるときにアームを引きずってしまいアームの位置が所定位置からずれるのを防ぐことを目的につけて、ついでにボールの固定やアームを下ろすときにスペース確保の尺、期待のバランスをとるなどいろいろと役に立ってくれる。 また前二つのローラーも曲がるときにアームを滑らせて滑らかにアームを動かす役目がある。

全体

アームを上下に動かす駆動系。何の変哲もないギアひとつ使ったもの。もう何個かつけたかったがスペースや重心、パーツの部数の都合でこうなった。

全体

ボールをアームごと床に押し付けることでアームを開かせ、上げるときは支点の移動でボールをはさめるようにした。これでエンジンひとつでボールを持ち上げ、また降ろすという行為をできるようにした。ボールを放すときはボールを掴むのと同様にアームを床に押し付けて開かせる。後は水平移動。 前方のローラー二つは掴んだボールをこぼさない役目もある。

全体

アームだけ見るとこうなる。シンプルだけど意外とボールを掴んだらはなさない。レールはできる限り長くすることでゴールより上にボールを持っていけるようにした。またアームがゆらゆら左右に揺れるから固定位置を増やした。(支点自体はひとつだからあまり意味はなかったが)

子機

子機の役割

ボール押し出し

子機の写真

全体

板の間を通らないといけないので極限まで細くした

全体

左右一つのモーターを使用し、細くさせた

全体

板の間に入るときにうまく入らなかったのでバンパーをつけて入りやすくさせた

全体

横についているタイヤはなぜか走らせた時に右へ曲がっていくロボをまっすぐ走らせるためのおもりとして使用し、前についているのはボールをしっかりつかまえるためにつけたものである

プログラム

コース

 1 → 2 → 3 → 4 の順でボールを置きに行くことにする

親機のプログラム

#define turn_time1 68                          //90度ターンする時間を定義
#define turn_time2 136                        //180度ターンする時間を定義
#define go_straight(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C); //直進することを定義
#define turn1(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);     //右へ向きを変えることを定義
#define turn2(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);     //左へ向きを変えることを定義
#define ball OnRev(OUT_B);Wait(80);Off(OUT_B);             //ボールをとる動作を定義
#define back(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);   //バックすることを定義

task main()
{
SetPower(OUT_A+OUT_C,7);                  //ギアを7へ変更
go_straight(95);                      //ボールがあるところへ移動
Wait(50);           
turn1(turn_time1);                   
go_straight(50);               

Wait(300);                         //子機がくるまで待つ
ball;                            //ボールを拾う
back(5);                         

Wait(100);                        //1へ
turn2(turn_time1);                    //箱があるところへ移動
go_straight(95);                    
turn2(turn_time1);                   
go_straight(50);                    

Wait(50);
SetPower(OUT_B,7);                   //ギアを7へ変更
OnRev(OUT_B);                      //ボールを箱の穴に入れる
Wait(120);
Off(OUT_B);
Wait(5);
OnRev(OUT_B);
Wait(10);
go_straight(20);
Wait(60);
Off(OUT_B);

Wait(100);                      //ボールがあるところへ戻る
turn2(turn_time1);
go_straight(100);
turn2(turn_time1);
go_straight(50);

Wait(200);                      //ボールをとる
ball;
back(5);

Wait(100);                                  //2へ
turn2(turn_time1);                   //箱のあるところへ移動
go_straight(100);
turn2(turn_time1);
go_straight(50);

Wait(50);
SetPower(OUT_B,7);                  
OnRev(OUT_B);                     //ボールを箱に入れる
Wait(120);
Off(OUT_B);
Wait(5);
OnRev(OUT_B);
Wait(10);
go_straight(20);
Wait(60);
Off(OUT_B);

Wait(100);                          
turn2(turn_time1);                    //ボールのあるところへ移動
go_straight(100);
turn2(turn_time1);
go_straight(50);

Wait(200);
ball;                           //ボールをとる
back(5);

Wait(100);                        //3へ
turn2(turn_time1);                    //箱があるところへ移動
go_straight(100);
turn1(turn_time1);
go_straight(350);

Wait(50);
SetPower(OUT_B,7);
OnRev(OUT_B);                       //ボールを箱に入れる
Wait(120);
Off(OUT_B);
Wait(5);
OnRev(OUT_B);
Wait(10);
go_straight(20);
Wait(60);
Off(OUT_B);

Wait(100);           
turn2(turn_time2);                     //ボールがあるところへ戻る
go_straight(350);
turn2(turn_time1);
go_straight(100);
turn2(turn_time1);

Wait(200);
ball;                          //ボールをとる
back(5);

Wait(100);                        //4へ
turn2(turn_time1);                    //箱があるところへ移動
go_straight(100);
turn1(turn_time1);
go_straight(350);

Wait(50);
SetPower(OUT_B,7);
OnRev(OUT_B);                       //ボールを箱に入れる
Wait(120);
Off(OUT_B);
Wait(5);
OnRev(OUT_B);
Wait(10);
go_straight(20);
Wait(60);
Off(OUT_B);               
 
}

子機のプログラム

コース
task main()
{
SetPower(OUT_A+OUT_C,4);         //ギアを4へ変更

OnFwd(OUT_A+OUT_C);             //前進
Wait(120);                 //前進する時間
Off(OUT_A+OUT_C);              //ストップ
Wait(150);                  //止まる時間
OnRev(OUT_C);OnFwd(OUT_A);         //左へ向きを変える
Wait(43);                  //回る時間
Off(OUT_A+OUT_C);              //ストップ
Wait(100); 
SetPower(OUT_A,5);              //ギアを5へ変更
OnFwd(OUT_A+OUT_C);             //前進
Wait(60);                   //前進する時間
Off(OUT_A+OUT_C);               //ストップ
Wait(300);                  //親機が位置つくまで待機
OnFwd(OUT_A+OUT_C);              //ボールを押し出す
Wait(40);                   //押し出す時間
Off(OUT_A+OUT_C);               //ストップ

Wait(3000);                   //親機がボールを置いて戻ってくるまで待機
OnFwd(OUT_A+OUT_C);              //ボールを押し出す
Wait(30);                    //ボールを押し出す時間
Off(OUT_A+OUT_C);                 //ストップ

Wait(3000);                   //親機がボールを置いて戻ってくるまで待機
OnFwd(OUT_A+OUT_C);              //ボールを押し出す
Wait(30);                    //ボールを押し出す時間
Off(OUT_A+OUT_C);                 //ストップ

Wait(3000);                   //親機がボールを置いて戻ってくるまで待機
OnFwd(OUT_A+OUT_C);              //ボールを押し出す
Wait(30);                    //ボールを押し出す時間
Off(OUT_A+OUT_C);                 //ストップ

}

苦労・工夫したところ

・子機をボールが入っている板の間にいれるのがうまくいかなかった ← 先生の バンパーみたいなのつけてみたら? の一言で解決でき、板の間に入れることがほぼ100%成功した

・ボールを横から押し込むタイプで作ったが、ボールがうまく入らないし跳ね返って外出てしまうということが起きた ← 上からの方が牛乳パックの上を転がって入る確率が上がることに気づき上からにした

感想

・どのようにやっていけばいいのかはっきりさせるのに時間かかってしまったことが一番の失敗だと思いました。ですが、チームプレイの大切さ、時間の使い方、とりあえずやってみる、などこのロボコンではいろんなことを学ばされました。 by 辻

・みんなの時間が合わなくて2人の作業になったりと大変ではあったけれど、ロボコンをちゃんとむかえられることができたのはとても嬉しかったです。 by 水上

・おおむね満足しています。ロボットに時間を結構費やせたし、ロボットの本体は形から駆動系までできる限り自分の発想を組み込めたので自分のやりたいことができるロボットにできたと思います。まあその分プログラムをないがしろにするのは自分の悪い癖ですが(笑)。今回ロボットの行う動作が多いので企画段階でモーターの個数が増えてしまい本体の使えるモーターの個数(3個)に愕然としたものです。制限されてもっとも効率的なロボの作り方の必要性を迫られて技術者の苦悩の片鱗を味わわせていただきました。いろいろと大変でしたけど面白かったです。 by 吉村

この作品に関してのコメント

何でもよろしいのでよろしくお願いします


訪問者 本日1 昨日1 合計&counter([total|today|yesterday]);


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-08-09 (土) 23:05:45