2017a/Member/tucky/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2017a/Member]]
目次
#contents
*課題3 [#l4b3b541]
空き缶を収集し、ゴールに空き缶をなるべく高く積み上げる
&ref(2017a/Member/tucky/Mission3/2017a-mission3.png,70%);
◦図のピンク色の場所に350mlの空き缶を置く
◦図のライトブルーの円のいずれか一箇所に中身の入った...
**基本ルール [#m4be1106]
◦競技時間は審判が続行不能と判断するまで、あるいはリ...
◦図のA地点または(および)PQRSで囲まれた中央部の円...
◦空き缶を集めて図のT地点を含む「ゴール」と書かれた3...
◦なるべく高く空き缶を積み上げる
◦運び終わった後、あるいは積み上げた後はロボットはゴ...
◦開始の合図から5秒以内にスタートボタンを押す作業を...
◦競技が終了するまで、ロボットに触ったり人間が遠隔で...
◦ロボットスタート後、速やかに1〜3の数字が記されたく...
◦途中でうまく動かなくなった場合、1回限り再スタート...
**基本得点の計算方法 (片道) [#c3e92ce2]
◦n段目の空き缶の点数を3n点とし、すべての空き缶の点...
◦中身の入った缶については、その缶自身を含め、その缶...
**技術点の計算方法 [#re4563eb]
以下の動作の精度・スピード・確実性などを含めた技術的な工...
◦空き缶を取りにいくまでの動作 (3点)
◦空き缶を掴む動作 (3点)
◦空き缶をを運ぶ動作(2点)
◦空き缶を積み上げる動作(5点)
◦2台のRCXまたはNXT、EV3の連携の良さ(3点)
◦自立型のロボットとしての形や動作の美しさ、斬新さ(2...
◦その他 (2点)
*ロボットの概要 [#zf4a59d7]
**全体 [#h6d084c6]
ロボットは最終的に次のような形になった。これはアーム部分...
&ref(2017a/Member/tucky/Mission3/DSC_0105.jpg,25%);
&ref(2017a/Member/tucky/Mission3/DSC_0108.jpg,25%);
先の方にアーム部分を付けただけだと重みで前に倒れてしまっ...
&ref(2017a/Member/tucky/Mission3/DSC_0109.jpg,30%);
**アーム部分 [#v1095c78]
アーム部分はモーターを回転させることで開閉する仕組みにな...
&ref(2017a/Member/tucky/Mission3/DSC_0110.jpg,30%);
**コックピット [#e900665e]
技術点の中にはロボットの見た目に関する評価も含まれていた...
&ref(2017a/Member/tucky/Mission3/DSC_0106.jpg,30%);
*プログラム [#s8d23517]
**プログラムの説明 [#s0818c21]
私たちの班は時間の都合上、缶を2段積むことにした。図のよ...
&ref(2017a/Member/tucky/Mission3/setumei.png,40%);
**マスターのプログラム [#t53d91cd]
#define THRESHOLD 50 //しきい値
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED, SPEED); //直進
#define go_back OnRL(-SPEED,-SPEED); //後退
#define turn_left1 OnRL(SPEED, -SPEED); //左に旋回
#define turn_left0 OnRL(SPEED, 0); //左にカーブ
#define turn_right0 OnRL(0, SPEED); //右にカーブ
#define turn_right1 OnRL(-SPEED, SPEED); //右に旋回
#define SPEED 45 //出力
task main()
{
SetSensorLight(S3); //光センサー
SetSensorLowspeed(S1); //超音波センサー
until(BluetoothStatus(1)==NO_ERR); //スレーブ側と...
int nKan=0; //掴んだ缶の個数
while (nKan < 2) { //掴んだ缶の個数が1個の時
while(SensorUS(S1)>15){ //センサーと缶との距離...
if (SENSOR_3 < THRESHOLD-10) {
turn_left1; //左に旋回
}
else {
if (SENSOR_3 < THRESHOLD-5) {
turn_left0; //左にカーブ
}
else if (SENSOR_3 < THRESHOLD+5) {
go_forward; //直進
}
else if (SENSOR_3 < THRESHOLD+10) {
turn_right0; //右にカーブ
}
else {
turn_right1; //右に旋回
}
}
Wait(1);
}
until(SensorUS(S1)<=12){ //センサーと缶との間の...
go_forward; //直進
}
if (SensorUS(S1)<=12){ //センサーと缶との間の距離...
Off(OUT_BC);
RemoteStartProgram(1,"sss1.rxe"); //スレーブ側に...
Wait(2000);
RotateMotorEx(OUT_BC,45,100,0,true,true); //缶を...
Wait(6000);
nKan++; //カウンタを増やす
}
}
while(nKan<3){ //掴んだ缶の個数が2個の時
RotateMotor(OUT_B,-SPEED,200); //ゴール方向に方向...
go_forward; //直進
Wait(2500);
Off(OUT_BC);
RemoteStartProgram(1,"sss2.rxe"); //スレーブ側に...
Wait(5000);
go_back; //後退
Wait(3000);
Off(OUT_BC);
nKan++; //プログラムを終了させるためにカウンタ...
}
}
**スレーブのプログラム [#n94b01d0]
ファイル名「sss1.nxc」(缶を掴む&持ち上げる)
task main()
{
RotateMotor(OUT_C,-30,30); //落差軽減のためにアー...
RotateMotor(OUT_B,30,30); //アームを開く
RotateMotor(OUT_C,-30,150); //アームを下げる
Wait(2000);
OnFwd(OUT_B,-30); //缶を掴む
Wait(3000);
Off(OUT_B);
RotateMotor(OUT_C,50,180); //アームを上げる
}
ファイル名「sss2.nxc」(缶を置く)
task main()
{
RotateMotor(OUT_C,-30,180); //アームを下げる
RotateMotor(OUT_B,30,90); //アームを開く
}
*結果 [#c10736a9]
缶を2段積むことに成功した。それと「元からゴールのラインに...
*感想 [#i9783ca2]
最初は缶を3段積む予定だったが、時間をあまり取ることが出...
終了行:
[[2017a/Member]]
目次
#contents
*課題3 [#l4b3b541]
空き缶を収集し、ゴールに空き缶をなるべく高く積み上げる
&ref(2017a/Member/tucky/Mission3/2017a-mission3.png,70%);
◦図のピンク色の場所に350mlの空き缶を置く
◦図のライトブルーの円のいずれか一箇所に中身の入った...
**基本ルール [#m4be1106]
◦競技時間は審判が続行不能と判断するまで、あるいはリ...
◦図のA地点または(および)PQRSで囲まれた中央部の円...
◦空き缶を集めて図のT地点を含む「ゴール」と書かれた3...
◦なるべく高く空き缶を積み上げる
◦運び終わった後、あるいは積み上げた後はロボットはゴ...
◦開始の合図から5秒以内にスタートボタンを押す作業を...
◦競技が終了するまで、ロボットに触ったり人間が遠隔で...
◦ロボットスタート後、速やかに1〜3の数字が記されたく...
◦途中でうまく動かなくなった場合、1回限り再スタート...
**基本得点の計算方法 (片道) [#c3e92ce2]
◦n段目の空き缶の点数を3n点とし、すべての空き缶の点...
◦中身の入った缶については、その缶自身を含め、その缶...
**技術点の計算方法 [#re4563eb]
以下の動作の精度・スピード・確実性などを含めた技術的な工...
◦空き缶を取りにいくまでの動作 (3点)
◦空き缶を掴む動作 (3点)
◦空き缶をを運ぶ動作(2点)
◦空き缶を積み上げる動作(5点)
◦2台のRCXまたはNXT、EV3の連携の良さ(3点)
◦自立型のロボットとしての形や動作の美しさ、斬新さ(2...
◦その他 (2点)
*ロボットの概要 [#zf4a59d7]
**全体 [#h6d084c6]
ロボットは最終的に次のような形になった。これはアーム部分...
&ref(2017a/Member/tucky/Mission3/DSC_0105.jpg,25%);
&ref(2017a/Member/tucky/Mission3/DSC_0108.jpg,25%);
先の方にアーム部分を付けただけだと重みで前に倒れてしまっ...
&ref(2017a/Member/tucky/Mission3/DSC_0109.jpg,30%);
**アーム部分 [#v1095c78]
アーム部分はモーターを回転させることで開閉する仕組みにな...
&ref(2017a/Member/tucky/Mission3/DSC_0110.jpg,30%);
**コックピット [#e900665e]
技術点の中にはロボットの見た目に関する評価も含まれていた...
&ref(2017a/Member/tucky/Mission3/DSC_0106.jpg,30%);
*プログラム [#s8d23517]
**プログラムの説明 [#s0818c21]
私たちの班は時間の都合上、缶を2段積むことにした。図のよ...
&ref(2017a/Member/tucky/Mission3/setumei.png,40%);
**マスターのプログラム [#t53d91cd]
#define THRESHOLD 50 //しきい値
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED, SPEED); //直進
#define go_back OnRL(-SPEED,-SPEED); //後退
#define turn_left1 OnRL(SPEED, -SPEED); //左に旋回
#define turn_left0 OnRL(SPEED, 0); //左にカーブ
#define turn_right0 OnRL(0, SPEED); //右にカーブ
#define turn_right1 OnRL(-SPEED, SPEED); //右に旋回
#define SPEED 45 //出力
task main()
{
SetSensorLight(S3); //光センサー
SetSensorLowspeed(S1); //超音波センサー
until(BluetoothStatus(1)==NO_ERR); //スレーブ側と...
int nKan=0; //掴んだ缶の個数
while (nKan < 2) { //掴んだ缶の個数が1個の時
while(SensorUS(S1)>15){ //センサーと缶との距離...
if (SENSOR_3 < THRESHOLD-10) {
turn_left1; //左に旋回
}
else {
if (SENSOR_3 < THRESHOLD-5) {
turn_left0; //左にカーブ
}
else if (SENSOR_3 < THRESHOLD+5) {
go_forward; //直進
}
else if (SENSOR_3 < THRESHOLD+10) {
turn_right0; //右にカーブ
}
else {
turn_right1; //右に旋回
}
}
Wait(1);
}
until(SensorUS(S1)<=12){ //センサーと缶との間の...
go_forward; //直進
}
if (SensorUS(S1)<=12){ //センサーと缶との間の距離...
Off(OUT_BC);
RemoteStartProgram(1,"sss1.rxe"); //スレーブ側に...
Wait(2000);
RotateMotorEx(OUT_BC,45,100,0,true,true); //缶を...
Wait(6000);
nKan++; //カウンタを増やす
}
}
while(nKan<3){ //掴んだ缶の個数が2個の時
RotateMotor(OUT_B,-SPEED,200); //ゴール方向に方向...
go_forward; //直進
Wait(2500);
Off(OUT_BC);
RemoteStartProgram(1,"sss2.rxe"); //スレーブ側に...
Wait(5000);
go_back; //後退
Wait(3000);
Off(OUT_BC);
nKan++; //プログラムを終了させるためにカウンタ...
}
}
**スレーブのプログラム [#n94b01d0]
ファイル名「sss1.nxc」(缶を掴む&持ち上げる)
task main()
{
RotateMotor(OUT_C,-30,30); //落差軽減のためにアー...
RotateMotor(OUT_B,30,30); //アームを開く
RotateMotor(OUT_C,-30,150); //アームを下げる
Wait(2000);
OnFwd(OUT_B,-30); //缶を掴む
Wait(3000);
Off(OUT_B);
RotateMotor(OUT_C,50,180); //アームを上げる
}
ファイル名「sss2.nxc」(缶を置く)
task main()
{
RotateMotor(OUT_C,-30,180); //アームを下げる
RotateMotor(OUT_B,30,90); //アームを開く
}
*結果 [#c10736a9]
缶を2段積むことに成功した。それと「元からゴールのラインに...
*感想 [#i9783ca2]
最初は缶を3段積む予定だったが、時間をあまり取ることが出...
ページ名: