2015a/Member/uchi/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*課題 [#h0b79946]
書道ロボットの製作し、7画以上の漢字を書く。詳しくは
[[課題1のページ>http://yakushi.shinshu-u.ac.jp/robotics/...
を参照。
私は涼という漢字を書くことにした。
*ロボット本体の説明 [#bd9a3611]
**ロボットの外観 [#z75277cb]
上から見た写真
#ref(edo_ue.jpg)
またこのロボットは役割ごとに下の写真のように4つに分解で...
#ref(edo_bunnkai.jpg)
?の部分で筆を上げ下げし、?の部分で横にペン先を動かし、?の...
こうすることでペン先はどの方向にも動かすことが出来るので...
それぞれのパーツについて仕組みと工夫した点を書いていく。
**?ペンを上げ下げするパーツ [#v86048ae]
?はペンを上げ下げするパーツである。
ペンを正回転させて、最下点で丁度紙にペン先がつくようにし...
また、最下点で止まるようにつっかえとして棒を突き出してい...
元々は垂直に上げ下げするようにしていたが、モーターの力と...
また、一番綺麗に文字が書けるペンを試行錯誤し、100円均一の...
#ref(edo_1.jpg)
**?横にペン先を動かすパーツ [#rcd5dbf3]
?は?を横に動かすパーツである。
このパーツではモーターを回転させることで、
下の写真の赤枠の部分が左右にスライドし、?を左右に動かす。
正回転で右に、負回転で左にスライドする
このパーツと、後に書く?のパーツについては特に文字を書く時...
#ref(edo_2.jpg)
**?縦にペン先を動かすパーツ [#k672a4db]
?は?を?ごと前後に動かすパーツである。
このパーツではモーターを回転させることで、
下の写真の赤枠の部分が左右にスライドし、?を?ごと前後に動...
正回転で前に、負回転で後ろにスライドする
このパーツも、前に書いた?のパーツ同様、特に文字を書く時大...
また、可動部の下の部分が紙のふちに引っかかりやすかったの...
#ref(edo_3.jpg)
**?コンピューター置き場兼すべり止め [#gea9bcba]
?はロボットを置く場所をしつつ、裏側に下の写真のように6個...
?はそもそも只のコンピューター置き場であったが、いざ起動し...
#ref(edo_4.jpg)
*プログラムの説明 [#e7dae3ec]
**プログラムのそれぞれの説明 [#e884f45f]
***それぞれのモーターの回転方向とペンの動く向き [#ya5cf7c2]
ペン先の動きとそれぞれのモーターは次のような関係にある。
モーターAはペンの上げ下げ、モーターBはペンの前後、モータ...
***初期位置 [#i17d280f]
書き始めの位置を一定にするために下のような、ペンを左上に...
この時同時にモーターのパワーの調整もするようにしている。
また、書いている途中で一旦初期位置にペンを持っていくこと...
sub syoki() //初期位置(左上)にペンを持って...
{
SetPower(OUT_A,1);
SetPower(OUT_B,3);
SetPower(OUT_C,3);
OnRev(OUT_A);
Wait(5);
Off(OUT_A);
OnFwd(OUT_B);
OnRev(OUT_C);
Wait(100);
Off(OUT_BC);
}
***8方向のペンの移動 [#c9a8f71a]
ペンを8方向で(45°づつ360°) 好きな時間だけ動かせるように8...
次は右下に動かすための関数である。
void migisita (int t) //ペンを右下に45度t秒動かす
{
OnFwd(OUT_C);
OnRev(OUT_B);
Wait(t);
Off(OUT_BC);
}
***文字を書いているか書いてないかの区別 [#x168e68d]
ペンで文字を書くときと書かない状態にするためにそれぞれマ...
文字を書き始めるためにまずモーターAを正回転させて、書いて...
#define kakidasi OnFwd(OUT_A);Wait(10); //...
#define kakiyame OnRev(OUT_A);Wait(5);Off(OUT_A); //...
***文字を書くプログラム [#ybc41b6a]
後で説明する方法を利用して文字を8方向のペンの動きと、ペン...
そして、それに対応して関数を並べていく。
**使用したプログラム(全て) [#x752e646]
sub syoki() //初期位置(左上)にペンを持って...
{
SetPower(OUT_A,1);
SetPower(OUT_B,3);
SetPower(OUT_C,3);
OnRev(OUT_A);
Wait(5);
Off(OUT_A);
OnFwd(OUT_B);
OnRev(OUT_C);
Wait(100);
Off(OUT_BC);
}
void migisita (int t) //ペンを右下に45度t秒動かす
{
OnFwd(OUT_C);
OnRev(OUT_B);
Wait(t);
Off(OUT_BC);
}
void hidarisita(int t) //ペンを左下に45度t秒動かす
{
OnRev(OUT_BC);
Wait(t);
Off(OUT_BC);
}
void sita(int t) //ペンを下にt秒動かす
{
OnRev(OUT_B);
Wait(t);
Off(OUT_B);
}
void ue(int t) //ペンを上にt秒動かす
{
OnFwd(OUT_B);
Wait(t);
Off(OUT_B);
}
void migi (int t) //ペンを右にt秒動かす
{
OnFwd(OUT_C);
Wait (t);
Off (OUT_C);
}
void hidari (int t) //ペンを左にt秒動かす
{
OnRev(OUT_C);
Wait (t);
Off (OUT_C);
}
void migiue (int t) //ペンを右上に45度t秒動かす
{
OnFwd(OUT_BC);
Wait(t);
Off(OUT_BC);
}
void hidariue (int t) //ペンを左上に45度t秒動かす
{
OnRev(OUT_C);
OnFwd(OUT_B);
Wait(t);
Off(OUT_BC);
}
#define kakidasi OnFwd(OUT_A);Wait(10); //...
#define kakiyame OnRev(OUT_A);Wait(5);Off(OUT_A); //...
task main()
{
syoki ();
migi (5); //さんずいの書き始めの位置にペン...
sita (10);
kakidasi; //さんずい1画目
migisita(10);
kakiyame;
hidari (10); //さんずいの2画目にペンを移動
kakidasi; //さんずい2画目
migisita(10);
kakiyame;
hidari (10); //さんずいの3画目にペンを移動
sita (20);
kakidasi; //さんずい3画目
migiue (10);
kakiyame;
syoki (); //亠の書き始めの位置にペンを移動
migi (30);
kakidasi; //亠を一気に書く
sita (10);
migi (15);
hidari (30);
kakiyame;
sita (5); //口の書き初めの位置にペンを移動
kakidasi; //口を一気に書く
sita (15);
migi (30);
ue (15);
hidari (30);
kakiyame;
migi (15); //小の書き始めの位置にペンを移動
sita (15);
kakidasi; //小1画目
sita (20);
kakiyame;
ue (15); //小の2画目の位置にペンを移動
hidari (10);
kakidasi; //小2画目
hidarisita (15);
kakiyame; //小の3画目の位置にペンを移動
migi (25);
ue (15);
kakidasi; //小3画目
migisita (15);
kakiyame;
}
*文字を書くためにした工夫 [#cd01f1db]
おおよそのロボット本体とプログラムについては説明を終えた...
**関数に入れる時間tと線の長さ [#be28d3c2]
今まで授業で扱ってきたロボットと挙動が大きく違うロボット...
task main()
{
syoki ();
kakidasi;
repeat(10)
{
sita(10);
Wait (10);
ue (10);
Wait (10);
migi (10);
Wait (10);
}
repeat (10)
{
hidari (10);
Wait (10);
migi (10);
Wait (10);
sita (10);
Wait (10);
}
}
これは関数のt=10(0.1秒)ごとに縦横に線を引くプロ...
#ref(kakerukun.jpg)
これより、一目盛り分の長さの線を引くには関数のt=10に...
**文字を書くための下書き [#i3fc0e2d]
先ほどの目盛りを使用して文字を書くことで、長さを関数の時...
#ref(kakerukun2.jpg)
太い線は紙にペンをつけて書く場所、細い矢印は紙にペンを付...
こうすることで、ペンを紙につけるタイミング、移動させる時...
**綺麗に書くための工夫 [#q9249fcc]
このロボットはペン先が円を描いて紙につくため、わずかに書...
*書道ロボットの書いた文字 [#db8eb16d]
#ref(edo_final.jpg)
*未解決の問題点 [#a9af40f8]
-書き初めのぶれがまだ多く残っていてきれいな字とは言えない...
-書ける文字がパーツ?、パーツ?の可動範囲に縛られてしまうの...
*かかった時間 [#d8e367ad]
-ロボット本体…約30時間
-プログラムのmain以外…約2時間
-プログラムのmainを書くための試行錯誤…約2時間
-プログラムのmain…約30分
-ホームページ…約6時間
*まとめと反省 [#k800e210]
今回初めてのロボット作成ということでそれぞれのLEGOパーツ...
終了行:
#contents
*課題 [#h0b79946]
書道ロボットの製作し、7画以上の漢字を書く。詳しくは
[[課題1のページ>http://yakushi.shinshu-u.ac.jp/robotics/...
を参照。
私は涼という漢字を書くことにした。
*ロボット本体の説明 [#bd9a3611]
**ロボットの外観 [#z75277cb]
上から見た写真
#ref(edo_ue.jpg)
またこのロボットは役割ごとに下の写真のように4つに分解で...
#ref(edo_bunnkai.jpg)
?の部分で筆を上げ下げし、?の部分で横にペン先を動かし、?の...
こうすることでペン先はどの方向にも動かすことが出来るので...
それぞれのパーツについて仕組みと工夫した点を書いていく。
**?ペンを上げ下げするパーツ [#v86048ae]
?はペンを上げ下げするパーツである。
ペンを正回転させて、最下点で丁度紙にペン先がつくようにし...
また、最下点で止まるようにつっかえとして棒を突き出してい...
元々は垂直に上げ下げするようにしていたが、モーターの力と...
また、一番綺麗に文字が書けるペンを試行錯誤し、100円均一の...
#ref(edo_1.jpg)
**?横にペン先を動かすパーツ [#rcd5dbf3]
?は?を横に動かすパーツである。
このパーツではモーターを回転させることで、
下の写真の赤枠の部分が左右にスライドし、?を左右に動かす。
正回転で右に、負回転で左にスライドする
このパーツと、後に書く?のパーツについては特に文字を書く時...
#ref(edo_2.jpg)
**?縦にペン先を動かすパーツ [#k672a4db]
?は?を?ごと前後に動かすパーツである。
このパーツではモーターを回転させることで、
下の写真の赤枠の部分が左右にスライドし、?を?ごと前後に動...
正回転で前に、負回転で後ろにスライドする
このパーツも、前に書いた?のパーツ同様、特に文字を書く時大...
また、可動部の下の部分が紙のふちに引っかかりやすかったの...
#ref(edo_3.jpg)
**?コンピューター置き場兼すべり止め [#gea9bcba]
?はロボットを置く場所をしつつ、裏側に下の写真のように6個...
?はそもそも只のコンピューター置き場であったが、いざ起動し...
#ref(edo_4.jpg)
*プログラムの説明 [#e7dae3ec]
**プログラムのそれぞれの説明 [#e884f45f]
***それぞれのモーターの回転方向とペンの動く向き [#ya5cf7c2]
ペン先の動きとそれぞれのモーターは次のような関係にある。
モーターAはペンの上げ下げ、モーターBはペンの前後、モータ...
***初期位置 [#i17d280f]
書き始めの位置を一定にするために下のような、ペンを左上に...
この時同時にモーターのパワーの調整もするようにしている。
また、書いている途中で一旦初期位置にペンを持っていくこと...
sub syoki() //初期位置(左上)にペンを持って...
{
SetPower(OUT_A,1);
SetPower(OUT_B,3);
SetPower(OUT_C,3);
OnRev(OUT_A);
Wait(5);
Off(OUT_A);
OnFwd(OUT_B);
OnRev(OUT_C);
Wait(100);
Off(OUT_BC);
}
***8方向のペンの移動 [#c9a8f71a]
ペンを8方向で(45°づつ360°) 好きな時間だけ動かせるように8...
次は右下に動かすための関数である。
void migisita (int t) //ペンを右下に45度t秒動かす
{
OnFwd(OUT_C);
OnRev(OUT_B);
Wait(t);
Off(OUT_BC);
}
***文字を書いているか書いてないかの区別 [#x168e68d]
ペンで文字を書くときと書かない状態にするためにそれぞれマ...
文字を書き始めるためにまずモーターAを正回転させて、書いて...
#define kakidasi OnFwd(OUT_A);Wait(10); //...
#define kakiyame OnRev(OUT_A);Wait(5);Off(OUT_A); //...
***文字を書くプログラム [#ybc41b6a]
後で説明する方法を利用して文字を8方向のペンの動きと、ペン...
そして、それに対応して関数を並べていく。
**使用したプログラム(全て) [#x752e646]
sub syoki() //初期位置(左上)にペンを持って...
{
SetPower(OUT_A,1);
SetPower(OUT_B,3);
SetPower(OUT_C,3);
OnRev(OUT_A);
Wait(5);
Off(OUT_A);
OnFwd(OUT_B);
OnRev(OUT_C);
Wait(100);
Off(OUT_BC);
}
void migisita (int t) //ペンを右下に45度t秒動かす
{
OnFwd(OUT_C);
OnRev(OUT_B);
Wait(t);
Off(OUT_BC);
}
void hidarisita(int t) //ペンを左下に45度t秒動かす
{
OnRev(OUT_BC);
Wait(t);
Off(OUT_BC);
}
void sita(int t) //ペンを下にt秒動かす
{
OnRev(OUT_B);
Wait(t);
Off(OUT_B);
}
void ue(int t) //ペンを上にt秒動かす
{
OnFwd(OUT_B);
Wait(t);
Off(OUT_B);
}
void migi (int t) //ペンを右にt秒動かす
{
OnFwd(OUT_C);
Wait (t);
Off (OUT_C);
}
void hidari (int t) //ペンを左にt秒動かす
{
OnRev(OUT_C);
Wait (t);
Off (OUT_C);
}
void migiue (int t) //ペンを右上に45度t秒動かす
{
OnFwd(OUT_BC);
Wait(t);
Off(OUT_BC);
}
void hidariue (int t) //ペンを左上に45度t秒動かす
{
OnRev(OUT_C);
OnFwd(OUT_B);
Wait(t);
Off(OUT_BC);
}
#define kakidasi OnFwd(OUT_A);Wait(10); //...
#define kakiyame OnRev(OUT_A);Wait(5);Off(OUT_A); //...
task main()
{
syoki ();
migi (5); //さんずいの書き始めの位置にペン...
sita (10);
kakidasi; //さんずい1画目
migisita(10);
kakiyame;
hidari (10); //さんずいの2画目にペンを移動
kakidasi; //さんずい2画目
migisita(10);
kakiyame;
hidari (10); //さんずいの3画目にペンを移動
sita (20);
kakidasi; //さんずい3画目
migiue (10);
kakiyame;
syoki (); //亠の書き始めの位置にペンを移動
migi (30);
kakidasi; //亠を一気に書く
sita (10);
migi (15);
hidari (30);
kakiyame;
sita (5); //口の書き初めの位置にペンを移動
kakidasi; //口を一気に書く
sita (15);
migi (30);
ue (15);
hidari (30);
kakiyame;
migi (15); //小の書き始めの位置にペンを移動
sita (15);
kakidasi; //小1画目
sita (20);
kakiyame;
ue (15); //小の2画目の位置にペンを移動
hidari (10);
kakidasi; //小2画目
hidarisita (15);
kakiyame; //小の3画目の位置にペンを移動
migi (25);
ue (15);
kakidasi; //小3画目
migisita (15);
kakiyame;
}
*文字を書くためにした工夫 [#cd01f1db]
おおよそのロボット本体とプログラムについては説明を終えた...
**関数に入れる時間tと線の長さ [#be28d3c2]
今まで授業で扱ってきたロボットと挙動が大きく違うロボット...
task main()
{
syoki ();
kakidasi;
repeat(10)
{
sita(10);
Wait (10);
ue (10);
Wait (10);
migi (10);
Wait (10);
}
repeat (10)
{
hidari (10);
Wait (10);
migi (10);
Wait (10);
sita (10);
Wait (10);
}
}
これは関数のt=10(0.1秒)ごとに縦横に線を引くプロ...
#ref(kakerukun.jpg)
これより、一目盛り分の長さの線を引くには関数のt=10に...
**文字を書くための下書き [#i3fc0e2d]
先ほどの目盛りを使用して文字を書くことで、長さを関数の時...
#ref(kakerukun2.jpg)
太い線は紙にペンをつけて書く場所、細い矢印は紙にペンを付...
こうすることで、ペンを紙につけるタイミング、移動させる時...
**綺麗に書くための工夫 [#q9249fcc]
このロボットはペン先が円を描いて紙につくため、わずかに書...
*書道ロボットの書いた文字 [#db8eb16d]
#ref(edo_final.jpg)
*未解決の問題点 [#a9af40f8]
-書き初めのぶれがまだ多く残っていてきれいな字とは言えない...
-書ける文字がパーツ?、パーツ?の可動範囲に縛られてしまうの...
*かかった時間 [#d8e367ad]
-ロボット本体…約30時間
-プログラムのmain以外…約2時間
-プログラムのmainを書くための試行錯誤…約2時間
-プログラムのmain…約30分
-ホームページ…約6時間
*まとめと反省 [#k800e210]
今回初めてのロボット作成ということでそれぞれのLEGOパーツ...
ページ名: