- 追加された行はこの色です。
- 削除された行はこの色です。
*ロボットの説明 [#i3d957e8]
「里」という字を書くロボットを制作した。
#ref(2015a/Member/kaz/Mission1/IMG_20150605_161430.jpg,20%)
ロボットによって書かれた字は下の写真
#ref(2015a/Member/kaz/Mission1/IMG_20150611_102348.jpg,20%)
*ハードウェア [#w2a1392e]
モーターを3つ搭載しておりそれぞれのモーターに縦方向、横方向、アーム(ペン)の上げ下げについての役割を割り当てた。そのため縦方向と横方向が独立しているので制御がやりやすくなった。マイコンは可動部分に置かず地面においた。縦方向にはタイヤで移動する。横方向には台車の上に設置した横移動用の機構(平面型のギアを台車に固定しアーム自体を移動するようにしたもの)を載せた。アームはモーターに直接つけるとペンの重さで滑ってしまうのでギアボックスを制作してトルクを大きくした。
*ソフトウェア [#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(); //おしまい
}
*工夫した点 [#b1a4da79]
+横方向と縦方向の移動を独立させたことによりプログラムを簡単にした。
+長いコードを使用し、マイコン部分を車体から独立させてスペースを開けることにより設計が簡単になった。
*苦労した点 [#ke18effe]
+横移動の機構の噛合がうまく行かなかったのでギアボックスにおもりとなるブロックを付けて重心の位置を調整した。
+4輪の台車の時はギアボックスが左右の端に来た時に車体が傾いたため、三輪の台車にしたら傾かなくなった。
+”里”の字はある長さの線の2倍、4倍の組み合わせで出来ているので上下左右単位量移動するサブルーチンを作ってそれを組み合わせて文字を書くプログラムを作った。
*反省点 [#y387a075]
+アームをおろした時に斜めに侵入するので短い縦線が入ってしまったので垂直に上下する機構にすればよかった。
+アームを下ろしてすぐ移動をすると線がずれたので一定時間停止してから動き出すプログラムにしたが、丸い点ができてしまった。