2013b/Member

目次

ロボットの説明

製作者

半分アメリカ人

機能

空き缶を持ち上げるにあたって、アームが空き缶をつかみ、アームがそれを持ち上げて、空き缶の真下にもう一つの空き缶が来るようにロボットが移動して空き缶を置くが重ねるときは上段の空き缶は下段の空き缶と同じ角度でないと崩れるので、空き缶をエレベーターのように一切傾けないで垂直に持ち上げる。 そこで、エレベーター・アームは100円ショップのミシン糸を利用してケーブル代わりにした。キットに附属されていた輪ゴムをつなげて持ち上げることはできるが、輪ゴムが切れるリスクを避けたかったので「キットに附属しているもの以外の部品を使わない」ルールを破った。結果的にエレベーター・アームの上下はスムーズに動かすことができたが、エレベーター・アームは地面に対して平行に動いたり、ひねることがあるのでエレベーター・アームの後部にケーブル(糸)を二ヶ所に通して、エレベーター・アームの無駄な動きをなくした。(写真一枚目参照)

ロボット

エレベーター・アームのケーブルを巻き上げる際は、確実に、そしてギアがスリップしないように、ギアダウンして固定した。(写真二枚目参照)

ロボット

このロボットには超音波センサーが搭載されていない。それには理由が二つあり、

  • 搭載すると、エレベーター・アームの邪魔になることが欠点となる。
  • そもそも必要がない。 これはロボットが出発する位置と空き缶の設置場所は定まっているのでどこに空き缶があるかを知る必要性がない。 なので、ロボットの前部にレールを付けて空き缶を三つ入れて確実に点を取ろうとした。(写真三枚目参照)
    ロボット

課題:空き缶収集&積み上げ

2台のロボットで空き缶を収集し、ゴールに空き缶をなるべく高く積み上げる

ロボット

フィールドの説明

  • フィールドは課題1で使用した紙を2枚つなぎ合わせる
  • 図のように空き缶を配置する(黄色)

ルール

基本ルール

  • 競技時間は審判が続行不能と判断するまで、あるいはリタイアするまで。
  • 図の左下の隅からスタートする。ロボットが紙からはみ出ない範囲で可能な限りに隅に配置する。
  • 空き缶を集めて図の「ゴール」と書かれた円弧と直線で囲まれる領域に空き缶を運ぶ
  • なるべく高く空き缶を積み上げる
  • 運び終わった後、あるいは積み上げた後はロボットはゴールの領域から外に出ること。また空き缶と接触していたはいけない。
  • 開始の合図から5秒以内にスタートボタンを押す作業を完了すること。
  • 競技が終了するまで、ロボットに触ったり人間が遠隔で操作してはならない。
  • 途中でうまく動かなくなった場合、1回限り再スタートすることができる(再スタートの際に別プログラムで起動してよい)。

基本得点の計算方法 (片道)

  • n段目の空き缶の点数を5n点とし、すべての空き缶の点数を合計する。
  • 例:7本の空き缶を3段と4段に分けて積んだ場合: (5+10+15)+(5+10+15+20)=80点

技術点の計算方法

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

得点の目安:

  • 空き缶を取りにいくまでの動作 (2点)
  • 空き缶を掴む動作 (4点)
  • 空き缶をを運ぶ動作(2点)
  • 空き缶を積み上げる動作(5点)
  • 2台のRCXまたはNXTの連携の良さ(3点)
  • 自立型のロボットとしての形や動作の美しさ、斬新さ(2点)
  • その他 (2点)

プログラム

定型文 †  #define THRESHOLD 45  #define SPEED_H 50 /* 速いスピード */  #define SPEED_L 40 /* 遅いスピード */  #define reset ResetTachoCount(OUT_AC);  #define go OnFwdSync(OUT_AC,SPEED_H,0);/* 直進 */  #define back OnFwdSync(OUT_AC,-SPEED_H,0); /* 後進 */  #define left OnFwdSync(OUT_AC,SPEED_L,100);/* 左旋回 */  #define H_left RotateMotorEx(OUT_AC,50,220,100,true,false); /* 半左回転 */  #define H_right RotateMotorEx(OUT_AC,50,180,-100,true,false);/* 半右回転 */  #define right OnFwdSync(OUT_AC,SPEED_L,-100);  #define reset ResetTachoCount(OUT_AC);

以上は車体部分の定型文である  #define tukamu OnFwd(OUT_C,50);Wait(2000);  #define hanasu OnRev(OUT_C,50);Wait(2000);  #define ageru RotateMotor(OUT_B,-40,1380);  #define sageru RotateMotor(OUT_B,40,1380);

以上はクレーン部分の定型文である 今回はNXTに付属されているサーボモータをフルに活用している サーボモータを使えば2つのモータの回転を同期させることができより正確に前進させることができる ↑ 動作1 †

reset;
go;
Wait (1500);
reset;
H_left;
right;
Wait(300);

動作1を行うために以上のプログラムを行う この動作で勢い余って缶を倒してしまうことが多く速度の調整が大変であった ↑ 動作2 †

back;
Wait (2500);
left;
Wait (400);
go;
Wait (7000);
Off(OUT_AC);

動作2を行うために以上のプログラムを行う 缶を一列にはさみながら前進する動きはサーボモータのおかげでかなり正確にできた ↑ 動作3 †

back;
Wait (2500);
left;
Wait (400);
go;
Wait (7000);
Off(OUT_AC);
Wait (6000);

これは車体部分のプログラムである

Wait (13000);
tukamu;
ageru;
Wait (6000);
hanasu;
sageru;

これはクレーン部分のプログラムである 以上2つのプログラムを同時に実行させて缶を積み上げる まずはクレーンが缶を掴み持ち上げ、車体が前進する。 さらに同じ動作をもう一回する

総括

今回の目標は一列にした缶を3段積むことだったが、その目標は達成できなかった。最大の敗因は、2つのNXTをうまく連携させれなかったことだ。結果的にはプログラミングにかける時間が足りなかった。今後はプロジェクトマネージメントをしっかりと意識して、課題をこなしていきたい。


添付ファイル: fileろぼ4.png 207件 [詳細] fileろぼ1.jpg 458件 [詳細] fileろぼ2.jpg 307件 [詳細] fileろぼ3.jpg 333件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-02-07 (金) 23:19:26