2017a/Member/Kyou/Mission3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2017a/Member]]
目次
#contents
*課題について [#c3a9ed2f]
詳しくは課題([[2017a/Mission3]])を参照。赤矢印で示したよ...
&ref(2017a/Member/Kyou/Mission3/コース画像2.jpg,75%);
*ロボット本体 [#p69d1362]
**全体 [#m51fe129]
写真のようにロボット全体の構造として、正面から見るとシン...
&ref(2017a/Member/Kyou/Mission3/ロボット全体写真.jpg,75%);
**缶をつかむアーム部分 [#ncea1fca]
赤丸で示したところは積み上げた缶が倒れるのを防ぐための棒...
&ref(2017a/Member/Kyou/Mission3/缶をつかむアーム.jpg,75%);
**アーム全体 [#pa50d2ff]
アーム全体というのは写真の緑で囲んだ部分のことを言う。赤...
&ref(2017a/Member/Kyou/Mission3/アーム全体.jpg,75%);
**センサーの取り付け位置 [#n3eeacef]
アーム全体が上がっているときに超音波センサーが反応すれば...
&ref(2017a/Member/Kyou/Mission3/センサー取付位置.jpg,75%);
**缶を集める足の部分 [#od514884]
缶をつかむアーム部分が正確に缶のところに来るように赤丸で...
&ref(2017a/Member/Kyou/Mission3/缶を集める足部分.jpg,75%);
*プログラム [#g10ea93b]
**プログラムの全体概要 [#c8ff2a3d]
私達の班ではマスターとスレイブを通信させて缶をつかむロボ...
**定義 [#e819211d]
まず、今回のプログラムの中で使う頻度の高そうなものを定義...
#define THRESHOLD 50 //しきい値を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
**スレイブのプログラム [#i332b33c]
ファイル名「sss1.nxc」 これは缶をつかんで上げるプログラ...
Cがアーム全体を動かすモーターであり、Bが缶をつかむアーム...
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); //アーム全体が上がる
}
**マスターのプログラム [#n032f433]
task main()
{
SetSensorLight(S3);
SetSensorLowspeed(S1);
until(BluetoothStatus(1)==NO_ERR);
int nKan=0; //nKanとはつかんだ缶の個数
while (nKan < 2) { //つかんだ缶の個数が二個より少な...
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); //BとCを4...
Wait(6000);
nKan++; //プログラムを終了させるためのもの
}
}
while(nKan<3){ //つかんだ缶が三個より少ないとき
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++; //プログラムを終了させるためのもの
}
}
*ロボコン結果 [#k3586e86]
結果は予定通り二段積むことができた。たまたま交差点Tにある...
*感想 [#z5727667]
**今回の感想 [#x64724db]
今回はロボットの設計という点で一番苦労したと感じる。特に...
**この授業全体を通しての感想 [#u9961aa8]
正直、前期で一番大変だったのは必須の授業よりもこの授業だ...
終了行:
[[2017a/Member]]
目次
#contents
*課題について [#c3a9ed2f]
詳しくは課題([[2017a/Mission3]])を参照。赤矢印で示したよ...
&ref(2017a/Member/Kyou/Mission3/コース画像2.jpg,75%);
*ロボット本体 [#p69d1362]
**全体 [#m51fe129]
写真のようにロボット全体の構造として、正面から見るとシン...
&ref(2017a/Member/Kyou/Mission3/ロボット全体写真.jpg,75%);
**缶をつかむアーム部分 [#ncea1fca]
赤丸で示したところは積み上げた缶が倒れるのを防ぐための棒...
&ref(2017a/Member/Kyou/Mission3/缶をつかむアーム.jpg,75%);
**アーム全体 [#pa50d2ff]
アーム全体というのは写真の緑で囲んだ部分のことを言う。赤...
&ref(2017a/Member/Kyou/Mission3/アーム全体.jpg,75%);
**センサーの取り付け位置 [#n3eeacef]
アーム全体が上がっているときに超音波センサーが反応すれば...
&ref(2017a/Member/Kyou/Mission3/センサー取付位置.jpg,75%);
**缶を集める足の部分 [#od514884]
缶をつかむアーム部分が正確に缶のところに来るように赤丸で...
&ref(2017a/Member/Kyou/Mission3/缶を集める足部分.jpg,75%);
*プログラム [#g10ea93b]
**プログラムの全体概要 [#c8ff2a3d]
私達の班ではマスターとスレイブを通信させて缶をつかむロボ...
**定義 [#e819211d]
まず、今回のプログラムの中で使う頻度の高そうなものを定義...
#define THRESHOLD 50 //しきい値を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
**スレイブのプログラム [#i332b33c]
ファイル名「sss1.nxc」 これは缶をつかんで上げるプログラ...
Cがアーム全体を動かすモーターであり、Bが缶をつかむアーム...
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); //アーム全体が上がる
}
**マスターのプログラム [#n032f433]
task main()
{
SetSensorLight(S3);
SetSensorLowspeed(S1);
until(BluetoothStatus(1)==NO_ERR);
int nKan=0; //nKanとはつかんだ缶の個数
while (nKan < 2) { //つかんだ缶の個数が二個より少な...
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); //BとCを4...
Wait(6000);
nKan++; //プログラムを終了させるためのもの
}
}
while(nKan<3){ //つかんだ缶が三個より少ないとき
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++; //プログラムを終了させるためのもの
}
}
*ロボコン結果 [#k3586e86]
結果は予定通り二段積むことができた。たまたま交差点Tにある...
*感想 [#z5727667]
**今回の感想 [#x64724db]
今回はロボットの設計という点で一番苦労したと感じる。特に...
**この授業全体を通しての感想 [#u9961aa8]
正直、前期で一番大変だったのは必須の授業よりもこの授業だ...
ページ名: