- 追加された行はこの色です。
- 削除された行はこの色です。
*ロボットの説明 [#i3d957e8]
「里」という字を書くロボットを制作した。
#ref(2015a/Member/kaz/Mission1/IMG_20150605_161430.jpg,20%)
ロボットによって書かれた字は下の写真
#ref(2015a/Member/kaz/Mission1/IMG_20150611_102348.jpg,20%)
*ハードウェア [#w2a1392e]
モーターを3つ搭載しておりそれぞれのモーターに縦方向、横方向、アーム(ペン)の上げ下げについての役割を割り当てた。そのため縦方向と横方向が独立しているので制御がやりやすくなった。
**縦方向 [#z769e7b6]
縦方向には三輪の台車を制作し、その上にレールとアームを載せた。
**横方向 [#ze9bce59]
横方向にはアームを載せた台車を制作し、それを歯車を搭載したレールの上で動くようにした。
**アーム [#c79211be]
アームはモーターに直接つけるとペンの重さで滑ってしまうのでギアボックスを制作してトルクを大きくした。斜めに侵入するので短い縦線が入ってしまったので垂直に上下する機構にすればよかったのかもしれない。
*ソフトウェア [#r9a6d989]
サブルーチンを用いてプログラムを制作した。right()、left()は横方向に1単位量移動するプログラム、up()、down()は縦方向に単位量移動するプログラム、armup()、armdown()はアームを上げ下げするプログラムである。right()、left()、up()、down()を連続して書けば2倍、3倍の移動量にすることができる。repeat関数を用いてサブルーチン1つを繰り返すよりは、サブルーチンを2つ、3つ書いたほうがわかりやすいと感じたのでrepeat関数は使わなかった。アームを上げる前、アームを下げたあとは少し停止時間を入れて安定させた。
プログラムは以下
sub armup(){ //アームを上げる
Off(OUT_ABC);
Wait(50);
OnFwd(OUT_B);
Wait(10);
Off(OUT_B);
}
sub armdown(){ //アームを下げる
OnRev(OUT_B);
Wait(10);
Off(OUT_B);
Wait(50);
}
sub left(){ //左へ移動
OnRev(OUT_A);
Wait(10);
Off(OUT_A);
}
sub right(){ //右に移動
OnFwd(OUT_A);
Wait(10);
Off(OUT_A);
}
sub up(){ //上に移動
OnFwd(OUT_C);
Wait(10);
Off(OUT_C);
}
sub down(){ //下に移動
OnRev(OUT_C);
Wait(10);
Off(OUT_C);
}
task main(){
armdown(); //四角
down();
down();
right();
right();
up();
up();
left();
left();
armup(); //四角終わり
down();
armdown(); //横1
right();
right();
armup(); //横1終わり
up();
left();
armdown(); //縦
down();
down();
down();
down();
armup(); //縦終わり
up();
left();
armdown(); //横2
right();
right();
armup(); //横2終わり
down();
right();
armdown(); //横3
left();
left();
left();
left();
armup(); //おしまい
}