[[2017a/Member]]

目次
#contents
*課題 [#i9b75c28]
#ref(./2017a-mission2.png,80%)
上の図のようなコースを各チームで作成し、「ミッション」を遂行するためのロボットを作成する。

次のいずれかの経路を黒い線にそって動くロボットを作成する (他のメンバーとは別の経路になるようにする)。

**E地点直進コース [#p0703de6]
Aスタート

E直進

F(SOUND_UP)

Q一時停止(SOUND_DOWN)&左折

R直進(SOUND_UP)

S左折(SOUND_UP)

G(SOUND_UP)

H(SOUND_UP)

T一時停止(SOUND_DOWN)&直進

T一時停止(SOUND_DOWN)&直進

R一時停止(SOUND_DOWN)&左折

S直進(SOUND_UP)

P左折(SOUND_UP)

E一時停止(SOUND_DOWN)&左折

A停止(SOUND_DOWN)

**E地点右折コース [#r641dda1]
E右折(SOUND_UP)

P一時停止(SOUND_DOWN)&左折

Q(SOUND_UP)&直進

R(SOUND_UP)&左折

T一時停止(SOUND_DOWN)&直進

T一時停止(SOUND_DOWN)&直進

H(SOUND_UP)

G(SOUND_UP)

S一時停止(SOUND_DOWN)&左折

P直進(SOUND_UP)

Q左折(SOUND_UP)

F(SOUND_UP)

E直進

A停止(SOUND_DOWN)

**注意点 [#f1646298]
なるべく速く正確に動くロボットになるように工夫すること。

一時停止の交差点および丁字路ではSOUND_DOWNを鳴らした後、1秒間停止すること。

直角コーナーおよび一時停止が不要は丁字路ではSOUND_UPを鳴らし、停止しないで進むこと。

ロボットはサイズは、幅15cm長さ18cm以内とする(高さは無制限)。

交差点、丁字路、直角コーナーについては、差し掛かった時点で判別するものとし、

予め設定した走行時間のみで判定したり、走行距離のみで判定してはならない。

**自分のコースについて [#ibdbe495]
ペアの友達と話し合って自分はE地点直進コースに決定した。

*ロボットの概要 [#w854cc96]
**本体 [#k9d3a458]
#ref(./車体改.jpg,120%)

NXTの組み立てガイドに掲載されている通りのロボットを組み立て、光センサーを取り付けた。

進行方向右側の車輪をCスロット、左側の車輪をAスロットに接続し、光センサーを2スロットに取り付けた。

**光センサー部位 [#e16f6284]
#ref(./工夫改.jpg,120%)

光センサーができるだけ地面に近くなるように取り付けた。

*プログラムについて[#o787cae9]

**目標としたこと・注意点 [#ede201d5]
E~F,G~H地点の間にある急カーブを曲がり切ることが困難であるので、ロボットのタイヤを左右別々に動かすことでロボットの回転軸をずらし、

曲がり切ることができるようにプログラミングをする。

*プログラム [#c3971973]

**サブルーチン・定義 [#o8f5b319]
 #define WHITE 61  //域値を4つ用意。GLAYOはGLAYIより白い域に近い。
 #define GLAYO 49
 #define GLAYI 43
 #define BLACK 33

 #define GS OnFwd(OUT_AC,50); // 直進
 #define curve_left OnFwd(OUT_A,-25);OnFwd(OUT_C,50); // 左旋回
 #define turn_left OnFwd(OUT_A,25);OnFwd(OUT_C),50; // 左折
 #define turn_right OnFwd(OUT_A,50);OnFwd(OUT_C,25);  // 右折
 #define curve_right OnFwd(OUT_A,50);OnFwd(OUT_C,-25); // 右旋回

 #define STEP 1 // 1回の判断で動く時間

 task LTL()
 {
  SetSensorLight(S2);
  while (true) {
    if (SENSOR_2 < BLACK ) {
      curve_left;
    } else if (SENSOR_2 < GLAYI) {
      turn_left;
    } else if (SENSOR_2 < GLAYO) {
      GS;
    } else if (SENSOR_2 < WHITE) {
      turn_right;
    } else {
      curve_right;
    }
    Wait(STEP);
  }
 } Off(OUT_AC);



**メインタスク [#z8964313]



*まとめ [#l7950dd6]

**反省・感想 [#z1b31e1c]



**再度挑戦する際には [#ia3730f3]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS