2018a/Member/Kkun/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
異種混合の缶のタワーを、整理するロボットを制作した。~
NXTは縦方向の動きを可能にするパーツがなかったため、缶を持...
下は今回のロボットの写真である~
&ref(2018a/Member/Kkun/Mission3/1534513131391.jpg,50%,課...
#contents
*遭遇した問題 [#u35c559d]
-NXTは縦方向の動きが出来ないため、タワーを再び積み直すこ...
-NXTには、動力用端子が3つしかない。~
そのため、本体1つだけでは、走る、缶を操作するの2つのこと...
*今回の工夫 [#aab45566]
NXTは縦方向に力を加えることができないので、缶のタワーを持...
一段目を別の枠内に、二段目を元の枠内に、三段目を一段目と...
自分たちのグループは、下の写真のように、タワーの処理を押...
&ref(2018a/Member/Kkun/Mission3/1534575052846.jpg,50%,押...
*足回り(親機) [#s972d01f]
今回のロボットの移動は、正確さを求められるため、距離、方...
直進はほぼ正確に動かすことができた。~
しかし、回転が曲者だった。~
同じ関数を使用しているのに、動作の前後で回る角度が異なる...
原因は、最初と最後で缶の重さが異なり、駆動輪に影響を及ぼ...
補正のプログラムを入れ、なんとか動かしたが、これでは困る...
*缶の操作(子機) [#q6972814]
子機による缶の操作は、ガイドの開閉、缶を押す、引くの4つで...
子機側の困難は、缶を押す/引くときに、押し出しが足りなけれ...
*考察 [#tcb90f32]
プログラムの最初と最後で回転角が異なる点についてだが、こ...
~
また、既存のパーツを変化させずに、使い方を変えるだけで、...
このように、頭を使って機械を応用するのは、将来必ず役立つ...
*まとめ [#s6d0618d]
結局、二つのタワーを処理することはできなかった。~
ロボコン当日は、家庭の用事で出ることが出来なかったが、練...
3種類のロボット制作を通じて、プログラミングの基礎と、ロ...
将来使うかどうかは判らないが、この授業のように一度でも学...
*プログラム [#b09acf99]
親機~
足回り 右 B 左 A
#define CONN 1 // slave num
#define CM (820/35) // rotate tacho / forward CM
void FWD(int x)
{
RotateMotorEx(OUT_AB, 60, x * CM, 0, true, true);
}
void turnR(int x)
{
RotateMotorEx(OUT_AB, 60, x * 215 / 100, 100, true, true);
}
void turnL(int x)
{
RotateMotorEx(OUT_AB, 60, x * 215 / 100, 100, true, true);
}
void turnL90()
{
RotateMotorEx(OUT_AB, 60, -125, 100, true, true);
}
void turnR90()
{
RotateMotorEx(OUT_AB, 60, 125, -100, true, true);
}
void turnR45()
{
RotateMotorEx(OUT_AB, 60, 70, -100, true, true);
}
task main()
{
until (BluetoothStatus(CONN) == NO_ERR);
RemoteStartProgram(CONN, "canrelease.rxe");
FWD(20);
Wait(100);
turnR90();
Wait(100);
FWD(23);
Wait(100);
RemoteStartProgram(CONN, "cancatch.rxe");//缶を掴む
Wait(3000);
FWD(30);
Wait(100);
RemoteStartProgram(CONN, "canpush.rxe");//1段目の缶を開放
Wait(2000);
FWD(-10);
turnR90();
Wait(100);
turnR90();
Wait(100);
RemoteStartProgram(CONN, "canpull.rxe");
Wait(2000);
RemoteStartProgram(CONN, "canpush.rxe");//2段めの缶を開放
Wait(2000);
Wait(100);
turnR90();
Wait(100);
turnR90();
Wait(100);
turnR90();
Wait(100);
FWD(10);
RemoteStartProgram(CONN, "canpull.rxe");
Wait(2000);
RemoteStartProgram(CONN, "canpush.rxe");
Wait(2000);
}
子機~
缶を押すプログラム
canpush.nxc
task main()
{RotateMotor(OUT_B, 30,-60);}
缶を押す機構を引くプログラム
canpull.nxc
task main()
{RotateMotor(OUT_B, 30,60);}
缶を掴むプログラム
cancatch.nxc
task main ()
{RotateMotor(OUT_A, 30, 175);}//缶キャッチ
缶を掴む機構を開放するプログラム
canrelease.nxc
task main()
{RotateMotor(OUT_A, 30, -173);//缶開放
}
終了行:
異種混合の缶のタワーを、整理するロボットを制作した。~
NXTは縦方向の動きを可能にするパーツがなかったため、缶を持...
下は今回のロボットの写真である~
&ref(2018a/Member/Kkun/Mission3/1534513131391.jpg,50%,課...
#contents
*遭遇した問題 [#u35c559d]
-NXTは縦方向の動きが出来ないため、タワーを再び積み直すこ...
-NXTには、動力用端子が3つしかない。~
そのため、本体1つだけでは、走る、缶を操作するの2つのこと...
*今回の工夫 [#aab45566]
NXTは縦方向に力を加えることができないので、缶のタワーを持...
一段目を別の枠内に、二段目を元の枠内に、三段目を一段目と...
自分たちのグループは、下の写真のように、タワーの処理を押...
&ref(2018a/Member/Kkun/Mission3/1534575052846.jpg,50%,押...
*足回り(親機) [#s972d01f]
今回のロボットの移動は、正確さを求められるため、距離、方...
直進はほぼ正確に動かすことができた。~
しかし、回転が曲者だった。~
同じ関数を使用しているのに、動作の前後で回る角度が異なる...
原因は、最初と最後で缶の重さが異なり、駆動輪に影響を及ぼ...
補正のプログラムを入れ、なんとか動かしたが、これでは困る...
*缶の操作(子機) [#q6972814]
子機による缶の操作は、ガイドの開閉、缶を押す、引くの4つで...
子機側の困難は、缶を押す/引くときに、押し出しが足りなけれ...
*考察 [#tcb90f32]
プログラムの最初と最後で回転角が異なる点についてだが、こ...
~
また、既存のパーツを変化させずに、使い方を変えるだけで、...
このように、頭を使って機械を応用するのは、将来必ず役立つ...
*まとめ [#s6d0618d]
結局、二つのタワーを処理することはできなかった。~
ロボコン当日は、家庭の用事で出ることが出来なかったが、練...
3種類のロボット制作を通じて、プログラミングの基礎と、ロ...
将来使うかどうかは判らないが、この授業のように一度でも学...
*プログラム [#b09acf99]
親機~
足回り 右 B 左 A
#define CONN 1 // slave num
#define CM (820/35) // rotate tacho / forward CM
void FWD(int x)
{
RotateMotorEx(OUT_AB, 60, x * CM, 0, true, true);
}
void turnR(int x)
{
RotateMotorEx(OUT_AB, 60, x * 215 / 100, 100, true, true);
}
void turnL(int x)
{
RotateMotorEx(OUT_AB, 60, x * 215 / 100, 100, true, true);
}
void turnL90()
{
RotateMotorEx(OUT_AB, 60, -125, 100, true, true);
}
void turnR90()
{
RotateMotorEx(OUT_AB, 60, 125, -100, true, true);
}
void turnR45()
{
RotateMotorEx(OUT_AB, 60, 70, -100, true, true);
}
task main()
{
until (BluetoothStatus(CONN) == NO_ERR);
RemoteStartProgram(CONN, "canrelease.rxe");
FWD(20);
Wait(100);
turnR90();
Wait(100);
FWD(23);
Wait(100);
RemoteStartProgram(CONN, "cancatch.rxe");//缶を掴む
Wait(3000);
FWD(30);
Wait(100);
RemoteStartProgram(CONN, "canpush.rxe");//1段目の缶を開放
Wait(2000);
FWD(-10);
turnR90();
Wait(100);
turnR90();
Wait(100);
RemoteStartProgram(CONN, "canpull.rxe");
Wait(2000);
RemoteStartProgram(CONN, "canpush.rxe");//2段めの缶を開放
Wait(2000);
Wait(100);
turnR90();
Wait(100);
turnR90();
Wait(100);
turnR90();
Wait(100);
FWD(10);
RemoteStartProgram(CONN, "canpull.rxe");
Wait(2000);
RemoteStartProgram(CONN, "canpush.rxe");
Wait(2000);
}
子機~
缶を押すプログラム
canpush.nxc
task main()
{RotateMotor(OUT_B, 30,-60);}
缶を押す機構を引くプログラム
canpull.nxc
task main()
{RotateMotor(OUT_B, 30,60);}
缶を掴むプログラム
cancatch.nxc
task main ()
{RotateMotor(OUT_A, 30, 175);}//缶キャッチ
缶を掴む機構を開放するプログラム
canrelease.nxc
task main()
{RotateMotor(OUT_A, 30, -173);//缶開放
}
ページ名: