[[2015a/Member]]
*N6班書道ロボット 目次 [#bb4bd29b]
#contents
*目的 [#ge0310ac]
名前のうち一語(今回は「吾」)をプログラミングによって自律的に描くロボットを作製し、実際に文字を書かせる。
&ref(2015a/Member/Katuu/Mission1/吾.png,50%);
*ロボットの説明 [#wbd22fed]
&ref(2015a/Member/Katuu/Mission1/全体 修正.JPG,50%);
本体となるロボットは縦方向にのみ動き、横に伸ばしたアームの伸縮によって横方向に移動、アームの先のモーターによって筆の上げ下ろしを行う仕組み。
**本体 [#wf64b665]
&ref(2015a/Member/Katuu/Mission1/本体 修正.JPG,10%);
重いアームを伸縮させるためバランスが崩れやすいため、キャスター2つを付け4つの支点を設け、上部に主機を置き重しにする事によって本体を安定させている。中段にはアーム伸縮用の空間が空けてある。
**アーム [#q7889e6b]
&ref(2015a/Member/Katuu/Mission1/アーム 修正.JPG,50%);
先端にモーターを取り付け2つのギアによって筆の上下を行う機構を持つ。伸縮は本体のモーターの車輪によりレールを移動させて行う。モーターを上に配置し、しっかりと押し付ける事によってアームが垂れ下がらないようになっている。
*製作過程 [#yd69e7f9]
今回のロボットは「次の課題にも生かせるロボットにしよう。」「かっこいいロボットにしよう!」ということがコンセプトだった。
LEFT:縦、横、上下の動きをそれぞれを各モーターに担当させることはすぐに決まったが、ロボットの不安定さ、傾きが課題だった。ここでは、途中に経た失敗作も説明する。
**第一号ロボット(失敗作) [#q62ff04c]
&ref(2015a/Member/Katuu/Mission1/旧式 修正.JPG,15%);
ギアを噛み合わせて筆のついた上部を上下させプーリーを使って押し出す機構を持っていたが上部が重過ぎ水平にならず上下移動も安定しなかったため、解体した。
**第二号ロボット [#mee05b5a]
&ref(2015a/Member/Katuu/Mission1/新式.JPG,50%);
失敗を踏まえて、アームを上下から挟み込んでしっかり固定し機構を単純化して軽くし、本体も骨太にして主機を上に置いて重しにし4つの支点で支えることで安定させることに成功した。
*ロボットの動作、プログラミングの説明 [#u943141e]
&ref(2015a/Member/Katuu/Mission1/書き順.JPG,50%);
LEFT: #define UP RotateMotor(OUT_C,50,40); 筆を上げる動作
LEFT: #define DOWN RotateMotor(OUT_C,-50,40); 筆を下す動作
LEFT: #define YOKO_S RotateMotor(OUT_B,-50,95); 短い横棒を描く動作
LEFT: #define MODOSI RotateMotor(OUT_B,50,30); �,料犧遒慮緝�を戻す動作
LEFT: #define TATE RotateMotor(OUT_A,50,50);Off(OUT_A); 縦棒全般の動作
LEFT: #define RevTATE RotateMotor(OUT_A,-50,15);Off(OUT_A); 縦棒と同じ棒を逆から描く動作
LEFT: task main ()
LEFT: {
LEFT: RotateMotor(OUT_B,-50,20); 位置を調節
LEFT: DOWN; 書き始め
LEFT: YOKO_S; �。渦萍棔 �
LEFT: UP; 筆を上げて
LEFT: MODOSI; 2画目の位置まで戻す
LEFT: DOWN;
LEFT: TATE; �■臆萍�
LEFT: UP;
LEFT: RotateMotor(OUT_A,-50,5); 3画目の高さにそろえ
LEFT: RotateMotor(OUT_B,-50,30); 横の位置をそろえる
LEFT: DOWN;
LEFT: RotateMotor(OUT_B,50,70); ��3画目 横
LEFT: RotateMotor(OUT_A,50,30); 縦
LEFT: Off(OUT_A);
LEFT: UP;
LEFT: RotateMotor(OUT_B,-50,90); 4画目の位置にそろえる
LEFT: DOWN;
LEFT: RotateMotor(OUT_B,50,155); �ぃ寛萍棔,海海泙任如峺磧廚�完成
LEFT: UP;
LEFT: RotateMotor(OUT_B,-50,130); 5画目の横の位置をそろえ
LEFT: RotateMotor(OUT_A,50,40); 縦の位置をそろえる
LEFT: DOWN;
LEFT: TATE; �ィ飢萍�
LEFT: RotateMotor(OUT_B,50,90); �Γ恐萍�
LEFT: RevTATE; �В群萍�
LEFT: RotateMotor(OUT_B,-50,90); �┌顕萍�
LEFT: RotateMotor(OUT_B,-50,90); �┌顕萍棔 峺�」完成!
LEFT: UP; 終了
LEFT: }
最初は通常のモーターの動作を利用していたため、電池残量や上下による負荷の違いから誤差が大きくなりすぎ文字が書けなかったがサーボモーターを利用することで誤差が小さくなり安定して文字が書けるようになった。本体の重みで動作終了後
*結果 [#nebb257b]
&ref(2015a/Member/Katuu/Mission1/吾 修正.JPG,80%);
習字で描いたような止めやはらいのついた良い漢字となった、反動によって2画目に跳ねができてしまっていること、3画目が突き抜けてしまっていることはまだ修正の余地がある。
*感想・考察 [#ae342bf8]
想像以上に正確な動きをするロボットが難しかった。動いた後反動で少し戻る動きによりできる跳ねや、筆の上げ下ろしを繰り返すと、徐々に筆圧が強くなったり、逆に離れていってしまったりした。
その為、書き順を変えて筆の上げ下ろしの回数を減らし、最初の状態を別のプログラムによって調整し、試行を繰り返しそれから得られたデータを基に修正や工夫を繰り返した。
そのおかげでだんだんと「吾」と判別できる文字を書けるようになっていったが。数文字書くだけで誤差が拡大して書けなくなってしまう問題もあり、理想には遠く及ばなかった。
その原因としては、ロボットが重過ぎたことや、アームにたわみが生じてしまうことによって誤差が生まれやすかったことがあげられる。この問題を解決できていたなら、よりきれいな文字を何度も書くことができていただろう。次はすぐに問題を解決できるように様々角度から考えたい。
今回のミッションを終えて思ったことは、私たちの班は他班に比べてロボットの作成に時間をかけすぎ細部の調整やプログラミングの吟味が足りなかったということだった。かっこいいロボットにはなったが試行の結果わかった問題を解決しきれなかった。次回には全体的に考えて作成と試行のバランスをとるようにしたい。