2015a/Member

書道ロボットR8班目次

課題内容

今回の課題は「書道ロボット」。 Mindstorms Robotics Invention System(以下RIS)を用いて自分の名前に含まれる漢字(7画以上)を書けという内容だった。

今回は自分の字の「忠」を選択した。

難点

  1. 縦線と横線の書き分け
  2. 小さすぎずに文字を書くこと
  3. 斜めの線
  4. 全体のバランス
  5. 見やすいプログラムで作成すること

ロボットの説明

難点1を克服するためにも、縦、横、ペンの操作と、3つのモーターを用いて役割を分担する方法を採用した。

そのため、今回作成したロボットは大まかに分けて4つの部分から成り立つ。

車体部分

body3.jpg body1.jpg body2.jpg

ポイント

  • モーターを1つ使い、縦移動を担当。
  • 左右のタイヤをつなぐことによって縦方向の安定した走りを実現。
  • RCXを左端に乗せることによりアームを取り付けた際にバランスを維持。
  • 後輪タイヤ横のL字ブロックでアーム土台を固定。

アーム

arm1.jpg arm3.jpg arm4.jpg

ポイント

  • モーターを1つ使い、ペンの上下を管理。
  • モーターに歯の数の多いギアをつないでペンの上下するスピードを低下。
  • 横に長い構造で可動範囲を増やすことによって難点2を克服。
  • サインペンをテープで巻いて固定。

アーム土台

arm_base1.jpg

ポイント

  • バランスの取れる上限までチューブを使い、アームの上下のブレを軽減。
  • チューブの凹凸の方向をアームの進行方向と平行にすることによってアームの動きを邪魔しない。
  • ストッパーをして強度の向上。

アーム稼働モーター

arm_motor1.jpg base_motor1.jpg base_motor2.jpg

ポイント

  • モーターを1つ使い、ペンの横移動を担当。
  • 左右からブロックで挟むことにより、アームの左右のブレをなくす。
  • ペン稼働モーターの余ったコードを邪魔にならないように括り付ける。
  • モーター後方にも添えブロックを置いて安定性とバランス力の向上。

ドッキング

アーム、アーム土台、アーム稼働モーターを組み合わせることにより下記のものが完成する。

docking1.jpg docking2.jpg

完成

上記の複合パーツ、車体部分を組み合わせることによって完成。

compleat1.jpg compleat2.jpg compleat3.jpg

プログラムの説明

実際のプログラム

#define WAIT_TIME 50
#define go_side(t) OnFwd(OUT_B);Wait(t);Off(OUT_B);
#define back_side(t) OnRev(OUT_B);Wait(t);Off(OUT_B);
#define go_length(t) OnFwd(OUT_C);Wait(t);Off(OUT_C);
#define back_length(t) OnRev(OUT_C);Wait(t);Off(OUT_C);
#define up_pen OnFwd(OUT_A);Wait(5);Off(OUT_A);
#define down_pen OnRev(OUT_A);Wait(5);Off(OUT_A);
#define wait Off(OUT_ABC);Wait(WAIT_TIME);

task main ()
{
	down_pen;
wait;
	go_side(25);
wait;
	back_length(10);
wait;
	back_side(25);
wait;
	go_length(10);
wait;
	up_pen;
	go_length(7);
wait;
	go_side(12);
wait;
	down_pen;
wait;
	back_length(24);
wait;
	up_pen;
wait;
	back_side(12);
wait;
	back_length(6);
	down_pen;
wait;
	repeat(2)
	{
		go_side(1);
		go_length(3);
	}
wait;
	up_pen;
wait;
	go_side(1);
	go_length(3);
wait;
	down_pen;
wait;
	back_length(15);
	go_side(20);
wait;
	up_pen;
wait;
	go_length(13);
	back_side(6);
wait;
	down_pen;
wait;
	back_length(10);
wait;
	up_pen;
wait;
	go_side(6);
wait;
	down_pen;
wait;
	go_length(8);
wait;
	up_pen;
}

使用した関数

#define WAIT_TIME 50
#define go_side(t) OnFwd(OUT_B);Wait(t);Off(OUT_B);
#define back_side(t) OnRev(OUT_B);Wait(t);Off(OUT_B);
#define go_length(t) OnFwd(OUT_C);Wait(t);Off(OUT_C);
#define back_length(t) OnRev(OUT_C);Wait(t);Off(OUT_C);
#define up_pen OnFwd(OUT_A);Wait(5);Off(OUT_A);
#define down_pen OnRev(OUT_A);Wait(5);Off(OUT_A);
#define wait Off(OUT_ABC);Wait(WAIT_TIME);
  1. 待機時間を0.5秒に設定。
  2. ペンをt/100秒右に移動。
  3. ペンをt/100秒左に移動。
  4. ペンをt/100秒前に移動。
  5. ペンをt/100秒後ろに移動。
  6. ペンを紙から離す。
  7. ペンを紙につける。
  8. 0.5秒待機。

1〜3画目

task main ()
{
	down_pen;
wait;
	go_side(25);
wait;
	back_length(10);
wait;
	back_side(25);
wait;
	go_length(10);
wait;
	up_pen;

ポイント

  • ペンの上下による多少のずれもなくすため、1〜3画目までは一筆書き。
  • 間に待機を入れることによって、角を際立たせた文字を作成する。

4画目

	go_length(7);
wait;
	go_side(12);
wait;
	down_pen;
wait;
	back_length(24);
wait;
	up_pen;

ポイント

  • 上から大胆に貫くことによって力強い字を描く。
  • 中として見たときに縦と横の割合を約1:1にすることで、心を足した後でバランスの良い字となる。

5画目

	back_side(12);
wait;
	back_length(6);
	down_pen;
wait;
	repeat(2)
	{
		go_side(1);
		go_length(3);
	}
wait;
	up_pen;

ポイント

  • 縦と横の線を待機を入れずに連続で引くことにより、難点3の斜めを描く。
  • ペンを右に移動させたほうがしっかりとした字を書けるので、左下からの始動。
  • repeat関数を用いて簡略化する。

6画目

	go_side(1);
	go_length(3);
wait;
	down_pen;
wait;
	back_length(15);
	go_side(20);
wait;
	up_pen;

ポイント

  • 5画目と同様待機を入れないことによって斜めを形成。
  • 横を広くとることによって、力強い字を描く。

7〜8画目

	go_length(13);
	back_side(6);
wait;
	down_pen;
wait;
	back_length(10);
wait;
	up_pen;
wait;
	go_side(6);
wait;
	down_pen;
wait;
	go_length(8);
wait;
	up_pen;
}

ポイント

  • 6画目の中に納まるように描くことによってバランスをとる。

完成

tyuu.jpg

反省

今回のロボット作成では、ペンを送り出した後の縦の線にぐらつきがあったため補強したかったものの、今度は車体のバランスが悪くなったりと、どこかを直しては、また問題が発生するという事態が多々おこった。まだまだ完璧な筆ロボットには程遠かったが、RISについてよく知ることができたと思う。

役割分担の方法を思いつく前にかなり迷走していたが、LEGOブロックをいじっているうちに突然ひらめくことができた。やはり、目的もなく組み合わせているだけでも何かがわかってくる。LEGOはそんなものなんだなと感じた。


添付ファイル: filetyuu.jpg 114件 [詳細] filecompleat3.jpg 67件 [詳細] filecompleat2.jpg 90件 [詳細] filecompleat1.jpg 88件 [詳細] filedocking2.jpg 95件 [詳細] filedocking1.jpg 88件 [詳細] filearm4.jpg 95件 [詳細] filearm3.jpg 118件 [詳細] filearm1.jpg 85件 [詳細] filebase_motor2.jpg 103件 [詳細] filebase_motor1.jpg 78件 [詳細] filearm_motor1.jpg 87件 [詳細] filearm_base1.jpg 83件 [詳細] filebody3.jpg 83件 [詳細] filebody2.jpg 103件 [詳細] filebody1.jpg 105件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-07-14 (火) 15:22:58 (1501d)